26template<
typename TriggerFunctionImpl>
30 triggered_filter(
const triggered_filter&) =
delete;
31 triggered_filter(triggered_filter&&) =
delete;
32 triggered_filter& operator=(
const triggered_filter&) =
delete;
33 triggered_filter& operator=(triggered_filter&&) =
delete;
35 TriggerFunctionImpl m_oTriggerFunc;
40 adtf_util::cString strTriggerFuncName;
42 if (strTriggerFuncName.IsEmpty())
44 strTriggerFuncName =
"trigger";
45 m_oTriggerFunc.SetName(strTriggerFuncName);
47 m_oTriggerFunc.SetFilter(*
this);
55 if (eStage == tInitStage::StageFirst)
57 adtf_util::cString strTriggerFuncName;
59 RETURN_IF_FAILED(RegisterRunner(strTriggerFuncName, m_oTriggerFunc));
60 RETURN_IF_FAILED(m_oTriggerFunc.ConnectReadersAndWriters(*
this));
61 RETURN_IF_FAILED(m_oTriggerFunc.Configure());
62 RETURN_IF_FAILED(CreateDefaultTrigger(strTriggerFuncName));
69 RETURN_IF_FAILED(cFilter::SetParent(poParentObject));
74 virtual tResult CreateDefaultTrigger(
const char* strTriggerFuncName)
92 virtual adtf::util::cString GetTriggerFunctionName() = 0;
102template<
typename TriggerFunctionImpl>
106 typedef filter_with_trigger_function<TriggerFunctionImpl> filter_type;
109 filter_with_trigger_function(
const filter_with_trigger_function&) =
delete;
110 filter_with_trigger_function(filter_with_trigger_function&&) =
delete;
111 filter_with_trigger_function& operator=(
const filter_with_trigger_function&) =
delete;
112 filter_with_trigger_function& operator=(filter_with_trigger_function&&) =
delete;
115 std::unique_ptr<TriggerFunctionImpl> m_pTriggerFunc;
116 tResult m_oTriggerFunctionCreationResult;
120 m_fnCreateTrigger(fnCreateTrigger),
121 m_oTriggerFunctionCreationResult(CreateRunner())
129 "Unable to construct trigger function");
131 if (GetTriggerFunctionName().IsEmpty())
133 m_pTriggerFunc->SetName(
"trigger");
136 return m_pTriggerFunc->SetFilter(*
this);
145 RETURN_IF_FAILED(m_oTriggerFunctionCreationResult);
146 RETURN_IF_FAILED(
RegisterRunner(GetTriggerFunctionName(), *m_pTriggerFunc.get()));
147 RETURN_IF_FAILED(m_pTriggerFunc->Configure());
148 RETURN_IF_FAILED(m_pTriggerFunc->ConnectReadersAndWriters(*
this));
149 RETURN_IF_FAILED(m_fnCreateTrigger(*
this));
159 m_pTriggerFunc.reset();
165 adtf::util::cString GetTriggerFunctionName()
override
167 adtf_util::cString strTriggerFuncName;
172 return strTriggerFuncName;
181template<
typename TriggerFunctionImpl,
typename FilterClass = devil::cFilterWithTriggerFunction>
182class filter_with_trigger_function:
public FilterClass
185 typedef filter_with_trigger_function<TriggerFunctionImpl, FilterClass> filter_type;
188 filter_with_trigger_function(
const filter_with_trigger_function&) =
delete;
189 filter_with_trigger_function(filter_with_trigger_function&&) =
delete;
190 filter_with_trigger_function& operator=(
const filter_with_trigger_function&) =
delete;
191 filter_with_trigger_function& operator=(filter_with_trigger_function&&) =
delete;
195 std::function<
tResult(FilterClass&)> m_fnCreateTrigger;
196 std::unique_ptr<TriggerFunctionImpl> m_pTriggerFunc;
197 tResult m_oTriggerFunctionCreationResult;
200 filter_with_trigger_function(std::function<
tResult(FilterClass&)> fnCreateTrigger):
201 m_fnCreateTrigger(fnCreateTrigger),
202 m_oTriggerFunctionCreationResult(CreateRunner())
206 ~filter_with_trigger_function()
215 "Unable to construct trigger function");
217 if (GetTriggerFunctionName().IsEmpty())
219 m_pTriggerFunc->SetName(
"trigger");
222 RETURN_IF_FAILED(m_pTriggerFunc->SetFilter(*
this));
224 return FilterClass::AttachConfiguration(GetTriggerFunctionName(), *m_pTriggerFunc);
228 tResult Init(
typename FilterClass::tInitStage eStage)
override
230 RETURN_IF_FAILED(FilterClass::Init(eStage));
231 if (eStage == FilterClass::tInitStage::StageFirst)
233 RETURN_IF_FAILED(m_oTriggerFunctionCreationResult);
234 RETURN_IF_FAILED(FilterClass::RegisterRunner(GetTriggerFunctionName(), *m_pTriggerFunc.get()));
235 RETURN_IF_FAILED(m_pTriggerFunc->Configure());
236 RETURN_IF_FAILED(m_pTriggerFunc->ConnectReadersAndWriters(*
this));
237 RETURN_IF_FAILED(m_fnCreateTrigger(*
this));
243 tResult Shutdown(
typename FilterClass::tInitStage eStage)
override
245 if (eStage == FilterClass::tInitStage::StageFirst)
247 m_pTriggerFunc.reset();
250 return FilterClass::Shutdown(eStage);
253 adtf::util::cString GetTriggerFunctionName()
override
255 adtf_util::cString strTriggerFuncName;
260 return strTriggerFuncName;
272 virtual adtf::util::cString GetTriggerFunctionName() = 0;
275template<
typename TriggerFunctionImpl,
typename FilterClass = cFilterWithTriggerFunction>
281using hollow::filter_with_trigger_function;
294#define ADTF_TRIGGER_FUNCTION_FILTER(_class_identifier_,\
296 _triggerfilterclass_,\
298 _trigger_configurator_,\
300class _triggerfilterclass_ : public adtf::filter::filter_with_trigger_function<_triggerfunction_> \
303 ADTF_CLASS_ID_NAME(_triggerfilterclass_, _class_identifier_, _class_name_); \
306 _triggerfilterclass_():\
307 filter_type(_trigger_configurator_)\
319#define ADTF_TRIGGER_FUNCTION_FILTER_PLUGIN(_class_identifier_,\
322 _trigger_configurator_,\
324 ADTF_TRIGGER_FUNCTION_FILTER(_class_identifier_,\
326 _triggerfunction_##Filter,\
328 _trigger_configurator_,\
330 ADTF_PLUGIN(_class_name_ " Plugin",\
331 _triggerfunction_##Filter)
A_UTILS_NS::cResult tResult
For backwards compatibility and to bring latest version into scope.
Definition result.h:736
#define RETURN_IF_THROWS_DESC(s,...)
Definition result.h:137
#define RETURN_NOERROR
Return status ERR_NOERROR, which requires the calling function's return type to be tResult.
Definition result.h:29
streaming::ant::cFilterBase::tInitStage tInitStage
dpointer impl
Definition filter.h:113
Definition triggered_filter.h:28
tResult Init(tInitStage eStage) override
tResult Shutdown(tInitStage eStage) override
ucom::ant::object_ptr< streaming::ant::IRunner > RegisterRunner(const char *strName, CALLABLE &&fnRunFunction)
Definition graph_object.h:1424
Definition triggered_filter.h:90
tResult Shutdown(tInitStage eStage) override
Definition triggered_filter.h:155
tResult Init(tInitStage eStage) override
Definition triggered_filter.h:140
Definition triggered_filter.h:183
Definition triggered_filter.h:270
@ State_Shutdown
Filter is New / Shutdown.
Definition filter_intf.h:46
tInitStage
The Filters InitStages will be used for the cFilterLevelmachine::Init and cFilterLevelmachine::Shutdo...
Definition filter_levelmachine.h:45
@ StageFirst
Definition filter_levelmachine.h:50
Definition object_intf.h:33
Namespace for all functionality of the ADTF Filter SDK provided since v3.0.
Definition filter.h:26
Namespace for all functionality of the ADTF Filter SDK provided since v3.3.
Definition data_triggered_filter.h:86
Namespace for all functionality of the ADTF Filter SDK provided since v3.5.
Definition triggered_filter.h:179
Namespace for all functionality of the ADTF Filter SDK provided since v3.7.
Definition data_triggered_filter.h:96
Namespace for the ADTF Filter SDK.
Definition configurable_runner.h:18
adtf_util::cString get_named_graph_object_full_name(const INamedGraphObject &oGraphObject)
Namespace for all functionality provided by ADTF and its SDKs.
Definition adtf_client_connector.h:14
#define adtf_string_intf(__string__)
Definition string_intf.h:465