24class cTriggerItemPrioList;
26class cTriggerPipeSourceBase :
protected flash::cNamedGraphObject
29 static constexpr const char* DefaultTriggerPipeTypeName =
"trigger_pipe_source";
33 cTriggerPipeSourceBase();
34 cTriggerPipeSourceBase(
bool bDefault,
const char* strName);
36 virtual ~cTriggerPipeSourceBase();
39 cTriggerPipeSourceBase(
const cTriggerPipeSourceBase&) =
delete;
41 cTriggerPipeSourceBase& operator=(
const cTriggerPipeSourceBase&) =
delete;
43 cTriggerPipeSourceBase(cTriggerPipeSourceBase&&) =
delete;
45 cTriggerPipeSourceBase& operator=(cTriggerPipeSourceBase&&) =
delete;
48 tResult SetName(
const char* strName);
49 tResult SetParent(
const ucom::ant::IObject* pParentObject);
50 tResult GetName(base::ant::IString&& strName)
const;
51 tResult GetParent(
const ucom::ant::IObject*& poParentObject)
const;
54 tResult RegisterSubItem(
const adtf::ucom::ant::iobject_ptr<ITriggerPipeItem>& pSubRun,
55 ITriggerPipeItem::tPriority ui32Prio,
56 ITriggerPipeSource* pParent);
57 tResult UnregisterSubItem(
const adtf::ucom::ant::iobject_ptr<ITriggerPipeItem>& pSubRun,
58 ant::ITriggerPipeSource* pParent);
59 tResult ChangePriority(
const adtf::ucom::ant::iobject_ptr<ITriggerPipeItem>& pSubRun,
60 ITriggerPipeItem::tPriority ui32Prio);
61 tResult GetSubItems(adtf::ucom::ant::iobject_enum<const ITriggerPipeItem>& lstSubItems)
const;
65 tResult RunSubs(tTimeStamp tmTimeofActivation,
67 const void* pvUserData,
68 size_t nUserDataSize);
70 tResult RunSubs(base::flash::tNanoSeconds tmTimeofActivation,
72 const void* pvUserData,
73 size_t nUserDataSize);
76 ucom::ant::object_ptr<base::elasto::IErrorHandling::IErrorHandler> m_pErrorHandler;
79 std::unique_ptr<cTriggerItemPrioList> m_pPrioSubItems;
120template<
typename... INTERFACES>
123 protected detail::cTriggerPipeSourceBase
137 return detail::cTriggerPipeSourceBase::RegisterSubItem(pSubRun, ui32Prio,
this);
143 return detail::cTriggerPipeSourceBase::UnregisterSubItem(pSubRun,
this);
149 return detail::cTriggerPipeSourceBase::ChangePriority(pSubRun, ui32Prio);
154 return detail::cTriggerPipeSourceBase::GetSubItems(lstSubItems);
161 return detail::cTriggerPipeSourceBase::GetName(std::forward<base::ant::IString>(strName));
166 return detail::cTriggerPipeSourceBase::SetName(strName);
171 return detail::cTriggerPipeSourceBase::SetParent(oParentObject);
176 return detail::cTriggerPipeSourceBase::GetParent(poParentObject);
184class cTriggerPipeItemBase :
public cTriggerPipeSourceBase
187 static constexpr const char* DefaultTriggerPipeTypeName =
"trigger_pipe_item";
189 cTriggerPipeItemBase();
190 cTriggerPipeItemBase(
const char* strName);
191 ~cTriggerPipeItemBase()
override;
194 tResult RegisterTriggerParent(
const ant::ITriggerPipeSource* pParent);
195 tResult UnregisterTriggerParent(
const ant::ITriggerPipeSource* pParent);
199 tResult SetRunSubsConditionally(
bool bConditionally);
200 bool IsRunSubsConditionally()
const;
201 void EnableSubRunnables();
208 template<
typename CALLABLE>
209 void SetCallable(CALLABLE&& callable)
214 void SetManagedRunnable(
const ucom::object_ptr<ucom::IObject>& pRunnableToCall);
217 tResult Run(tTimeStamp tmTimeofActivation,
218 base::ant::IRunnable::tActivationType ui32ActivationType,
219 const void* pvUserData,
220 size_t nUserDataSize);
222 tResult Run(base::flash::tNanoSeconds tmTimeofActivation,
223 base::ant::IRunnable::tActivationType ui32ActivationType,
224 const void* pvUserData,
225 size_t nUserDataSize);
231 base::flash::IRunnable* m_pRunnableToCall =
nullptr;
232 ucom::object_ptr<ucom::IObject> m_pManagedRunnable =
nullptr;
234 std::string m_strProfilingName;
235 std::string m_strProfilingExecutionName;
236 bool m_bRunSubsConditionally =
false;
237 std::atomic_bool m_bRunSubs = {
true};
238 std::vector<const ant::ITriggerPipeSource*> m_oDirectTriggerParents;
254template<
typename... INTERFACES>
257 base::flash::IRunnable,
258 ant::ITriggerPipeSource,
259 ant::ITriggerPipeItem,
260 quiet::ITriggerPipeHierachy,
262 protected detail::cTriggerPipeItemBase
294 detail::cTriggerPipeItemBase::SetRunnable(oRunnable);
306 detail::cTriggerPipeItemBase::SetRunnable(oRunnable);
317 template<
typename CALLABLE>
320 detail::cTriggerPipeItemBase::SetCallable(std::forward<CALLABLE>(callable));
328 return detail::cTriggerPipeItemBase::RegisterSubItem(pSubRun, ui32Prio,
this);
333 return detail::cTriggerPipeItemBase::UnregisterSubItem(pSubRun,
this);
339 return detail::cTriggerPipeSourceBase::ChangePriority(pSubRun, ui32Prio);
344 return detail::cTriggerPipeSourceBase::GetSubItems(lstSubItems);
362 const void* pvUserData,
363 size_t nUserDataSize)
override
365 return detail::cTriggerPipeItemBase::Run(tmTimeofActivation, ui32ActivationType, pvUserData, nUserDataSize);
383 const void* pvUserData,
384 size_t nUserDataSize)
override
386 return detail::cTriggerPipeItemBase::Run(tmTimeofActivation, ui32ActivationType, pvUserData, nUserDataSize);
395 return detail::cTriggerPipeItemBase::RegisterTriggerParent(pParent);
403 return detail::cTriggerPipeItemBase::UnregisterTriggerParent(pParent);
412 return detail::cTriggerPipeItemBase::GetTriggerParents(fnCallback);
419 return detail::cTriggerPipeSourceBase::GetName(std::forward<base::ant::IString>(strName));
424 return detail::cTriggerPipeSourceBase::SetName(strName);
429 return detail::cTriggerPipeSourceBase::SetParent(oParentObject);
434 return detail::cTriggerPipeSourceBase::GetParent(poParentObject);
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:736
Definition runnable_intf.h:27
tActivationType
Definition runnable_intf.h:45
Definition string_intf.h:29
Definition runnable_intf.h:112
Definition triggerpipe_intf.h:26
tPriority
Definition triggerpipe_intf.h:39
tResult UnregisterTriggerParent(const ant::ITriggerPipeSource *pParent) override
Definition triggerpipe.h:401
tResult GetTriggerParents(const ucom::nitro::ifunction< tResult(const ant::ITriggerPipeSource *)> &fnCallback) const override
Definition triggerpipe.h:409
trigger_pipe_item(const char *strName, adtf::base::ant::IRunnable &oRunnable)
Definition triggerpipe.h:275
void SetRunnable(adtf::base::flash::IRunnable &oRunnable)
Definition triggerpipe.h:304
tResult SetName(const char *strName)
Definition triggerpipe.h:422
tResult ChangePriority(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:336
tResult UnregisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) override
Definition triggerpipe.h:331
trigger_pipe_item(const char *strName)
Definition triggerpipe.h:269
tResult Run(tTimeStamp tmTimeofActivation, adtf::base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
Definition triggerpipe.h:360
tResult GetName(base::ant::IString &&strName) const
Definition triggerpipe.h:417
tResult RegisterTriggerParent(const ant::ITriggerPipeSource *pParent) override
Definition triggerpipe.h:393
tResult RegisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:325
tResult GetParent(const ucom::ant::IObject *&poParentObject) const
Definition triggerpipe.h:432
tResult SetParent(const ucom::ant::IObject *oParentObject)
Definition triggerpipe.h:427
void SetRunnable(adtf::base::ant::IRunnable &oRunnable)
Definition triggerpipe.h:286
trigger_pipe_item()=default
CTOR.
tResult GetSubItems(adtf::ucom::ant::iobject_enum< const ITriggerPipeItem > &lstSubItems) const override
Definition triggerpipe.h:342
void SetCallable(CALLABLE &&callable)
Definition triggerpipe.h:318
tResult Run(adtf::base::flash::tNanoSeconds tmTimeofActivation, adtf::base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
Definition triggerpipe.h:381
virtual ~trigger_pipe_source()=default
DTOR.
tResult SetParent(const ucom::ant::IObject *oParentObject)
Definition triggerpipe.h:169
tResult GetParent(const ucom::ant::IObject *&poParentObject) const
Definition triggerpipe.h:174
tResult RegisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:134
tResult UnregisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) override
Definition triggerpipe.h:141
tResult GetName(base::ant::IString &&strName) const
Definition triggerpipe.h:159
tResult SetName(const char *strName)
Definition triggerpipe.h:164
trigger_pipe_source()=default
CTOR.
tResult GetSubItems(adtf::ucom::ant::iobject_enum< const ITriggerPipeItem > &lstSubItems) const override
Definition triggerpipe.h:152
tResult ChangePriority(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:146
Definition object_intf.h:33
Definition object_list.h:22
Base object pointer to realize binary compatible reference counting in interface methods.
Definition object_ptr_intf.h:112
Definition function_ptr.h:28
Namespace for the ADTF Streaming SDK.
Definition bindingproxyinport.h:14
tResult check_loop_call_in_trigger_pipe(const adtf::streaming::ant::ITriggerPipeSource &pItem)
tResult create_trigger_pipe(const char *strNameOfPipe, adtf::ucom::ant::iobject_ptr< ITriggerPipe > &pTriggerPipe, adtf::ucom::ant::object_list< ITriggerPipeItem > lstNextItems)
object_enum< T, INTERFACE_TYPE, std::list > object_list
Definition object_list.h:402
object_ptr< T > ucom_object_ptr_cast(object_ptr< T > oCasted)
Alias always bringing the latest version of ant::ucom_object_ptr_cast() into scope.
Definition object_ptr_utilities.h:104
object_ptr< Implementation > make_object_ptr(Args &&... args)
Alias always bringing the latest version of ant::make_object_ptr() into scope.
Definition object_ptr_utilities.h:129
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtf_client_connector.h:14
A timestamp with nanosecond precision.
Definition chrono.h:23