24 #include <google/protobuf/message.h>
25 #include <boost/thread.hpp>
44 public:
Publisher(
const std::string &topic,
const std::string &msg_type,
45 unsigned int _limit,
bool _latch);
59 public:
void Publish(
const google::protobuf::Message &_message,
61 { this->PublishImpl(_message, _block); }
62 public:
template<
typename M>
63 void Publish(M _message,
bool _block =
false)
64 { this->PublishImpl(_message, _block); }
67 private:
void PublishImpl(
const google::protobuf::Message &_message,
71 public: std::string
GetTopic()
const;
83 private:
void OnPublishComplete();
85 private: std::string topic;
86 private: std::string msgType;
87 private:
unsigned int queueLimit;
88 private: std::list<google::protobuf::Message *> messages;
89 private: boost::recursive_mutex *mutex;
93 private: google::protobuf::Message *prevMsg;