Go to the documentation of this file.
10 #ifndef RAD_SM_ADAPTER_HPP
11 #define RAD_SM_ADAPTER_HPP
29 #include <boost/asio.hpp>
47 auto req = rad::GetPayloadNothrow<T>(event);
49 LOG4CPLUS_ERROR(
GetLogger(), event.
GetId() <<
" has no associated request!");
52 req->SetReplyValue(
"Request rejected in state " + state);
91 void Load(
const std::string& filename, std::list<scxml4cpp::Action*>* action_list,
92 std::list<scxml4cpp::Activity*>* activity_list);
107 std::list<scxml4cpp::Action*>* action_list,
108 std::list<scxml4cpp::Activity*>* activity_list);
123 void Append(
const std::string& filename, std::list<scxml4cpp::Action*>* action_list,
124 std::list<scxml4cpp::Activity*>* activity_list);
141 std::list<scxml4cpp::Action*>* action_list,
142 std::list<scxml4cpp::Activity*>* activity_list);
270 const std::string&
id,
280 template <
typename T>
283 LOG4CPLUS_DEBUG(
GetLogger(),
"Registering reject handler for event: " << T::ID);
294 template <
typename T>
297 LOG4CPLUS_DEBUG(
GetLogger(),
"Registering reject handler for event: " << T::ID);
300 auto req = rad::GetPayloadNothrow<T>(event);
301 if (req ==
nullptr) {
302 LOG4CPLUS_ERROR(
GetLogger(), event.
GetId() <<
" has no associated request!");
305 req->SetReplyValue(
"Request rejected in state " + state);
321 boost::asio::io_context& m_ios;
325 std::unique_ptr<scxml4cpp::StateMachine> m_model;
327 std::string m_model_name;
328 std::string m_status;
329 std::string m_old_status;
330 bool m_use_fully_qualified_state =
false;
332 std::function<void(
const std::string&)> m_status_publisher =
nullptr;
333 std::map<std::string, std::function<void(
const rad::AnyEvent&,
const std::string& state)>>
348 void notifyStatus(std::list<scxml4cpp::State*>& status)
override;
363 template <
typename EventType>
364 std::function<void(
const std::string&,
const std::string&,
const void*,
size_t)>
ReqProcessEvent(
366 return [&](
const std::string& identity,
const std::string& request_name,
const void* msg,
368 auto ev = ParseRequestAndCreateEvent<EventType>(identity, request_name, msg, msg_size);
376 template <
typename EventType>
378 return [&](
const std::string& topic_name,
const void* msg,
size_t msg_size) {
379 auto ev = ParseTopicAndCreateEvent<EventType>(topic_name, msg, msg_size);
386 #endif // RAD_SM_ADAPTER_HPP
void Stop()
Definition: smAdapter.cpp:235
void AppendFromString(const std::string &name, const std::string &model, std::list< scxml4cpp::Action * > *action_list, std::list< scxml4cpp::Activity * > *activity_list)
Definition: smAdapter.cpp:167
level
Definition: hellorad.py:30
void Start()
Definition: smAdapter.cpp:206
name
Definition: wscript:8
Definition: smAdapter.hpp:60
#define RAD_TRACE(logger)
Definition: logger.hpp:24
void RemoveStatusListener(scxml4cpp::StatusListener *listener)
Definition: smAdapter.cpp:368
std::function< void(const std::string &, const void *, size_t)> TopicProcessEvent(SMAdapter &sm)
Definition: smAdapter.hpp:377
std::list< scxml4cpp::State * > GetActiveStates()
Definition: smAdapter.cpp:322
SMAdapter(const SMAdapter &e)=delete
std::string GetStatus() const
Definition: smAdapter.cpp:317
AnyEvent class header file.
Definition: Executor.h:73
void ProcessEvent()
Definition: smAdapter.cpp:279
Definition: smEvent.hpp:25
void SetStatusPublisher(std::function< void(const std::string &)> publisher)
Definition: smAdapter.cpp:401
def handler(event)
Definition: test_dispatcher.py:11
void SetLogLevel(const std::string &level)
Definition: smAdapter.cpp:425
SMAdapter(boost::asio::io_context &ios, scxml4cpp::Context *context, scxml4cpp::EventQueue &external_events)
Definition: smAdapter.cpp:26
void DefaultRequestRejectHandler(const rad::AnyEvent &event, const std::string &state)
Definition: smAdapter.hpp:45
Definition: oldbAdapter.hpp:26
log4cplus::Logger & GetLogger()
Definition: logger.cpp:68
Definition: anyEvent.hpp:52
char const * GetId() const
Definition: anyEvent.hpp:60
void RegisterRejectHandler(const std::string &id, std::function< void(const rad::AnyEvent &, const std::string &state)> handler)
Definition: smAdapter.cpp:417
void AddEventListener(scxml4cpp::EventListener *listener)
Definition: smAdapter.cpp:379
void PublishStatus()
Definition: smAdapter.cpp:406
Definition: EventListener.h:57
void RegisterDefaultRequestRejectHandler()
Definition: smAdapter.hpp:281
Definition: StatusListener.h:60
void SetStatusRepresentation(const bool use_fully_qualified_state)
Definition: smAdapter.cpp:312
void PostEvent(SharedEvent e)
Definition: smAdapter.cpp:262
void Load(const std::string &filename, std::list< scxml4cpp::Action * > *action_list, std::list< scxml4cpp::Activity * > *activity_list)
Definition: smAdapter.cpp:55
SMEvent class header file.
std::function< void(const std::string &, const std::string &, const void *, size_t)> ReqProcessEvent(SMAdapter &sm)
Definition: smAdapter.hpp:364
void AddStatusListener(scxml4cpp::StatusListener *listener)
Definition: smAdapter.cpp:357
std::shared_ptr< const AnyEvent > SharedEvent
Definition: anyEvent.hpp:44
SMAdapter & operator=(SMAdapter &e)=delete
virtual ~SMAdapter()
Definition: smAdapter.cpp:38
void LoadFromString(const std::string &name, const std::string &model, std::list< scxml4cpp::Action * > *action_list, std::list< scxml4cpp::Activity * > *activity_list)
Definition: smAdapter.cpp:91
void RemoveEventListener(scxml4cpp::EventListener *listener)
Definition: smAdapter.cpp:390
void Append(const std::string &filename, std::list< scxml4cpp::Action * > *action_list, std::list< scxml4cpp::Activity * > *activity_list)
Definition: smAdapter.cpp:123
Definition: EventQueue.h:55