RTC Toolkit 4.0.1
Loading...
Searching...
No Matches
rtcCmdsImpl.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_COMPONENTFRAMEWORK_RTCCMDSIMPL_HPP
14#define RTCTK_COMPONENTFRAMEWORK_RTCCMDSIMPL_HPP
15
16#include <Rtctkif.hpp>
18#include <rtctk/componentFramework/events.rad.hpp>
22
23#include <mal/Cii.hpp>
24
25#include <memory>
26#include <string>
27
29
35class FuncCmdsImpl : public rtctkif::AsyncFuncCmds {
36public:
37 static void Register(CommandReplier& replier, StateMachineEngine& engine) {
38 std::shared_ptr<elt::mal::rr::RrEntity> rr_service = std::make_shared<FuncCmdsImpl>(engine);
39 replier.RegisterService<rtctkif::AsyncFuncCmds>("FuncCmds", rr_service);
40 }
41
43 : m_logger(GetLogger("rtctk")), m_engine(engine) {
44 }
45
46 ::elt::mal::future<std::string> Recover() override {
47 LOG4CPLUS_TRACE(m_logger, "Received command 'Recover'");
48 return InjectReqRepEvent<events::Recover>(m_engine);
49 }
50
51 ::elt::mal::future<std::string> Run() override {
52 LOG4CPLUS_TRACE(m_logger, "Received command 'Run'");
53 return InjectReqRepEvent<events::Run>(m_engine);
54 }
55
56 ::elt::mal::future<std::string> Idle() override {
57 LOG4CPLUS_TRACE(m_logger, "Received command 'Idle'");
58 return InjectReqRepEvent<events::Idle>(m_engine);
59 }
60
61private:
62 log4cplus::Logger& m_logger;
63 StateMachineEngine& m_engine;
64};
65
71class UpdateCmdsImpl : public rtctkif::AsyncUpdateCmds {
72public:
73 static void Register(CommandReplier& replier, StateMachineEngine& engine) {
74 std::shared_ptr<elt::mal::rr::RrEntity> rr_service =
75 std::make_shared<UpdateCmdsImpl>(engine);
76 replier.RegisterService<rtctkif::AsyncUpdateCmds>("UpdateCmds", rr_service);
77 }
78
80 : m_logger(GetLogger("rtctk")), m_engine(engine) {
81 }
82
83 ::elt::mal::future<std::string> Update(std::string const& args) override {
84 LOG4CPLUS_TRACE(m_logger, "Received command 'Update' with payload '" + args + "'");
85 return InjectReqRepEvent<events::Update>(m_engine, args);
86 }
87
88private:
89 log4cplus::Logger& m_logger;
90 StateMachineEngine& m_engine;
91};
92
93} // namespace rtctk::componentFramework
94
95#endif
Class that handles reception of commands using MAL.
Definition: commandReplier.hpp:29
void RegisterService(std::string const &name, std::shared_ptr< elt::mal::rr::RrEntity > &service)
Definition: commandReplier.hpp:36
Class that handles reception of commands Run, Idle and Recover using MAL.
Definition: rtcCmdsImpl.hpp:35
::elt::mal::future< std::string > Recover() override
Definition: rtcCmdsImpl.hpp:46
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition: rtcCmdsImpl.hpp:37
::elt::mal::future< std::string > Idle() override
Definition: rtcCmdsImpl.hpp:56
FuncCmdsImpl(StateMachineEngine &engine)
Definition: rtcCmdsImpl.hpp:42
::elt::mal::future< std::string > Run() override
Definition: rtcCmdsImpl.hpp:51
Definition: stateMachineEngine.hpp:35
Class that handles reception of command Update using MAL.
Definition: rtcCmdsImpl.hpp:71
static void Register(CommandReplier &replier, StateMachineEngine &engine)
Definition: rtcCmdsImpl.hpp:73
::elt::mal::future< std::string > Update(std::string const &args) override
Definition: rtcCmdsImpl.hpp:83
UpdateCmdsImpl(StateMachineEngine &engine)
Definition: rtcCmdsImpl.hpp:79
Receive commands via MAL.
log4cplus::Logger & GetLogger(const std::string &name="app")
Get handle to a specific logger.
Definition: logger.cpp:180
Logging Support Library based on log4cplus.
Provides core functionality of an RTC Component.
Definition: commandReplier.cpp:22
Wrapper around the SCXML State Machine Engine.