Files
Martino FerrariandClaude Opus 4.6 50d85363a3 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>
2026-11-06 13:41:27 +01:00

41 lines
1.3 KiB
C++

#ifndef TCPS_STREAM_TAP_I_H_
#define TCPS_STREAM_TAP_I_H_
/**
* @file TCPSStreamTapI.h
* @brief Hooks used by TCPStreamJoin to follow the streams of a TCPStreamService.
*
* TCPSStreamTapI observes the CONFIG / DATA payloads a stream publishes (on the
* producer's thread, after the frame went to the subscribers). TCPSStreamObserverI
* observes streams registering with / leaving a service.
*/
#include "CompilerTypes.h"
namespace MARTe {
class TCPSServiceStream;
class TCPSStreamTapI {
public:
virtual ~TCPSStreamTapI() {}
/** A CONFIG payload was published (or the cached one is replayed on AddTap). */
virtual void OnTapConfig(TCPSServiceStream *source, const uint8 *payload, uint32 payloadSize) = 0;
/** A DATA payload was published. */
virtual void OnTapData(TCPSServiceStream *source, uint32 counter, const uint8 *payload,
uint32 payloadSize) = 0;
};
class TCPSStreamObserverI {
public:
virtual ~TCPSStreamObserverI() {}
/** @p stream just registered. May call back into the service. */
virtual void OnStreamRegistered(TCPSServiceStream *stream) = 0;
/** @p stream is leaving (it is still valid during the call). */
virtual void OnStreamUnregistered(TCPSServiceStream *stream) = 0;
};
} // namespace MARTe
#endif // TCPS_STREAM_TAP_I_H_