rad 6.2.0
Loading...
Searching...
No Matches
topicPub.hpp
Go to the documentation of this file.
1
9#ifndef RAD_TOPIC_PUB_HPP
10#define RAD_TOPIC_PUB_HPP
11
12#include <rad/logger.hpp>
13
14#include <azmq/message.hpp>
15#include <azmq/socket.hpp>
16
17#include <boost/asio.hpp>
18
19namespace rad {
20
24class TopicPub {
25 public:
26 TopicPub(boost::asio::io_context& ios, const std::string& endpoint);
27 virtual ~TopicPub();
28
29 size_t PublishRaw(const std::string& topic, const std::string& buffer);
30
31 template <typename TYPE>
32 size_t Publish(const std::string& topic, const TYPE& buffer);
33
34 TopicPub(const TopicPub&) = delete;
35 TopicPub& operator=(const TopicPub&) = delete;
36
37 private:
38 azmq::pub_socket m_socket;
39};
40
46template <typename TYPE>
47size_t TopicPub::Publish(const std::string& topic, const TYPE& buffer) {
49
50 std::string serialized_buffer;
51 if (buffer.SerializeToString(&serialized_buffer) == false) {
52 LOG4CPLUS_ERROR(GetLogger(), "serializing topic " << topic);
53 return 0;
54 }
55 return PublishRaw(topic, serialized_buffer);
56}
57
58} // namespace rad
59
60#endif // RAD_TOPIC_PUB_HPP
Definition topicPub.hpp:24
TopicPub(boost::asio::io_context &ios, const std::string &endpoint)
Definition topicPub.cpp:27
virtual ~TopicPub()
Definition topicPub.cpp:48
TopicPub(const TopicPub &)=delete
size_t Publish(const std::string &topic, const TYPE &buffer)
Definition topicPub.hpp:47
TopicPub & operator=(const TopicPub &)=delete
size_t PublishRaw(const std::string &topic, const std::string &buffer)
Definition topicPub.cpp:57
Logger class.
#define RAD_TRACE(logger)
Definition logger.hpp:21
Definition actionsApp.cpp:23
log4cplus::Logger & GetLogger()
Definition logger.cpp:72