rad  5.1.0
smSubscriber.hpp
Go to the documentation of this file.
1 
9 #ifndef RAD_SM_SUBSCRIBER_HPP
10 #define RAD_SM_SUBSCRIBER_HPP
11 
12 #include <rad/mal/subscriber.hpp>
13 #include <rad/smAdapter.hpp>
14 
15 namespace rad {
16 
26 template <typename TOPIC_TYPE, typename EVENT_TYPE>
27 class SMSubscriber : public rad::cii::Subscriber<TOPIC_TYPE> {
28  public:
38  SMSubscriber(const elt::mal::Uri& uri, SMAdapter& sm,
39  const std::optional<elt::mal::Mal::Properties> mal_properties = {})
41  std::bind(&SMSubscriber::Callback, this,
42  std::placeholders::_1, std::placeholders::_2),
43  mal_properties),
44  m_sm(sm) {
46  }
47 
48  void Callback(elt::mal::ps::Subscriber<TOPIC_TYPE>& subscriber,
49  const elt::mal::ps::DataEvent<TOPIC_TYPE>& event) {
51 
52  if (event.hasValidData()) {
53  LOG4CPLUS_DEBUG(GetLogger(), "Received topic, posting event to SM via ASIO.");
54  m_sm.PostEvent(rad::UniqueEvent(new EVENT_TYPE(event.getData())));
55  } else {
56  LOG4CPLUS_WARN(GetLogger(), "Received invalid data!");
57  }
58  }
59 
60  SMSubscriber(const SMSubscriber&) = delete;
61  SMSubscriber& operator=(const SMSubscriber&) = delete;
62 
63  // Enable moving ??
64  // SMSubscriber(SMSubscriber&& rhs) = default;
65 
66  private:
67  rad::SMAdapter& m_sm;
68 };
69 
70 } // namespace rad
71 
72 #endif // RAD_SM_SUBSCRIBER_HPP
Definition: smAdapter.hpp:60
void PostEvent(SharedEvent e)
Definition: smAdapter.cpp:295
Definition: smSubscriber.hpp:27
SMSubscriber & operator=(const SMSubscriber &)=delete
SMSubscriber(const elt::mal::Uri &uri, SMAdapter &sm, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition: smSubscriber.hpp:38
SMSubscriber(const SMSubscriber &)=delete
void Callback(elt::mal::ps::Subscriber< TOPIC_TYPE > &subscriber, const elt::mal::ps::DataEvent< TOPIC_TYPE > &event)
Definition: smSubscriber.hpp:48
Definition: subscriber.hpp:32
#define RAD_TRACE(logger)
Definition: logger.hpp:24
Definition: actionsApp.cpp:20
log4cplus::Logger & GetLogger()
Definition: logger.cpp:70
std::unique_ptr< AnyEvent > UniqueEvent
Definition: anyEvent.hpp:45
SMAdapter class header file.
SubscriberSM class header file.