ifw  0.0.1-dev
 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/socket.hpp>
15 #include <azmq/message.hpp>
16 
17 #include <boost/asio.hpp>
18 
19 
20 namespace rad {
21 
25 class TopicPub {
26 
27 public:
28  TopicPub(boost::asio::io_service& ios, const std::string& endpoint);
29  virtual ~TopicPub();
30 
31  size_t PublishRaw(const std::string& topic, const std::string& buffer);
32 
33  template<typename TYPE>
34  size_t Publish(const std::string& topic, const TYPE& buffer);
35 
36  TopicPub(const TopicPub&) = delete;
37  TopicPub& operator= (const TopicPub&) = delete;
38 
39 private:
40  azmq::pub_socket mSocket;
41 };
42 
48 template<typename TYPE>
49 size_t TopicPub::Publish(const std::string& topic, const TYPE& buffer)
50 {
51  RAD_LOG_TRACE();
52 
53  std::string serializedBuffer;
54  if (buffer.SerializeToString(&serializedBuffer) == false) {
55  RAD_LOG_ERROR() << "serializing topic " << topic;
56  return 0;
57  }
58  return PublishRaw(topic, serializedBuffer);
59 }
60 
61 
62 } // namespace rad
63 
64 #endif
size_t Publish(const std::string &topic, const TYPE &buffer)
Definition: TopicPub.hpp:49
#define RAD_LOG_ERROR()
Definition: Logger.hpp:266
Definition: TopicPub.hpp:25
size_t PublishRaw(const std::string &topic, const std::string &buffer)
Definition: TopicPub.cpp:63
virtual ~TopicPub()
Definition: TopicPub.cpp:51
TopicPub(boost::asio::io_service &ios, const std::string &endpoint)
Definition: TopicPub.cpp:29
TopicPub & operator=(const TopicPub &)=delete
#define RAD_LOG_TRACE()
Definition: Logger.hpp:319