rad  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
19 namespace rad {
20 
24 class TopicPub {
25  public:
26  TopicPub(boost::asio::io_service& 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 
46 template <typename TYPE>
47 size_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
log4cplus::Logger & GetLogger()
Definition: logger.cpp:43
size_t Publish(const std::string &topic, const TYPE &buffer)
Definition: topicPub.hpp:47
size_t PublishRaw(const std::string &topic, const std::string &buffer)
Definition: topicPub.cpp:59
virtual ~TopicPub()
Definition: topicPub.cpp:50
TopicPub(boost::asio::io_service &ios, const std::string &endpoint)
Definition: topicPub.cpp:28
TopicPub & operator=(const TopicPub &)=delete
#define RAD_TRACE(logger)
Definition: logger.hpp:19