18 #ifndef _PUBLICATION_HH_    19 #define _PUBLICATION_HH_    22 #include <boost/function.hpp>    23 #include <boost/shared_ptr.hpp>    24 #include <boost/thread/mutex.hpp>    51                            const std::string &_msgType);
    58       public: std::string GetMsgType() 
const;
    66       public: 
void AddSubscription(
const NodePtr &_node);
    70       public: 
void RemoveSubscription(
const NodePtr &_node);
    75       public: 
void RemoveSubscription(
const std::string &_host,
    81       public: 
void RemoveTransport(
const std::string &_host, 
unsigned    86       public: 
unsigned int GetTransportCount() 
const;
    90       public: 
unsigned int GetCallbackCount() 
const;
    94       public: 
unsigned int PublisherCount() 
const;
    98       public: 
unsigned int GetNodeCount() 
const;
   102       public: 
unsigned int GetRemoteSubscriptionCount();
   107       public: 
bool GetLocallyAdvertised() 
const;
   112       public: 
void SetLocallyAdvertised(
bool _value);
   116       public: 
void LocalPublish(
const std::string &_data);
   125                   boost::function<
void(uint32_t)> _cb,
   135       public: 
bool RemovePublisher(
const uint32_t 
id);
   140       public: 
void SetPrevMsg(uint32_t _pubId, 
MessagePtr _msg);
   146       public: 
MessagePtr GetPrevMsg(uint32_t _pubId);
   149       public: 
void ClearPrevMsgs();
   160       public: 
bool HasTransport(
const std::string &_host, 
unsigned int _port);
   167       private: 
void RemoveNodes();
   170       private: 
unsigned int id;
   173       private: 
static unsigned int idCounter;
   176       private: std::string topic;
   179       private: std::string msgType;
   182       private: std::list<CallbackHelperPtr> callbacks;
   185       private: std::list<NodePtr> nodes;
   188       private: std::list<unsigned int> removeNodes;
   191       private: std::list<std::pair<std::string, unsigned int> > removeCallbacks;
   194       private: std::list<PublicationTransportPtr> transports;
   197       private: std::vector<PublisherPtr> publishers;
   200       private: 
bool locallyAdvertised;
   203       private: 
mutable boost::mutex nodeMutex;
   206       private: 
mutable boost::mutex callbackMutex;
   209       private: 
mutable boost::mutex nodeRemoveMutex;
   212       private: std::map<uint32_t, MessagePtr> prevMsgs;
 Forward declarations for the common classes. 
Definition: Animation.hh:33
 
boost::shared_ptr< google::protobuf::Message > MessagePtr
Definition: TransportTypes.hh:45
 
Forward declarations for transport. 
 
boost::shared_ptr< Publisher > PublisherPtr
Definition: TransportTypes.hh:49
 
boost::shared_ptr< CallbackHelper > CallbackHelperPtr
boost shared pointer to transport::CallbackHelper 
Definition: CallbackHelper.hh:105
 
boost::shared_ptr< Node > NodePtr
Definition: TransportTypes.hh:57
 
A publication for a topic. 
Definition: Publication.hh:45
 
boost::shared_ptr< PublicationTransport > PublicationTransportPtr
Definition: TransportTypes.hh:65