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 transport.
A publication for a topic.
Definition: Publication.hh:45
boost::shared_ptr< google::protobuf::Message > MessagePtr
Definition: TransportTypes.hh:45
boost::shared_ptr< Node > NodePtr
Definition: TransportTypes.hh:57
#define GZ_TRANSPORT_VISIBLE
Definition: system.hh:159
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< PublicationTransport > PublicationTransportPtr
Definition: TransportTypes.hh:65