12#ifndef RTCTK_EXAMPLECUSTOM_CUSTOMLIFECYCLE_HPP
13#define RTCTK_EXAMPLECUSTOM_CUSTOMLIFECYCLE_HPP
23namespace cfw = componentFramework;
25template <
typename Super>
27 static_assert(std::is_base_of_v<cfw::RtcComponent, Super>,
28 "'CustomLifeCycle' requires 'RtcComponent'");
34 virtual void ActivityBar(cfw::StopToken st,
const cfw::JsonPayload& args) {
40 using Super::InputStage::InputStage;
43 Super::InputStage::Start();
61 this->m_engine.PostEvent(std::make_unique<events::CustomDone>());
65 this->m_engine.PostEvent(std::make_unique<events::CustomError>(std::move(eptr)));
70 engine.RegisterActionStatic<events::Foo>(
"ActionFooEntry", [
this](
const auto& ev) {
75 engine.RegisterActionStatic<events::CustomDone>(
"ActionFooDone", [
this](
const auto&) {
81 engine.RegisterActionStatic<events::CustomError>(
82 "ActionFooFailed", [
this](
const auto& ev) {
83 const auto& eptr = ev.GetPayload();
90 engine.RegisterActionStatic<events::Bar>(
"ActionBarEntry", [
this](
const auto& ev) {
95 engine.RegisterActionStatic<events::CustomDone>(
"ActionBarDone", [
this](
const auto&) {
101 engine.RegisterActionStatic<events::CustomError>(
102 "ActionBarFailed", [
this](
const auto& ev) {
103 const auto& eptr = ev.GetPayload();
112 engine.RegisterActivity(
115 static_cast<BizLogicIf&
>(this->m_logic).ActivityFoo(stop_token);
120 engine.RegisterActivity(
125 static_cast<BizLogicIf&
>(this->m_logic).ActivityBar(stop_token, arg);
144 this->mm.ModStateType(
"On::Operational",
Parallel);
146 this->mm.AddState(
Composite,
"On::Operational:Custom",
"On::Operational");
147 this->mm.AddState(
Initial,
"On::Operational:Custom:Initial",
"On::Operational:Custom");
148 this->mm.AddState(
Simple,
"On::Operational:Custom:Idle",
"On::Operational:Custom");
149 this->mm.AddState(
Simple,
"On::Operational:Custom:Foo",
"On::Operational:Custom",
"ActivityFoo" ,
"ActionFooEntry");
150 this->mm.AddState(
Simple,
"On::Operational:Custom:Bar",
"On::Operational:Custom",
"ActivityBar" ,
"ActionBarEntry");
152 this->mm.AddTrans(
"On::Operational:Custom:Initial" ,
"On::Operational:Custom:Idle");
153 this->mm.AddTrans(
"On::Operational:Custom:Idle" ,
"On::Operational:Custom:Foo" ,
"events.Foo" ,
"");
154 this->mm.AddTrans(
"On::Operational:Custom:Foo" ,
"On::Operational:Custom:Idle" ,
"events.CustomDone" ,
"" ,
"ActionFooDone" );
155 this->mm.AddTrans(
"On::Operational:Custom:Foo" ,
"On::Operational:Custom:Idle" ,
"events.CustomError" ,
"" ,
"ActionFooFailed" );
156 this->mm.AddTrans(
"On::Operational:Custom:Idle" ,
"On::Operational:Custom:Bar" ,
"events.Bar" ,
"");
157 this->mm.AddTrans(
"On::Operational:Custom:Bar" ,
"On::Operational:Custom:Idle" ,
"events.CustomDone" ,
"" ,
"ActionBarDone" );
158 this->mm.AddTrans(
"On::Operational:Custom:Bar" ,
"On::Operational:Custom:Idle" ,
"events.CustomError" ,
"" ,
"ActionBarFailed" );
Adapter object intended to be used in contexts without direct access to the output-stream object.
Definition exceptions.hpp:168
std::string Str() const
Convenience function for constructing a std::string from the exception.
Definition exceptions.hpp:186
Thrown if the command was accepted but the task to run failed.
Definition rtcComponent.hpp:52
Thrown if a command is not allowed in current state or guard.
Definition rtcComponent.hpp:39
static void Register(cfw::CommandReplier &replier, cfw::StateMachineEngine &engine)
Definition customCmdsImpl.hpp:31
Definition customLifeCycle.hpp:30
virtual void ActivityFoo(cfw::StopToken st)
Definition customLifeCycle.hpp:32
virtual void ActivityBar(cfw::StopToken st, const cfw::JsonPayload &args)
Definition customLifeCycle.hpp:34
ModelBuilder(cfw::StateMachineEngine &engine)
Definition customLifeCycle.hpp:140
std::optional< rad::cii::Request< std::string, std::string > > m_tmp_bar_request
Definition customLifeCycle.hpp:133
OutputStage(cfw::StateMachineEngine &engine, BizLogicIf &bl)
Definition customLifeCycle.hpp:51
std::function< void()> m_custom_success_handler
Definition customLifeCycle.hpp:134
std::optional< rad::cii::Request< std::string > > m_tmp_foo_request
Definition customLifeCycle.hpp:132
std::function< void(std::exception_ptr)> m_custom_error_handler
Definition customLifeCycle.hpp:135
Implementation of custom MAL commands.
Provides macros and utilities for exception handling.
Defines the JSON payload type JsonPayload.
Definition commandReplier.cpp:21
@ Simple
Definition model.hpp:22
@ Composite
Definition model.hpp:22
@ Parallel
Definition model.hpp:22
@ Initial
Definition model.hpp:22
rad::StopToken StopToken
Definition stopToken.hpp:19
const std::string STD_OK_REPLY
Definition stdComponent.hpp:85
nlohmann::json JsonPayload
Type requirements:
Definition jsonPayload.hpp:24
Definition businessLogic.cpp:22
Lifecycle of a basic 'RtcComponent'.
Definition customLifeCycle.hpp:26