10 #ifndef RAD_SM_ADAPTER_HPP
11 #define RAD_SM_ADAPTER_HPP
13 #include <rad/Dispatcher.hpp>
14 #include <rad/AnyEvent.hpp>
15 #include <rad/MsgHandler.hpp>
16 #include <rad/MsgReplier.hpp>
17 #include <rad/TopicSub.hpp>
19 #include <scxml4cpp/Context.h>
20 #include <scxml4cpp/EventQueue.h>
21 #include <scxml4cpp/Executor.h>
22 #include <scxml4cpp/DOMSCXMLReader.h>
23 #include <scxml4cpp/StateMachine.h>
24 #include <scxml4cpp/Action.h>
25 #include <scxml4cpp/Activity.h>
26 #include <scxml4cpp/StatusListener.h>
27 #include <scxml4cpp/EventListener.h>
29 #include <boost/asio.hpp>
30 #include <rad/SMEvent.hpp>
52 void Load(
const std::string& filename,
53 std::list<scxml4cpp::Action*>* actionList,
54 std::list<scxml4cpp::Activity*>* activityList);
77 boost::asio::io_service& mIOS;
79 std::list<Dispatcher::token_t> mEventHandlersTokens;
85 std::string mModelName;
95 template<
typename EventType>
100 return [& ] (
const std::string& identity,
const std::string& requestName,
const void* pMsg,
size_t msgSize) {
101 auto ev = ParseRequestAndCreateEvent<EventType>(identity, requestName, pMsg, msgSize);
109 template<
typename EventType>
114 return [& ] (
const std::string& topicName,
const void* pMsg,
size_t msgSize) {
115 auto ev = ParseTopicAndCreateEvent<EventType>(topicName, pMsg, msgSize);
void SetLogLevel(const std::string &level)
Definition: SMAdapter.cpp:272
SMAdapter & operator=(SMAdapter &e)=delete
SMAdapter(boost::asio::io_service &ios, Dispatcher &dispatcher, scxml4cpp::Context *context, scxml4cpp::EventQueue &externalEvents)
Definition: SMAdapter.cpp:31
void AddEventListener(scxml4cpp::EventListener *listener)
Definition: SMAdapter.cpp:259
virtual ~SMAdapter()
Definition: SMAdapter.cpp:46
Definition: Executor.h:67
void AddStatusListener(scxml4cpp::StatusListener *listener)
Definition: SMAdapter.cpp:246
void RegisterEvents(std::vector< rad::EventInfo > &events)
Definition: SMAdapter.cpp:124
std::function< void(const std::string &, const std::string &, const void *, size_t)> ReqProcessEvent(SMAdapter &sm)
Definition: SMAdapter.hpp:96
Definition: EventListener.h:39
void UnregisterEvents()
Definition: SMAdapter.cpp:142
Definition: StateMachine.h:44
void Stop()
Definition: SMAdapter.cpp:184
void Load(const std::string &filename, std::list< scxml4cpp::Action * > *actionList, std::list< scxml4cpp::Activity * > *activityList)
Definition: SMAdapter.cpp:84
void EventCallback(const AnyEvent &e)
Definition: SMAdapter.cpp:157
Definition: Dispatcher.hpp:22
Definition: SMAdapter.hpp:43
std::unique_ptr< AnyEvent > UniqueEvent
Definition: AnyEvent.hpp:48
void Start()
Definition: SMAdapter.cpp:173
Definition: StatusListener.h:40
void PostEvent(UniqueEvent &&e)
Definition: SMAdapter.cpp:197
Definition: EventQueue.h:44
Definition: AnyEvent.hpp:55
#define RAD_LOG_TRACE()
Definition: Logger.hpp:319
Definition: SMEvent.hpp:25
std::function< void(const std::string &, const void *, size_t)> TopicProcessEvent(SMAdapter &sm)
Definition: SMAdapter.hpp:110
void ProcessEvent()
Definition: SMAdapter.cpp:218