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 void HandleError(
tResult oError)
const;
69 tResult RunSubs(tTimeStamp tmTimeofActivation,
71 const void* pvUserData,
72 size_t nUserDataSize);
74 tResult RunSubs(base::flash::tNanoSeconds tmTimeofActivation,
76 const void* pvUserData,
77 size_t nUserDataSize);
80 ucom::ant::object_ptr<base::elasto::IErrorHandling::IErrorHandler> m_pErrorHandler;
83 std::unique_ptr<cTriggerItemPrioList> m_pPrioSubItems;
124template<
typename... INTERFACES>
127 protected detail::cTriggerPipeSourceBase
141 return detail::cTriggerPipeSourceBase::RegisterSubItem(pSubRun, ui32Prio,
this);
147 return detail::cTriggerPipeSourceBase::UnregisterSubItem(pSubRun,
this);
153 return detail::cTriggerPipeSourceBase::ChangePriority(pSubRun, ui32Prio);
158 return detail::cTriggerPipeSourceBase::GetSubItems(lstSubItems);
165 return detail::cTriggerPipeSourceBase::GetName(std::forward<base::ant::IString>(strName));
170 return detail::cTriggerPipeSourceBase::SetName(strName);
175 return detail::cTriggerPipeSourceBase::SetParent(oParentObject);
180 return detail::cTriggerPipeSourceBase::GetParent(poParentObject);
188class cTriggerPipeItemBase :
public cTriggerPipeSourceBase
191 static constexpr const char* DefaultTriggerPipeTypeName =
"trigger_pipe_item";
193 cTriggerPipeItemBase();
194 cTriggerPipeItemBase(
const char* strName);
195 ~cTriggerPipeItemBase()
override;
198 tResult RegisterTriggerParent(
const ant::ITriggerPipeSource* pParent);
199 tResult UnregisterTriggerParent(
const ant::ITriggerPipeSource* pParent);
203 tResult SetRunSubs(
bool bEnabled);
210 template<
typename CALLABLE>
211 void SetCallable(CALLABLE&& callable)
216 void SetManagedRunnable(
const ucom::object_ptr<ucom::IObject>& pRunnableToCall);
219 tResult Run(tTimeStamp tmTimeofActivation,
220 base::ant::IRunnable::tActivationType ui32ActivationType,
221 const void* pvUserData,
222 size_t nUserDataSize);
224 tResult Run(base::flash::tNanoSeconds tmTimeofActivation,
225 base::ant::IRunnable::tActivationType ui32ActivationType,
226 const void* pvUserData,
227 size_t nUserDataSize);
230 const std::string& ProfilingName();
231 const std::string& ProfilingExecutionName();
234 base::flash::IRunnable* m_pRunnableToCall =
nullptr;
235 ucom::object_ptr<ucom::IObject> m_pManagedRunnable =
nullptr;
237 std::string m_strProfilingName;
238 std::string m_strProfilingExecutionName;
239 bool m_bRunSubs =
true;
240 std::vector<const ant::ITriggerPipeSource*> m_oDirectTriggerParents;
256template<
typename... INTERFACES>
259 base::flash::IRunnable,
260 ant::ITriggerPipeSource,
261 ant::ITriggerPipeItem,
262 quiet::ITriggerPipeHierachy,
264 protected detail::cTriggerPipeItemBase
296 detail::cTriggerPipeItemBase::SetRunnable(oRunnable);
308 detail::cTriggerPipeItemBase::SetRunnable(oRunnable);
319 template<
typename CALLABLE>
322 detail::cTriggerPipeItemBase::SetCallable(std::forward<CALLABLE>(callable));
330 return detail::cTriggerPipeItemBase::RegisterSubItem(pSubRun, ui32Prio,
this);
335 return detail::cTriggerPipeItemBase::UnregisterSubItem(pSubRun,
this);
341 return detail::cTriggerPipeSourceBase::ChangePriority(pSubRun, ui32Prio);
346 return detail::cTriggerPipeSourceBase::GetSubItems(lstSubItems);
364 const void* pvUserData,
365 size_t nUserDataSize)
override
367 return detail::cTriggerPipeItemBase::Run(tmTimeofActivation, ui32ActivationType, pvUserData, nUserDataSize);
385 const void* pvUserData,
386 size_t nUserDataSize)
override
388 return detail::cTriggerPipeItemBase::Run(tmTimeofActivation, ui32ActivationType, pvUserData, nUserDataSize);
397 return detail::cTriggerPipeItemBase::RegisterTriggerParent(pParent);
405 return detail::cTriggerPipeItemBase::UnregisterTriggerParent(pParent);
414 return detail::cTriggerPipeItemBase::GetTriggerParents(fnCallback);
421 return detail::cTriggerPipeSourceBase::GetName(std::forward<base::ant::IString>(strName));
426 return detail::cTriggerPipeSourceBase::SetName(strName);
431 return detail::cTriggerPipeSourceBase::SetParent(oParentObject);
436 return detail::cTriggerPipeSourceBase::GetParent(poParentObject);
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:775
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:403
tResult GetTriggerParents(const ucom::nitro::ifunction< tResult(const ant::ITriggerPipeSource *)> &fnCallback) const override
Definition triggerpipe.h:411
trigger_pipe_item(const char *strName, adtf::base::ant::IRunnable &oRunnable)
Definition triggerpipe.h:277
void SetRunnable(adtf::base::flash::IRunnable &oRunnable)
Definition triggerpipe.h:306
tResult SetName(const char *strName)
Definition triggerpipe.h:424
tResult ChangePriority(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:338
tResult UnregisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) override
Definition triggerpipe.h:333
trigger_pipe_item(const char *strName)
Definition triggerpipe.h:271
tResult Run(tTimeStamp tmTimeofActivation, adtf::base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
Definition triggerpipe.h:362
tResult GetName(base::ant::IString &&strName) const
Definition triggerpipe.h:419
tResult RegisterTriggerParent(const ant::ITriggerPipeSource *pParent) override
Definition triggerpipe.h:395
tResult RegisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:327
tResult GetParent(const ucom::ant::IObject *&poParentObject) const
Definition triggerpipe.h:434
tResult SetParent(const ucom::ant::IObject *oParentObject)
Definition triggerpipe.h:429
void SetRunnable(adtf::base::ant::IRunnable &oRunnable)
Definition triggerpipe.h:288
trigger_pipe_item()=default
CTOR.
tResult GetSubItems(adtf::ucom::ant::iobject_enum< const ITriggerPipeItem > &lstSubItems) const override
Definition triggerpipe.h:344
void SetCallable(CALLABLE &&callable)
Definition triggerpipe.h:320
tResult Run(adtf::base::flash::tNanoSeconds tmTimeofActivation, adtf::base::ant::IRunnable::tActivationType ui32ActivationType, const void *pvUserData, size_t nUserDataSize) override
Definition triggerpipe.h:383
virtual ~trigger_pipe_source()=default
DTOR.
tResult SetParent(const ucom::ant::IObject *oParentObject)
Definition triggerpipe.h:173
tResult GetParent(const ucom::ant::IObject *&poParentObject) const
Definition triggerpipe.h:178
tResult RegisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:138
tResult UnregisterSubItem(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun) override
Definition triggerpipe.h:145
tResult GetName(base::ant::IString &&strName) const
Definition triggerpipe.h:163
tResult SetName(const char *strName)
Definition triggerpipe.h:168
trigger_pipe_source()=default
CTOR.
tResult GetSubItems(adtf::ucom::ant::iobject_enum< const ITriggerPipeItem > &lstSubItems) const override
Definition triggerpipe.h:156
tResult ChangePriority(const adtf::ucom::ant::iobject_ptr< ITriggerPipeItem > &pSubRun, ITriggerPipeItem::tPriority ui32Prio) override
Definition triggerpipe.h:150
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:135
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:160
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