Publication.hh
00001 #ifndef PUBLICATION_HH 00002 #define PUBLICATION_HH 00003 00004 #include <boost/shared_ptr.hpp> 00005 #include <list> 00006 00007 #include "transport/CallbackHelper.hh" 00008 #include "transport/TransportTypes.hh" 00009 #include "transport/PublicationTransport.hh" 00010 00011 namespace gazebo 00012 { 00013 namespace transport 00014 { 00017 00020 class Publication 00021 { 00023 public: Publication( const std::string &topic, 00024 const std::string &msgType ); 00025 00027 public: virtual ~Publication(); 00028 00030 public: std::string GetTopic() const; 00031 00033 public: std::string GetMsgType() const; 00034 00035 public: void AddSubscription(const CallbackHelperPtr &callback); 00036 public: void AddSubscription(const NodePtr &_node); 00037 00038 public: void RemoveSubscription(const CallbackHelperPtr &callback); 00039 public: void RemoveSubscription(const NodePtr &_node); 00040 00042 public: void RemoveSubscription(const std::string &host, unsigned int port); 00043 00044 public: void RemoveTransport(const std::string &host, unsigned int port); 00045 00046 public: unsigned int GetTransportCount() const; 00047 public: unsigned int GetCallbackCount() const; 00048 public: unsigned int GetNodeCount() const; 00049 public: unsigned int GetRemoteSubscriptionCount(); 00050 00053 public: bool GetLocallyAdvertised() const; 00054 00056 public: void SetLocallyAdvertised(bool _value); 00057 00059 public: void Publish(const std::string &data); 00060 public: void LocalPublish(const std::string &data); 00061 00062 public: void Publish(const google::protobuf::Message &msg, 00063 const boost::function<void()> &cb = NULL); 00064 00065 public: void AddTransport( const PublicationTransportPtr &publink ); 00066 public: bool HasTransport( const std::string &_host, unsigned int _port ); 00067 00068 public: void AddPublisher(PublisherPtr _pub); 00069 public: void RemovePublisher(); 00070 00071 private: unsigned int id; 00072 private: static unsigned int idCounter; 00073 private: std::string topic; 00074 private: std::string msgType; 00075 00077 private: std::list<CallbackHelperPtr> callbacks; 00078 00080 private: std::list<NodePtr> nodes; 00081 00082 private: std::list<PublicationTransportPtr> transports; 00083 00084 private: std::vector<PublisherPtr> publishers; 00085 00086 private: bool locallyAdvertised; 00087 }; 00089 } 00090 } 00091 #endif

1.7.5.1