feat(tcp): TCPStreamer DataSources, in-process TCPStreamService, stream multiplexing and TCPStreamJoin

Add TCPStreamer/TCPStreamerClient (TCP transport behind the UDPSServerI/UDPSClientI
seam), an optional single in-process TCPStreamService serving many streams over
worker threads, multiplexed SUBSCRIBE (comma list, stream index in fragmentIdx),
and TCPStreamJoin, which merges several streams into one sample-and-hold stream
paced by a master. StreamHub takes a comma list of streams over one connection.
Includes GTests, E2E scenarios s58-s73 and docs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Martino FerrariandClaude Opus 4.6 committed 2026-11-06 13:41:27 +01:00
1 parent 5562877c99
commit 50d85363a3
79 files changed
+12348 -138

No files matched your search

+8
View File
@@ -61,6 +61,14 @@ static const uint8 UDPS_TYPE_CONFIG = 1u; ///< Server → Client: signal con
static const uint8 UDPS_TYPE_ACK = 2u; ///< Client → Server: ack counter
static const uint8 UDPS_TYPE_CONNECT = 3u; ///< Client → Server: connect request
static const uint8 UDPS_TYPE_DISCONNECT = 4u; ///< Client → Server: disconnect
static const uint8 UDPS_TYPE_SUBSCRIBE = 5u; ///< Client → Server (TCP stream service only): payload = stream name(s), comma separated
/** TCP stream service: most streams one connection may multiplex. On such a
* connection every server frame carries the stream's position in the SUBSCRIBE
* list in the header's fragmentIdx field (totalFragments stays 1). */
static const uint32 UDPS_TCP_MAX_STREAMS = 64u;
/** TCP stream service: longest SUBSCRIBE payload (comma separated names, each <= 255). */
static const uint32 UDPS_TCP_MAX_SUBSCRIBE_PAYLOAD = 4096u;
/*---------------------------------------------------------------------------*/
/* Wire packet header (17 bytes) */