RTC Toolkit  0.1.0-alpha
stateMachineEventIf.hpp
Go to the documentation of this file.
1 
9 #ifndef RTCTK_COMPONENTFRAMEWORK_STATEMACHINEEVENTIF_HPP
10 #define RTCTK_COMPONENTFRAMEWORK_STATEMACHINEEVENTIF_HPP
11 
12 #include <mal/utility/future.hpp>
13 
14 namespace rad {
15  class AnyEvent;
16 }
17 
18 namespace rtctk::componentFramework {
19 
21  public:
22  virtual ~StateMachineEventIf() {}
23 
24  virtual void PostEvent(std::shared_ptr<rad::AnyEvent> e) = 0;
25 
26  template<typename EventType>
27  ::elt::mal::future<std::string> InjectEvent() {
28  auto ev = std::make_shared<EventType>();
29  auto f = ev->GetPayload().GetReplyFuture();
30  PostEvent(ev);
31  return f;
32  }
33 
34  template<typename EventType, typename PayloadType>
35  ::elt::mal::future<std::string> InjectEvent(PayloadType& payload) {
36  auto ev = std::make_shared<EventType>(payload);
37  auto f = ev->GetPayload().GetReplyFuture();
38  PostEvent(ev);
39  return f;
40  }
41 };
42 
43 } // closing namespace
44 
45 #endif
rtctk::componentFramework
Definition: rtcComponent.hpp:17
rtctk::componentFramework::StateMachineEventIf::InjectEvent
::elt::mal::future< std::string > InjectEvent()
Definition: stateMachineEventIf.hpp:27
rtctk::componentFramework::StateMachineEventIf
Definition: stateMachineEventIf.hpp:20
rad
Definition: stateMachineEventIf.hpp:14
rtctk::componentFramework::StateMachineEventIf::InjectEvent
::elt::mal::future< std::string > InjectEvent(PayloadType &payload)
Definition: stateMachineEventIf.hpp:35
rtctk::componentFramework::StateMachineEventIf::PostEvent
virtual void PostEvent(std::shared_ptr< rad::AnyEvent > e)=0
rtctk::componentFramework::StateMachineEventIf::~StateMachineEventIf
virtual ~StateMachineEventIf()
Definition: stateMachineEventIf.hpp:22