21 #ifndef _PUBLISHER_HH_ 
   22 #define _PUBLISHER_HH_ 
   24 #include <google/protobuf/message.h> 
   25 #include <boost/thread.hpp> 
   51       public: 
Publisher(
const std::string &_topic, 
const std::string &_msgType,
 
   52                         unsigned int _limit, 
double _hzRate);
 
   59       public: 
bool HasConnections() 
const;
 
   63       public: 
void WaitForConnection() 
const;
 
   70       public: 
bool WaitForConnection(
const common::Time &_timeout) 
const;
 
   80       public: 
void Publish(
const google::protobuf::Message &_message,
 
   82               { this->PublishImpl(_message, _block); }
 
   88       public: 
template< 
typename M>
 
   89               void Publish(M _message, 
bool _block = 
false)
 
   90               { this->PublishImpl(_message, _block); }
 
   94       public: 
unsigned int GetOutgoingCount() 
const;
 
   98       public: std::string GetTopic() 
const;
 
  102       public: std::string GetMsgType() 
const;
 
  105       public: 
void SendMessage();
 
  110       public: 
void SetNode(
NodePtr _node);
 
  114       public: std::string GetPrevMsg() 
const;
 
  125       public: uint32_t Id() 
const;
 
  131       private: 
void PublishImpl(
const google::protobuf::Message &_message,
 
  136       private: 
void OnPublishComplete(uint32_t _id);
 
  139       private: std::string topic;
 
  142       private: std::string msgType;
 
  146       private: 
unsigned int queueLimit;
 
  150       private: 
double updatePeriod;
 
  154       private: 
bool queueLimitWarned;
 
  157       private: std::list<MessagePtr> messages;
 
  160       private: 
mutable boost::mutex mutex;
 
  173       private: uint32_t pubId;
 
  176       private: std::map<uint32_t, int> pubIds;
 
  179       private: uint32_t id;
 
  182       private: 
static uint32_t idCounter;
 
void Publish(M _message, bool _block=false)
Publish an arbitrary message on the topic. 
Definition: Publisher.hh:89
boost::shared_ptr< google::protobuf::Message > MessagePtr
Definition: TransportTypes.hh:45
Forward declarations for transport. 
boost::shared_ptr< Node > NodePtr
Definition: TransportTypes.hh:57
void Publish(const google::protobuf::Message &_message, bool _block=false)
Publish a protobuf message on the topic. 
Definition: Publisher.hh:80
boost::shared_ptr< Publication > PublicationPtr
Definition: TransportTypes.hh:61
A publisher of messages on a topic. 
Definition: Publisher.hh:43
A Time class, can be used to hold wall- or sim-time. 
Definition: Time.hh:44