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.
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
log4cplus::Logger & GetLogger(const std::string &name="app")
Get handle to a specific logger.
Definition: logger.cpp:180
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.