13#ifndef RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
14#define RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
17#include <rtctk/componentFramework/events.rad.hpp>
42 explicit LogInfo(std::string
const& level, std::string
const& logger =
"")
43 : m_logger(logger), m_level(level) {
50 void setLogger(std::string
const& logger)
override {
58 void setLevel(std::string
const& level)
override {
66 bool keyEquals(stdif::LogInfo
const& other)
const 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);
114 :
stdif::ExceptionErr(
"Request " + request_id +
" rejected in state " + state_id,
228 engine.
RegisterAction(
"ActionInitialisingFailed", [
this](
auto c) {
229 if (
auto eptr = GetPayloadNothrow<events::Error>(c); eptr) {
238 engine.
RegisterAction(
"ActionInitialisingStopped", [
this](
auto c) {
239 auto req = GetPayloadNothrow<events::Stop>(c);
240 if (req ==
nullptr) {
251 engine.
RegisterAction(
"ActionInitialisingRestarted", [
this](
auto c) {
252 auto req = GetPayloadNothrow<events::Init>(c);
253 if (req ==
nullptr) {
278 if (
auto eptr = GetPayloadNothrow<events::Error>(c); eptr) {
301 if (
auto eptr = GetPayloadNothrow<events::Error>(c); eptr) {
313 auto req = GetPayloadNothrow<events::Exit>(c);
314 if (req ==
nullptr) {
325 auto req = GetPayloadNothrow<events::GetState>(c);
326 if (req ==
nullptr) {
336 auto req = GetPayloadNothrow<events::GetStatus>(c);
337 if (req ==
nullptr) {
347 auto req = GetPayloadNothrow<events::GetVersion>(c);
348 if (req ==
nullptr) {
352 req->SetReplyValue(VERSION);
358 auto req = GetPayloadNothrow<events::SetLogLevel>(c);
359 if (req ==
nullptr) {
363 auto loginfo = req->GetRequestPayload();
364 auto selected_logger = loginfo->getLogger();
365 auto& logger =
GetLogger(selected_logger);
366 log4cplus::LogLevelManager llm;
367 auto selected_ll = llm.fromString(loginfo->getLevel());
368 if (selected_ll == log4cplus::NOT_SET_LOG_LEVEL) {
371 logger.setLogLevel(selected_ll);
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:29
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
bool keyEquals(stdif::LogInfo const &other) const override
Definition: stdComponent.hpp:66
LogInfo(std::string const &level, std::string const &logger="")
Definition: stdComponent.hpp:42
void setLevel(std::string const &level) override
Definition: stdComponent.hpp:58
void setLogger(std::string const &logger) override
Definition: stdComponent.hpp:50
Base class of the ModelBuilder.
Definition: modelBuilderBase.hpp:35
ModelManipulator mm
Definition: modelBuilderBase.hpp:79
void AddTrans(std::string const &source_id, std::string const &target_id, std::string const &event_id="", std::string const &guard_id="", std::string const &action_id="")
Adds a new transition.
Definition: modelManipulator.cpp:229
void AddState(StateType type, std::string const &id, std::string const &parent_id="", std::string const &activity_id="", std::string const &entry_action_id="", std::string const &exit_action_id="")
Adds a new state.
Definition: modelManipulator.cpp:30
Adapter object intended to be used in contexts without direct access to the output-stream object.
Definition: exceptions.hpp:185
std::string Str() const
Convenience function for constructing a std::string from the exception.
Definition: exceptions.hpp:203
Definition: stateMachineEngine.hpp:35
void RegisterRejectHandler(std::string const &id, RejectMethod reject)
Register reject handler.
Definition: stateMachineEngine.cpp:131
void RegisterActivity(std::string const &id, ActivityMethod activity, SuccessMethod on_success, FailureMethod on_failure)
Register activity.
Definition: stateMachineEngine.cpp:123
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 RegisterAction(std::string const &id, ActionMethod action)
Register action.
Definition: stateMachineEngine.cpp:86
void Stop()
Stops execution of the state machine event loop.
Definition: stateMachineEngine.cpp:191
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
StdIfRequestFailed(std::string const &message)
Definition: stdComponent.hpp:129
static constexpr int32_t ERROR_CODE
Definition: stdComponent.hpp:128
Thrown if the command is not allowed in current state or guard.
Definition: stdComponent.hpp:107
StdIfRequestRejected(std::string const &request_id, std::string const &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.
log4cplus::Logger & GetLogger(const std::string &name="app")
Get handle to a specific logger.
Definition: logger.cpp:180
Implementation of MAL commands for layer 'IntrospectionIf'.
Logging Support Library based on log4cplus.
Base class of the ModelBuilder.
Definition: commandReplier.cpp:22
const std::string STD_OK_REPLY
Definition: stdComponent.hpp:86
rad::StopToken StopToken
Definition: stopToken.hpp:20
@ Simple
Definition: model.hpp:22
@ Composite
Definition: model.hpp:22
@ Parallel
Definition: model.hpp:22
@ Final
Definition: model.hpp:22
@ Initial
Definition: model.hpp:22
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.