27#include <unordered_map>
35namespace private_implementations
37class cStreamingRequestsProxy;
92 size_t szQueueSize)
noexcept;
105 size_t szQueueSize)
noexcept;
154 using tSinkList = std::vector<tSink>;
157 using tDirectChildren = std::vector<tDirectChild>;
162 void UpdateStreamTypeHandler() noexcept;
163 void HandleNewStreamType(const
ucom::
ant::iobject_ptr<const
IStreamType>& pStreamType) noexcept override;
165 void Push(const
ucom::
ant::iobject_ptr<const
ISample>& pSample) noexcept;
171 bool ResolveSubstreamFilter(const
ucom::
ant::iobject_ptr<const
IStreamType>& pStreamType,
173 uint32_t& nSubstreamId) noexcept;
176 void ReportUnresolvedSubstreamFilter() noexcept;
181 void HandleSubItemTriggerError(
tResult oError) noexcept;
185 bool HasWriter() const noexcept;
186 bool IsAttached() const noexcept;
190 tDirectChildren::iterator FindDirectChild(const
cSampleStreamBase* pChild) noexcept;
191 tDirectChildren::iterator FindTriggerChild(const
ITriggerPipeItem* pItem) noexcept;
192 tDirectChildren::iterator AcquireDirectChild(
cSampleStreamBase* pChild) noexcept;
194 void ApplyPolicy(tSink& sSink) noexcept;
195 static const
void* GetSinkKey(const tSink& sSink) noexcept;
196 bool HasDirectReader() const noexcept;
197 void CollectStatistics(cStatistics& oRoot, const tSink& sFromParent,
bool bTriggerReachable) noexcept;
199 void ApplySubstreamFilter(tItemFilter& sFilter) noexcept;
201 const tSinkList& RebuildSinks(
bool bRoot) noexcept;
203 void NotifyTopologyChanged() noexcept;
204 void FlushInitialTypes() noexcept;
205 void UnregisterPushSink(cPushStream* pSink) noexcept;
209 std::
string GetFullName() const noexcept;
213 cTriggerPipeItemBase& m_oPipeItem;
216 bool m_bForwardAllTrigger = true;
217 bool m_bSamplesBlocked = false;
218 std::
string m_strSubstreamFilter;
223 std::optional<uint32_t> m_nSubstreamIdFilter;
226 tResult m_nUnresolvedError = ERR_NOERROR;
232 private_implementations::cStreamingRequestsProxy* m_pRequestsProxy =
nullptr;
238 bool m_bInitialTypesPending = false;
242 mutable std::mutex m_oTypeMutex;
248 std::mutex m_oSinkMutex;
249 tDirectChildren m_oDirectChildren;
251 std::unique_ptr<cStatistics> m_pStatistics;
269template<typename... INTERFACES>
298 base_type::SetName(strName);
342 size_t szQueueSize)
noexcept override
357 size_t szQueueSize)
noexcept override
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:775
#define RETURN_ERROR(code)
Return specific error code, which requires the calling function's return type to be tResult.
Definition result.h:42
tMode
Definition samplestreamaccess_intf.h:26
Definition samplestream_intf.h:41
Definition interface_binding_proxy_intf.h:22
Definition named_graph_object_intf.h:25
Definition sampleoutstream_intf.h:29
Definition samplestream_intf.h:30
Definition sample_intf.h:34
Defines access methods for the interface of a Stream Type.
Definition streamtype_intf.h:96
Definition triggerpipe_intf.h:103
tPriority
Definition triggerpipe_intf.h:39
Definition samplestream.h:430
ADTF_CLASS_ID_NAME(cSampleStream, "sample_stream.streaming.adtf.cid", "Sample Stream")
Implements adtf::ucom::IClassInfo.
tResult Open(ucom::ant::iobject_ptr< ISampleOutStream > &pOutStream, ISampleStreamAccess::tMode ui32Mode, size_t szQueueSize) noexcept
void EnableSampleSizeStatistics(bool bEnable) noexcept
tResult RegisterSubItem(const ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) noexcept
tResult UnregisterSubItem(const ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) noexcept
tResult AttachRouting(const ucom::ant::iobject_ptr< ISampleStream > &pSampleStreamTo) noexcept
tResult GetInternalBindingProxy(ucom::ant::iobject_ptr< IBindingProxy > &pBindingProxy) noexcept
cSampleStreamBase(cTriggerPipeItemBase &oPipeItem, ISampleStream &oSelf) noexcept
tResult SetStreamError(const tResult &oError) noexcept
void ResetStatistics() noexcept
tResult GetType(ucom::ant::iobject_ptr< const IStreamType > &pStreamType) const noexcept
void SetForwardAllTriggers(bool bForwardAll) noexcept
tResult Open(ucom::ant::iobject_ptr< ISampleInStream > &pInStream, ISampleStream::IPushReadEventSink *&pPushEventSink, ISampleStreamAccess::tMode ui32Mode, size_t szQueueSize) noexcept
tResult DetachRouting(const ucom::ant::iobject_ptr< ISampleStream > &pSampleStreamTo) noexcept
wolverine::ISampleStreamStatistics::tSampleStreamStatistic GetStatistics() noexcept
void SetSubStreamFilter(const char *strSubStream) noexcept
bool IsSampleStreamingBlocked() const noexcept
void BlockSampleStreaming(bool bBlock) noexcept
Definition streamingrequests_intf.h:98
Definition streamingrequests_intf.h:26
Definition streamingrequests_intf.h:45
sample_stream(const char *strName)
Definition samplestream.h:296
tResult ChangePriority(const ucom::ant::iobject_ptr< ITriggerPipeItem > &, ITriggerPipeItem::tPriority) noexcept override
Definition samplestream.h:379
tResult AttachRouting(const ucom::ant::iobject_ptr< ISampleStream > &pSampleStreamTo) noexcept override
Definition samplestream.h:322
tResult GetType(ucom::ant::iobject_ptr< const IStreamType > &pStreamType) const noexcept override
Definition samplestream.h:302
void BlockSampleStreaming(bool bBlock) noexcept override
Definition samplestream.h:392
tResult Open(const char *strName, ucom::ant::iobject_ptr< ISampleInStream > &pInStream, const ucom::ant::iobject_ptr< const IStreamType > &pInitialAcceptedStreamType, ISampleStream::IPushReadEventSink *&pPushEventSink, ISampleStreamAccess::tMode ui32Mode, size_t szQueueSize) noexcept override
Definition samplestream.h:337
void ResetStatistics() noexcept override
Definition samplestream.h:420
tResult DetachRouting(const ucom::ant::iobject_ptr< ISampleStream > &pSampleStreamTo) noexcept override
Definition samplestream.h:327
bool IsSampleStreamingBlocked() const noexcept override
Definition samplestream.h:397
tResult Open(const char *strName, ucom::ant::iobject_ptr< ISampleOutStream > &pOutStream, ISampleStreamAccess::tMode ui32Mode, size_t szQueueSize) noexcept override
Definition samplestream.h:354
tResult RegisterSubItem(const ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) noexcept override
Definition samplestream.h:363
tResult GetInternalBindingProxy(ucom::ant::iobject_ptr< IBindingProxy > &pBindingProxy) noexcept override
Definition samplestream.h:386
tResult SetStreamError(const tResult &oError) noexcept override
Definition samplestream.h:317
tTimeStamp GetTime() const noexcept override
Definition samplestream.h:312
void EnableSampleSizeStatistics(bool bEnable) noexcept override
Definition samplestream.h:414
tResult UnregisterSubItem(const ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) noexcept override
Definition samplestream.h:369
sample_stream()
Creates a sample stream without a name.
Definition samplestream.h:288
wolverine::ISampleStreamStatistics::tSampleStreamStatistic GetStatistics() noexcept override
Definition samplestream.h:408
Definition triggerpipe.h:265
Definition samplestream_intf.h:155
Samplestream statistics Interface. This interface describes statistical information of an ISampleStre...
Definition samplestream_statistics_intf.h:24
adtf::services::wolverine::ISampleStreamTracer::tTraceData tSampleStreamStatistic
structure containing the current samplestream statistics for samplestream input and output
Definition samplestream_statistics_intf.h:34
Safely retrieve a valid object_ptr<> instance to *this when all we have is *this.
Definition object_ptr_utilities.h:40
Base object pointer to realize binary compatible reference counting in interface methods.
Definition object_ptr_intf.h:112
Namespace for all functionality of the ADTF Streaming SDK provided since v3.0.
Definition bindingproxyoutport.h:16
Namespace for all functionality of the ADTF Streaming SDK provided since v3.7.
Definition filtergraphport.h:580
Namespace for all functionality of the ADTF Streaming SDK provided since v3.21.
Definition request_forwarding.h:17
Namespace for all functionality of the ADTF Streaming SDK provided since v3.22.
Definition samplestream_statistics_intf.h:17
Namespace for the ADTF Streaming SDK.
Definition bindingproxyinport.h:14
Namespace for the ADTF uCOM SDK.
Definition adtf_system.h:324
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtf_client_connector.h:14