12#ifndef RTCTK_COMPONENTFRAMEWORK_SUSPENDABLE_HPP
13#define RTCTK_COMPONENTFRAMEWORK_SUSPENDABLE_HPP
27template <
typename Super>
46 using Super::InputStage::InputStage;
49 Super::InputStage::Start();
68 this->m_no_disable_in_states.push_back(
"On::Operational::Suspending");
69 this->m_no_disable_in_states.push_back(
"On::Operational::Resuming");
70 this->m_no_disable_in_states.push_back(
"On::Operational::Suspended");
74 this->m_no_update_in_states.push_back(
"On::Operational::Suspending");
75 this->m_no_update_in_states.push_back(
"On::Operational::Resuming");
84 if (this->m_tmp_request) {
86 this->m_tmp_request =
nullptr;
95 if (this->m_tmp_request) {
97 this->m_tmp_request =
nullptr;
104 "ActivitySuspending",
106 static_cast<BizLogicIf&
>(this->m_logic).ActivitySuspending(stop_token);
108 this->m_success_handler,
109 this->m_error_handler);
114 static_cast<BizLogicIf&
>(this->m_logic).ActivityResuming(stop_token);
116 this->m_success_handler,
117 this->m_error_handler);
122 static_cast<BizLogicIf&
>(this->m_logic).ActivitySuspended(stop_token);
125 this->m_error_handler);
136 std::string parent_region = this->mm.GetParentId(
"On::Operational::Closed");
138 this->mm.AddState(
Simple,
"On::Operational::Suspended" ,parent_region ,
"ActivitySuspended");
139 this->mm.AddState(
Simple,
"On::Operational::Suspending" ,parent_region ,
"ActivitySuspending" ,
"ActionSuspendingEntry");
140 this->mm.AddState(
Simple,
"On::Operational::Resuming" ,parent_region ,
"ActivityResuming" ,
"ActionResumingEntry" );
142 this->mm.AddTrans(
"On::Operational::Closed" ,
"On::Operational::Suspending" ,
"events.Suspend");
143 this->mm.AddTrans(
"On::Operational::Suspending" ,
"On::Operational::Suspended" ,
"events.Done",
"" ,
"ActionSuspendingDone");
144 this->mm.AddTrans(
"On::Operational::Suspended" ,
"On::Operational::Resuming" ,
"events.Resume");
145 this->mm.AddTrans(
"On::Operational::Resuming" ,
"On::Operational::Closed" ,
"events.Done",
"" ,
"ActionResumingDone");
146 this->mm.AddTrans(
"On::Operational::Suspended" ,
"On::Operational::Opening" ,
"events.Open");
Thrown if a command is not allowed in current state or guard.
Definition rtcComponent.hpp:39
Definition stateMachineEngine.hpp:34
void RegisterAction(const std::string &id, ActionMethod action)
Register action.
Definition stateMachineEngine.cpp:85
void RegisterRejectHandler(const std::string &id, RejectMethod reject)
Register reject handler.
Definition stateMachineEngine.cpp:128
void RegisterActivity(const std::string &id, ActivityMethod activity, SuccessMethod on_success, FailureMethod on_failure)
Register activity.
Definition stateMachineEngine.cpp:120
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition suspCmdsImpl.hpp:36
Definition suspendable.hpp:34
virtual void ActivityResuming(StopToken st)
Definition suspendable.hpp:37
virtual void ActivitySuspended(StopToken st)
Definition suspendable.hpp:38
virtual void ActivitySuspending(StopToken st)
Definition suspendable.hpp:36
ModelBuilder(StateMachineEngine &engine)
Definition suspendable.hpp:134
OutputStage(StateMachineEngine &engine, BizLogicIf &bl)
Definition suspendable.hpp:60
Lifecycle Extension that makes an RTC Component 'Loopaware'.
Definition commandReplier.cpp:21
@ Simple
Definition model.hpp:22
rad::StopToken StopToken
Definition stopToken.hpp:19
std::shared_ptr< typename EVENT::payload_t > GetPayloadNothrow(scxml4cpp::Context *c)
Definition stateMachineEngine.hpp:255
const std::string STD_OK_REPLY
Definition stdComponent.hpp:85
constexpr bool is_base_of_template_v
Definition utils.hpp:36
Life cycle extension to make Loopaware RtcComponent Suspendable.
Definition suspendable.hpp:28
Implementation of MAL commands for layer 'Suspendable'.