13#ifndef RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
14#define RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
17#include <rtctk/componentFramework/events.rad.hpp>
42 explicit LogInfo(
const std::string&
level,
const std::string& logger =
"")
43 : m_logger(logger), m_level(
level) {
50 void setLogger(
const std::string& logger)
override {
70 std::unique_ptr<stdif::LogInfo>
clone()
const override {
71 return std::make_unique<LogInfo>(m_logger, m_level);
74 std::unique_ptr<stdif::LogInfo>
cloneKey()
const override {
75 return std::make_unique<LogInfo>(m_logger, m_level);
204 engine.RegisterAction(
"ActionStartingEntry", [
this](
auto c) {
208 engine.RegisterAction(
"ActionStartingDone", [
this](
auto c) {
217 engine.RegisterAction(
"ActionInitialisingEntry", [
this](
auto c) {
221 engine.RegisterAction(
"ActionInitialisingDone", [
this](
auto c) {
228 engine.RegisterAction(
"ActionInitialisingFailed", [
this](
auto c) {
238 engine.RegisterAction(
"ActionInitialisingStopped", [
this](
auto c) {
240 if (req ==
nullptr) {
251 engine.RegisterAction(
"ActionInitialisingRestarted", [
this](
auto c) {
253 if (req ==
nullptr) {
266 engine.RegisterAction(
"ActionEnablingEntry", [
this](
auto c) {
270 engine.RegisterAction(
"ActionEnablingDone", [
this](
auto c) {
277 engine.RegisterAction(
"ActionEnablingFailed", [
this](
auto c) {
289 engine.RegisterAction(
"ActionDisablingEntry", [
this](
auto c) {
293 engine.RegisterAction(
"ActionDisablingDone", [
this](
auto c) {
300 engine.RegisterAction(
"ActionDisablingFailed", [
this](
auto c) {
312 engine.RegisterAction(
"ActionExit", [
this](
auto c) {
314 if (req ==
nullptr) {
324 engine.RegisterAction(
"ActionGetState", [
this](
auto c) {
326 if (req ==
nullptr) {
335 engine.RegisterAction(
"ActionGetStatus", [
this](
auto c) {
337 if (req ==
nullptr) {
346 engine.RegisterAction(
"ActionGetVersion", [
this](
auto c) {
348 if (req ==
nullptr) {
357 engine.RegisterAction(
"ActionSetLogLevel", [
this](
auto c) {
359 if (req ==
nullptr) {
363 auto loginfo = req->GetRequestPayload();
366 log4cplus::LogLevelManager
llm;
373 "Log Level of logger '" <<
loginfo->getLogger() <<
"' set to '"
374 <<
llm.toString(logger.getLogLevel())
389 "ActivityInitialising",
438 mm.
AddTrans(
"On" ,
"Off" ,
"events.Exit",
"" ,
"ActionExit");
439 mm.
AddTrans(
"On" ,
"" ,
"events.GetState",
"" ,
"ActionGetState");
440 mm.
AddTrans(
"On" ,
"" ,
"events.GetStatus",
"" ,
"ActionGetStatus");
441 mm.
AddTrans(
"On" ,
"" ,
"events.GetVersion",
"" ,
"ActionGetVersion");
442 mm.
AddTrans(
"On" ,
"" ,
"events.SetLogLevel",
"" ,
"ActionSetLogLevel");
444 mm.
AddTrans(
"On::Initial" ,
"On::NotOperational");
446 mm.
AddState(
Simple,
"On::NotOperational::Starting",
"On::NotOperational",
"ActivityStarting" ,
"ActionStartingEntry");
448 mm.
AddTrans(
"On::NotOperational::Initial" ,
"On::NotOperational::Starting");
449 mm.
AddTrans(
"On::NotOperational::Starting" ,
"On::NotOperational::NotReady" ,
"events.Done",
"" ,
"ActionStartingDone");
451 mm.
AddState(
Simple,
"On::NotOperational::Initialising",
"On::NotOperational",
"ActivityInitialising" ,
"ActionInitialisingEntry");
453 mm.
AddTrans(
"On::NotOperational::NotReady" ,
"On::NotOperational::Initialising" ,
"events.Init");
454 mm.
AddTrans(
"On::NotOperational::Initialising" ,
"On::NotOperational::Ready" ,
"events.Done",
"" ,
"ActionInitialisingDone");
455 mm.
AddTrans(
"On::NotOperational::Initialising" ,
"On::NotOperational::NotReady" ,
"events.Error",
"" ,
"ActionInitialisingFailed");
456 mm.
AddTrans(
"On::NotOperational::Initialising" ,
"On::NotOperational::NotReady" ,
"events.Stop",
"" ,
"ActionInitialisingStopped");
457 mm.
AddTrans(
"On::NotOperational::Initialising" ,
"On::NotOperational::Initialising" ,
"events.Init",
"" ,
"ActionInitialisingRestarted");
458 mm.
AddTrans(
"On::NotOperational::Ready" ,
"On::NotOperational::Initialising" ,
"events.Init");
460 mm.
AddState(
Simple,
"On::NotOperational::Enabling",
"On::NotOperational",
"ActivityEnabling" ,
"ActionEnablingEntry");
462 mm.
AddTrans(
"On::NotOperational::Ready" ,
"On::NotOperational::Enabling" ,
"events.Enable");
463 mm.
AddTrans(
"On::NotOperational::Enabling" ,
"On::Operational" ,
"events.Done",
"" ,
"ActionEnablingDone");
464 mm.
AddTrans(
"On::NotOperational::Enabling" ,
"On::NotOperational::Ready" ,
"events.Error",
"" ,
"ActionEnablingFailed");
468 mm.
AddState(
Simple,
"On::NotOperational::Disabling",
"On::NotOperational",
"ActivityDisabling" ,
"ActionDisablingEntry");
469 mm.
AddTrans(
"On::Operational" ,
"On::NotOperational::Disabling" ,
"events.Disable");
470 mm.
AddTrans(
"On::NotOperational::Disabling" ,
"On::NotOperational::Ready" ,
"events.Done",
"" ,
"ActionDisablingDone");
471 mm.
AddTrans(
"On::NotOperational::Disabling" ,
"On::NotOperational::Ready" ,
"events.Error",
"" ,
"ActionDisablingFailed");
Class that handles reception of commands using MAL.
Definition commandReplier.hpp:30
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition introspectionImpl.hpp:39
Definition stdComponent.hpp:38
std::string getLevel() const override
Definition stdComponent.hpp:54
std::unique_ptr< stdif::LogInfo > cloneKey() const override
Definition stdComponent.hpp:74
std::string getLogger() const override
Definition stdComponent.hpp:46
bool hasKey() const override
Definition stdComponent.hpp:62
std::unique_ptr< stdif::LogInfo > clone() const override
Definition stdComponent.hpp:70
void setLevel(const std::string &level) override
Definition stdComponent.hpp:58
LogInfo(const std::string &level, const std::string &logger="")
Definition stdComponent.hpp:42
bool keyEquals(const stdif::LogInfo &other) const override
Definition stdComponent.hpp:66
void setLogger(const std::string &logger) override
Definition stdComponent.hpp:50
Base class of the ModelBuilder.
Definition modelBuilderBase.hpp:35
ModelManipulator mm
Definition modelBuilderBase.hpp:79
void AddState(StateType type, const std::string &id, const std::string &parent_id="", const std::string &activity_id="", const std::string &entry_action_id="", const std::string &exit_action_id="")
Adds a new state.
Definition modelManipulator.cpp:30
void AddTrans(const std::string &source_id, const std::string &target_id, const std::string &event_id="", const std::string &guard_id="", const std::string &action_id="")
Adds a new transition.
Definition modelManipulator.cpp:229
Adapter object intended to be used in contexts without direct access to the output-stream object.
Definition exceptions.hpp:159
std::string Str() const
Convenience function for constructing a std::string from the exception.
Definition exceptions.hpp:177
Definition stateMachineEngine.hpp:35
void RegisterExitEvent(rad::UniqueEvent exit_event)
Register an exit event.
Definition stateMachineEngine.cpp:69
std::string GetState()
Queries the current state.
Definition stateMachineEngine.cpp:153
void Stop()
Stops execution of the state machine event loop.
Definition stateMachineEngine.cpp:191
void RegisterActivity(const std::string &id, ActivityMethod activity, SuccessMethod on_success, FailureMethod on_failure)
Register activity.
Definition stateMachineEngine.cpp:123
void PostEvent(rad::SharedEvent s)
Injects a new event into the state machine engine.
Definition stateMachineEngine.cpp:148
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition stdCmdsImpl.hpp:37
Definition stdComponent.hpp:148
virtual void ActivityInitialising(StopToken)
Definition stdComponent.hpp:151
virtual void ActivityEnabling(StopToken)
Definition stdComponent.hpp:152
virtual void ActivityStarting(StopToken st)
Definition stdComponent.hpp:150
virtual void ActivityDisabling(StopToken)
Definition stdComponent.hpp:153
Definition stdComponent.hpp:420
ModelBuilder(StateMachineEngine &engine)
Definition stdComponent.hpp:422
Definition stdComponent.hpp:183
std::function< void()> m_success_handler
Definition stdComponent.hpp:413
OutputStage(StateMachineEngine &engine, BizLogicIf &bl)
Definition stdComponent.hpp:185
virtual ~OutputStage()=default
StateMachineEngine & m_engine
Definition stdComponent.hpp:410
std::function< void(std::exception_ptr)> m_error_handler
Definition stdComponent.hpp:414
BizLogicIf & m_logic
Definition stdComponent.hpp:411
std::shared_ptr< rad::cii::Request< std::string, void > > m_tmp_request
Definition stdComponent.hpp:412
Thrown if somebody sent a stop or abort command.
Definition stdComponent.hpp:96
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:98
StdIfRequestAborted()
Definition stdComponent.hpp:99
Thrown if the command was accepted but the task to run failed.
Definition stdComponent.hpp:123
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:128
StdIfRequestFailed(const std::string &message)
Definition stdComponent.hpp:129
Thrown if the command is not allowed in current state or guard.
Definition stdComponent.hpp:107
StdIfRequestRejected(const std::string &request_id, const std::string &state_id)
Definition stdComponent.hpp:113
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:112
Receive commands via MAL.
Provides macros and utilities for exception handling.
Implementation of MAL commands for layer 'IntrospectionIf'.
Logging Support Library based on log4cplus.
Base class of the ModelBuilder.
Definition commandReplier.cpp:22
@ Simple
Definition model.hpp:23
@ Composite
Definition model.hpp:23
@ Parallel
Definition model.hpp:23
@ Final
Definition model.hpp:23
@ Initial
Definition model.hpp:23
rad::StopToken StopToken
Definition stopToken.hpp:20
const std::string STD_OK_REPLY
Definition stdComponent.hpp:86
log4cplus::Logger & GetLogger(const std::string &name="app")
Get handle to a specific logger.
Definition logger.cpp:193
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Definition statePublisher.hpp:25
A container that can hold any type of service.
Wrapper around the SCXML State Machine Engine.
Implementation of MAL commands for layer 'StdComponent'.
Basic life cycle for StdComponent.
Definition stdComponent.hpp:144
Various utilities for Life Cycle Extension.