Releases: StormByte-Suite/StormByte-Network
Release list
Version 1.1.0
[Summary]
StormByte Network is the C++26 networking layer of the StormByte suite.
It depends on StormByte Base 1.1.0, StormByte Logger 1.1.0, and StormByte Buffer 1.1.0.
Inherit Client or Server, define packets, and attach Buffer pipelines.
IPv4 and IPv6, framed request/response, POSIX and Winsock stay behind the public API.
Changed
- Updated dependencies to StormByte Base 1.1.0, StormByte Logger 1.1.0, and StormByte Buffer 1.1.0.
- Server and socket concurrency
- Reduced non-blocking socket wait overhead by waiting for readability/writability only when the system call reports backpressure.
- Added private incremental server-side frame parsing while preserving the existing client/server API and worker behavior.
- Added a portable accept-loop wakeup channel so server shutdown does not tear down the listener to interrupt a wait.
- Replaced per-client workers with one event-loop thread for session parsing, packet processing, and synchronous replies.
- Added a bounded private packet worker pool with per-session in-flight control and EventLoop completions.
- Routed worker-originated client/server disconnect requests through EventLoop commands without worker self-joins.
- Added bounded per-session output streaming with non-blocking writes and POLLOUT/select-driven draining.
- Integration and lifecycle coverage
- Expanded client/server integration coverage with empty-payload, text-echo, and numeric-sum commands.
- Added disconnect/reconnect, slow-handler, concurrent-client, pending-task shutdown, and late-completion coverage.
- Documented client/server lifecycle invariants and the Windows
FD_SETSIZEboundary.
Fixed
-
Avoided passing unsupported
/GLand/LTCGflags to clang-cl Release builds by using CMake's interprocedural optimization setting. -
Fixed macOS polling portability when
POLLRDHUPis unavailable. -
Fixed the Windows test target's Winsock linkage using a consistent CMake link signature.
-
Guarded polymorphic large-data packet handling against unexpected packet types.
Version 1.0.0
[Summary]
StormByte Network is the C++26 networking layer of the StormByte suite.
Inherit Client or Server, define packets, and attach Buffer pipelines.
IPv4 and IPv6, framed request/response, POSIX and Winsock stay behind the public API.
Initial public release of StormByte-Network.
Added
- Endpoint abstraction (
Client/Server) for inheritance-oriented application protocols- Pluggable
DeserializePacketFunctionfor domain packet construction - Overridable
InputPipeline()/OutputPipeline()(Buffer::Pipeline) for compression, encryption, etc. - Request/response via framed
Transport::Packet(Send/Reply)
- Pluggable
- Client
- Connect over IPv4/IPv6 (
Connection::Protocol) - Status query and clean disconnect
- Connect over IPv4/IPv6 (
- Server
- Listen/accept loop on a dedicated thread
- Per-client worker threads and UUID-keyed client map
- Pure virtual
ProcessClientPacket()for application logic - Safe shutdown (stop accept, join workers, disconnect peers)
- Transport layer
Packetbase: opcode +DoSerialize()payload hookPROCESS_THRESHOLDto optionally pipeline payloadsFrameon-wire layout: opcode, payload size, payload- Pipeline processing on frame input/output when the threshold is met
- Sockets
- Cross-platform TCP client/server (POSIX + Windows Winsock)
- Non-blocking I/O, configurable SO_SNDBUF/SO_RCVBUF, TCP_NODELAY
- Chunked send/receive with timeouts and exact-size
ReceiveInto WaitForDatavia epoll (Linux), poll (other UNIX), WSA events (Windows)- Peer shutdown detection, peek, and lightweight ping
Reader/Writeradapters implementingBuffer::ExternalReader/ExternalWriter
- Connection helpers
- Singleton
Handler(WSAStartup/cleanup, last-error helpers) Infohostname resolution and sockaddr metadata- Connection status and read/write result enums with string helpers
- Singleton
- Exceptions:
ConnectionError,ConnectionClosed,PacketError,FrameError - CMake build, tests, LGPL-3.0-or-later
Notes
ClientandServerare designed to be subclassed, not used as generic drop-in types without derivation.- Public API surface is stable for the 1.x series; private socket/connection types remain implementation details.