Skip to content

Releases: StormByte-Suite/StormByte-Network

Version 1.1.0

Choose a tag to compare

@StormBytePP StormBytePP released this 13 Sep 19:52

[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_SETSIZE boundary.

Fixed

  • Avoided passing unsupported /GL and /LTCG flags to clang-cl Release builds by using CMake's interprocedural optimization setting.

  • Fixed macOS polling portability when POLLRDHUP is 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

Choose a tag to compare

@StormBytePP StormBytePP released this 04 Sep 23:07

[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 DeserializePacketFunction for domain packet construction
    • Overridable InputPipeline() / OutputPipeline() (Buffer::Pipeline) for compression, encryption, etc.
    • Request/response via framed Transport::Packet (Send / Reply)
  • Client
    • Connect over IPv4/IPv6 (Connection::Protocol)
    • Status query and clean disconnect
  • 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
    • Packet base: opcode + DoSerialize() payload hook
    • PROCESS_THRESHOLD to optionally pipeline payloads
    • Frame on-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
    • WaitForData via epoll (Linux), poll (other UNIX), WSA events (Windows)
    • Peer shutdown detection, peek, and lightweight ping
    • Reader / Writer adapters implementing Buffer::ExternalReader / ExternalWriter
  • Connection helpers
    • Singleton Handler (WSAStartup/cleanup, last-error helpers)
    • Info hostname resolution and sockaddr metadata
    • Connection status and read/write result enums with string helpers
  • Exceptions: ConnectionError, ConnectionClosed, PacketError, FrameError
  • CMake build, tests, LGPL-3.0-or-later

Notes

  • Client and Server are 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.