You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/lib_comparison.md
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -15,9 +15,9 @@ The secondary criteria includes:
15
15
- Highly scalable
16
16
- Bi-directional data flow
17
17
18
-
## Asio and C++ Networking TS
18
+
## Asio and C++ Networking Standardization
19
19
20
-
Asio provides the foundation and underlying asynchronous model for Chops Net IP. The C++ Networking TS is still in development, awaiting standardization and modularization of core components such as executors. Chops Net IP provides usage and abstraction advantages as outlined in the overview documentation.
20
+
Asio provides the foundation and underlying asynchronous model for Chops Net IP. C++ standardization efforts for networking have been ongoing for years (over a decade), with a major part of the effort working on `std::execution` (which covers many areas besides networking). If a C++ networking standard becomes official, Chops Net IP and Asio will likely change accordingly.
Copy file name to clipboardExpand all lines: doc/overview.md
+4-5Lines changed: 4 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -60,7 +60,7 @@ Even though an implicit state transition table exists within the Chops Net IP li
60
60
61
61
Pro tip - Chops Net IP follows the implicit state model of the Asio library (and similar libraries) where state transitions are implemented through chaining function objects on asynchronous operations. Developers familiar with implicit or explicit state transition models will be familiar with the application model defined for Chops Net IP. Chops Net IP insulates the application from the intricacies of the Asio library and simplifies the state transition details.
62
62
63
-

63
+
[Click for image of Chops Net IP objects and states](object_states_diagram.png)
64
64
65
65
## Constraints
66
66
@@ -132,9 +132,9 @@ Future versions of the library may have more move semantics and less reference c
132
132
133
133
Most of the Chops Net IP public classes (`net_entity`, `basic_io_interface`, `basic_io_output`) use `std::weak_ptr` references to the internal reference counted objects. This means that application code which ignores state changes (e.g. a TCP connection that has ended) will have errors returned by the Chops Net IP library when trying to access a non-existent object (e.g. trying to send data through a TCP connection that has gone away). This is preferred to "dangling pointers" that result in process crashes or requiring the application to continually query the Chops Net IP library for state information.
134
134
135
-

135
+
[Click for image of Chops Net IP Tcp Acceptor internal](tcp_acceptor_internal_diagram.png)
136
136
137
-

137
+
[Click for image of Chops Net IP Tcp Connector and UDP internal](tcp_connector_udp_internal_diagram.png)
138
138
139
139
Where to provide the customization points in the API is one of the most crucial design choices. Using template parameters for function objects and passing them through call chains is preferred to storing the function object in a `std::function`. In general, performance critical paths, primarily reading and writing data, always use function objects passed through as template parameters, while less performance critical paths may use a `std::function`.
140
140
@@ -147,10 +147,9 @@ Many of the public methods that call into internal handlers use a `std::future`
147
147
## Future Directions
148
148
149
149
- Strand design and support will be considered and likely implemented, allowing thread pools to be used for a given `net_ip` instance, instead of limiting it to a single thread.
150
-
- Older compiler (along with older C++ standard) support is likely to be implemented, depending on availability and collaboration support.
150
+
- Older compiler (along with older C++ standard) support may be implemented, depending on availability and collaboration support.
151
151
- The outgoing queue container is likely to become a template parameter. This would allow circular buffers (ring spans) or other data structures to be used instead of the default `std::queue` (which is instantiated to use a `std::deque`).
152
152
- The reference counted outgoing buffer type is likely to become a template parameter, allowing applications to use a different reference counting scheme, or a wrapper over some form of static memory (the requirement will be that the memory is valid while the write is in progress). Alternatively, a generic copy and move, versus reference counting, may be supported in future versions.
153
-
- Containers used internally in Chops Net IP (other than the outgoing queue) may also be templatized. These include the container used in the TCP acceptor for TCP connection objects, and the container used in the `net_ip` object that holds all of the network entities.
154
153
- SSL or TLS support may be added, depending on collaborators with expertise being available.
155
154
- Additional protocols may be added, but would be in a separate library (Bluetooth, serial I/O, MQTT, etc). Chops Net IP focuses on TCP, UDP unicast, and UDP multicast support. If a reliable UDP multicast protocol is popular enough, support may be added.
Copy file name to clipboardExpand all lines: doc/release.md
+2-3Lines changed: 2 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,11 @@
1
1
# Chops Net IP Release Status
2
2
3
-
## Release 1.0
3
+
## Release 1.x
4
4
5
-
Release 1.0 is under development, expected in the first part of 2020. The functionality is already well tested under g++ and clang++ on Linux, MacOS, and Raspbian, but needs additional testing on other compilers and platforms including VC++ on Windows.
5
+
(Fill in details.)
6
6
7
7
### Next Steps, ToDo's, Problems, and Constraints:
8
8
9
-
- The CMake files (CMakeLists.txts, etc) are working but enhancements and improvements are needed. CMake is relatively new for the Connective C++ team and enhancement requests are welcome.
10
9
- Code coverage tools have not been used on the codebase.
11
10
- The Doxygen annotation is mostly complete, but additional tutorial content is needed.
0 commit comments