rad 6.2.0
Loading...
Searching...
No Matches
smSubscriber.hpp
Go to the documentation of this file.
1
9#ifndef RAD_SM_SUBSCRIBER_HPP
10#define RAD_SM_SUBSCRIBER_HPP
11
13#include <rad/smAdapter.hpp>
14
15namespace rad {
16
26template <typename TOPIC_TYPE, typename EVENT_TYPE>
27class 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 = {})
40 : rad::cii::Subscriber<TOPIC_TYPE>(uri,
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()->clone())));
55 } else {
56 LOG4CPLUS_WARN(GetLogger(), "Received invalid data!");
57 }
58 }
59
60 SMSubscriber(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:296
Definition smSubscriber.hpp:27
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
SMSubscriber & operator=(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
Subscriber(const elt::mal::Uri &uri, TopicHandler_t handler, const std::optional< elt::mal::Mal::Properties > mal_properties={})
Definition subscriber.hpp:45
#define RAD_TRACE(logger)
Definition logger.hpp:21
Definition actionsApp.cpp:23
std::unique_ptr< AnyEvent > UniqueEvent
Definition anyEvent.hpp:45
log4cplus::Logger & GetLogger()
Definition logger.cpp:72
Definition errors.hpp:58
SMAdapter class header file.
SubscriberSM class header file.