12#ifndef RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
13#define RTCTK_COMPONENTFRAMEWORK_STDCOMPONENT_HPP
16#include <rtctk/componentFramework/events.rad.hpp>
41 explicit LogInfo(
const std::string& level,
const std::string& logger =
"")
42 : m_logger(logger), m_level(level) {
49 void setLogger(
const std::string& logger)
override {
57 void setLevel(
const std::string& level)
override {
65 bool keyEquals(
const stdif::LogInfo& other)
const override {
69 std::unique_ptr<stdif::LogInfo>
clone()
const override {
70 return std::make_unique<LogInfo>(m_logger, m_level);
73 std::unique_ptr<stdif::LogInfo>
cloneKey()
const override {
74 return std::make_unique<LogInfo>(m_logger, m_level);
113 :
stdif::ExceptionErr(
"Request " + request_id +
" rejected in state " + state_id,
168 m_engine.RegisterExitEvent(std::make_unique<events::Exit>());
198 m_engine.PostEvent(std::make_unique<events::Error>(std::move(eptr)));
227 engine.
RegisterAction(
"ActionInitialisingFailed", [
this](
auto c) {
237 engine.
RegisterAction(
"ActionInitialisingStopped", [
this](
auto c) {
239 if (req ==
nullptr) {
250 engine.
RegisterAction(
"ActionInitialisingRestarted", [
this](
auto c) {
252 if (req ==
nullptr) {
313 if (req ==
nullptr) {
325 if (req ==
nullptr) {
329 req->SetReplyValue(
m_engine.GetState());
336 if (req ==
nullptr) {
340 req->SetReplyValue(
m_engine.GetState());
347 if (req ==
nullptr) {
352 req->SetReplyValue(VERSION);
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",
429 mm.AddState(
Initial,
"On::Initial",
"On:");
430 mm.AddState(
Composite,
"On::NotOperational",
"On:");
431 mm.AddState(
Simple,
"On::Operational",
"On:");
433 mm.AddState(
Initial,
"On::NotOperational::Initial",
"On::NotOperational");
434 mm.AddState(
Simple,
"On::NotOperational::NotReady",
"On::NotOperational");
435 mm.AddState(
Simple,
"On::NotOperational::Ready",
"On::NotOperational");
437 mm.AddTrans(
"Initial" ,
"On");
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");
443 mm.AddTrans(
"On" ,
"On" ,
"events.Reset");
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:38
std::string getLevel() const override
Definition stdComponent.hpp:53
std::unique_ptr< stdif::LogInfo > cloneKey() const override
Definition stdComponent.hpp:73
std::string getLogger() const override
Definition stdComponent.hpp:45
bool hasKey() const override
Definition stdComponent.hpp:61
std::unique_ptr< stdif::LogInfo > clone() const override
Definition stdComponent.hpp:69
void setLevel(const std::string &level) override
Definition stdComponent.hpp:57
LogInfo(const std::string &level, const std::string &logger="")
Definition stdComponent.hpp:41
bool keyEquals(const stdif::LogInfo &other) const override
Definition stdComponent.hpp:65
void setLogger(const std::string &logger) override
Definition stdComponent.hpp:49
ModelBuilderBase(StateMachineEngine &engine)
Definition modelBuilderBase.hpp:36
ModelManipulator mm
Definition modelBuilderBase.hpp:78
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
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
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition stdCmdsImpl.hpp:36
Definition stdComponent.hpp:147
virtual void ActivityInitialising(StopToken)
Definition stdComponent.hpp:150
virtual void ActivityEnabling(StopToken)
Definition stdComponent.hpp:151
virtual void ActivityStarting(StopToken st)
Definition stdComponent.hpp:149
virtual void ActivityDisabling(StopToken)
Definition stdComponent.hpp:152
ModelBuilder(StateMachineEngine &engine)
Definition stdComponent.hpp:422
std::function< void()> m_success_handler
Definition stdComponent.hpp:413
OutputStage(StateMachineEngine &engine, BizLogicIf &bl)
Definition stdComponent.hpp:184
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:95
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:97
StdIfRequestAborted()
Definition stdComponent.hpp:98
Thrown if the command was accepted but the task to run failed.
Definition stdComponent.hpp:122
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:127
StdIfRequestFailed(const std::string &message)
Definition stdComponent.hpp:128
Thrown if the command is not allowed in current state or guard.
Definition stdComponent.hpp:106
StdIfRequestRejected(const std::string &request_id, const std::string &state_id)
Definition stdComponent.hpp:112
static constexpr int32_t ERROR_CODE
Definition stdComponent.hpp:111
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:191
Implementation of MAL commands for layer 'IntrospectionIf'.
Logging Support Library based on log4cplus.
Base class of the ModelBuilder.
Definition commandReplier.cpp:21
@ 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
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
Definition statePublisher.hpp:24
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:143
Various utilities for Life Cycle Extension.