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:
1 parent
5562877c99
commit
50d85363a3
79 files changed
+12348
-138
No files matched your search
@@ -52,7 +52,8 @@ enum {
|
||||
UDPS_PKT_CONFIG = 1, /**< Server -> client: signal metadata. */
|
||||
UDPS_PKT_ACK = 2, /**< Client -> server: keepalive. */
|
||||
UDPS_PKT_CONNECT = 3, /**< Client -> server: open a session. */
|
||||
UDPS_PKT_DISCONNECT = 4 /**< Either direction: close a session. */
|
||||
UDPS_PKT_DISCONNECT = 4, /**< Either direction: close a session. */
|
||||
UDPS_PKT_SUBSCRIBE = 5 /**< Client to TCP stream service only: payload = stream name(s), comma separated; server frames carry the stream index in fragmentIdx. */
|
||||
};
|
||||
|
||||
/** Sample type codes (udps_signal_t::type_code). */
|
||||
|
||||
@@ -18,6 +18,7 @@ const (
|
||||
PktACK uint8 = 2
|
||||
PktConnect uint8 = 3
|
||||
PktDisconnect uint8 = 4
|
||||
PktSubscribe uint8 = 5 // TCP stream service only: payload = stream name(s), comma separated; server frames carry the stream index in fragmentIdx
|
||||
|
||||
HeaderSize = 17
|
||||
SigDescSize = 136
|
||||
|
||||
@@ -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) */
|
||||
|
||||
Reference in new issue
Block a user