Master.hh
00001 #ifndef MASTER_HH 00002 #define MASTER_HH 00003 00004 #include <string> 00005 #include <list> 00006 #include <deque> 00007 #include <boost/shared_ptr.hpp> 00008 00009 #include "msgs/msgs.h" 00010 #include "transport/Connection.hh" 00011 00012 namespace gazebo 00013 { 00014 00015 class Master 00016 { 00018 public: Master(); 00019 00021 public: virtual ~Master(); 00022 00025 public: void Init(unsigned short _port); 00026 00027 public: void Run(); 00028 00030 public: void RunThread(); 00031 00033 public: void RunOnce(); 00034 00036 public: void Stop(); 00037 00039 public: void Fini(); 00040 00045 private: void ProcessMessage(const unsigned int _connectionIndex, 00046 const std::string &_data); 00047 00052 private: void OnRead(const unsigned int _connectionIndex, 00053 const std::string &_data); 00054 00057 private: void OnAccept(const transport::ConnectionPtr &_newConnection); 00058 00062 private: msgs::Publish GetPublisher( const std::string &_topic ); 00063 00068 private: transport::ConnectionPtr FindConnection(const std::string &_host, 00069 unsigned short _port); 00070 00071 00072 private: void RemoveConnection(unsigned int _index); 00073 private: void RemovePublisher(const msgs::Publish _pub); 00074 private: void RemoveSubscriber(const msgs::Subscribe _sub); 00075 00076 typedef std::map<unsigned int, transport::ConnectionPtr> Connection_M; 00077 typedef std::list< std::pair<msgs::Publish, transport::ConnectionPtr> > PubList; 00078 typedef std::list< std::pair<msgs::Subscribe, transport::ConnectionPtr> > SubList; 00079 private: PubList publishers; 00080 private: SubList subscribers; 00081 00082 private: Connection_M connections; 00083 private: std::list< std::string > worldNames; 00084 private: std::list< std::pair<unsigned int, std::string> > msgs; 00085 00086 private: transport::Connection *connection; 00087 private: boost::thread *runThread; 00088 private: bool stop; 00089 00090 private: boost::recursive_mutex *connectionMutex, *msgsMutex; 00091 }; 00092 } 00093 00094 #endif

1.7.5.1