#include <topic_manager.h>
Public Member Functions | |
| bool | advertise (const AdvertiseOptions &ops, const SubscriberCallbacksPtr &callbacks) |
| void | getAdvertisedTopics (V_string &topics) |
| Get the list of topics advertised by this node. | |
| size_t | getNumPublishers (const std::string &_topic) |
| Return the number of publishers connected to this node on a particular topic. | |
| size_t | getNumSubscribers (const std::string &_topic) |
| Return the number of subscribers a node has for a particular topic: | |
| size_t | getNumSubscriptions () |
| void | getSubscribedTopics (V_string &topics) |
| Get the list of topics subscribed to by this node. | |
| void | incrementSequence (const std::string &_topic) |
| bool | isLatched (const std::string &topic) |
| PublicationPtr | lookupPublication (const std::string &topic) |
| Lookup an advertised topic. | |
| void | publish (const std::string &_topic, const boost::function< SerializedMessage(void)> &serfunc, SerializedMessage &m) |
| template<typename M > | |
| void | publish (const std::string &topic, const M &message) |
| void | shutdown () |
| void | start () |
| bool | subscribe (const SubscribeOptions &ops) |
| TopicManager () | |
| bool | unadvertise (const std::string &topic, const SubscriberCallbacksPtr &callbacks) |
| bool | unsubscribe (const std::string &_topic, const SubscriptionCallbackHelperPtr &helper) |
| ~TopicManager () | |
Static Public Member Functions | |
| static const TopicManagerPtr & | instance () |
Private Member Functions | |
| bool | addSubCallback (const SubscribeOptions &ops) |
| void | getBusInfo (XmlRpc::XmlRpcValue &info) |
| Compute the info for the node's connectivity. | |
| void | getBusInfoCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| void | getBusStats (XmlRpc::XmlRpcValue &stats) |
| Compute the statistics for the node's connectivity. | |
| void | getBusStatsCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| void | getPublications (XmlRpc::XmlRpcValue &publications) |
| Return the list of advertised topics for the node. | |
| void | getPublicationsCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| void | getSubscriptions (XmlRpc::XmlRpcValue &subscriptions) |
| Return the list of subcriptions for the node. | |
| void | getSubscriptionsCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| bool | isShuttingDown () |
| bool | isTopicAdvertised (const std::string &topic) |
| PublicationPtr | lookupPublicationWithoutLock (const std::string &topic) |
| void | processPublishQueues () |
| bool | pubUpdate (const std::string &topic, const std::vector< std::string > &pubs) |
| Update local publisher lists. | |
| void | pubUpdateCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| bool | registerSubscriber (const SubscriptionPtr &s, const std::string &datatype) |
| bool | requestTopic (const std::string &topic, XmlRpc::XmlRpcValue &protos, XmlRpc::XmlRpcValue &ret) |
| Request a topic. | |
| void | requestTopicCallback (XmlRpc::XmlRpcValue ¶ms, XmlRpc::XmlRpcValue &result) |
| bool | unregisterPublisher (const std::string &topic) |
| bool | unregisterSubscriber (const std::string &topic) |
Private Attributes | |
| std::list< std::string > | advertised_topic_names_ |
| boost::mutex | advertised_topic_names_mutex_ |
| V_Publication | advertised_topics_ |
| boost::recursive_mutex | advertised_topics_mutex_ |
| ConnectionManagerPtr | connection_manager_ |
| PollManagerPtr | poll_manager_ |
| volatile bool | shutting_down_ |
| boost::mutex | shutting_down_mutex_ |
| boost::mutex | subs_mutex_ |
| L_Subscription | subscriptions_ |
| XMLRPCManagerPtr | xmlrpc_manager_ |
Definition at line 56 of file topic_manager.h.
| ros::TopicManager::TopicManager | ( | ) |
Definition at line 72 of file topic_manager.cpp.
| ros::TopicManager::~TopicManager | ( | ) |
Definition at line 77 of file topic_manager.cpp.
| bool ros::TopicManager::addSubCallback | ( | const SubscribeOptions & | ops | ) | [private] |
if it finds a pre-existing subscription to the same topic and of the same message type, it appends the Functor to the callback vector for that subscription. otherwise, it returns false, indicating that a new subscription needs to be created.
Definition at line 204 of file topic_manager.cpp.
| bool ros::TopicManager::advertise | ( | const AdvertiseOptions & | ops, | |
| const SubscriberCallbacksPtr & | callbacks | |||
| ) |
Definition at line 299 of file topic_manager.cpp.
| void ros::TopicManager::getAdvertisedTopics | ( | V_string & | topics | ) |
Get the list of topics advertised by this node.
| [out] | topics | The advertised topics |
Definition at line 168 of file topic_manager.cpp.
| void ros::TopicManager::getBusInfo | ( | XmlRpc::XmlRpcValue & | info | ) | [private] |
Compute the info for the node's connectivity.
This is the implementation of the xml-rpc getBusInfo function; it populates the XmlRpcValue object sent to it with various info about the node's connectivity.
| void ros::TopicManager::getBusInfoCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 1032 of file topic_manager.cpp.
| void ros::TopicManager::getBusStats | ( | XmlRpc::XmlRpcValue & | stats | ) | [private] |
Compute the statistics for the node's connectivity.
This is the implementation of the xml-rpc getBusStats function; it populates the XmlRpcValue object sent to it with various statistics about the node's connectivity, bandwidth utilization, etc.
| void ros::TopicManager::getBusStatsCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 1023 of file topic_manager.cpp.
| size_t ros::TopicManager::getNumPublishers | ( | const std::string & | _topic | ) |
Return the number of publishers connected to this node on a particular topic.
| _topic | the topic name to check |
Definition at line 863 of file topic_manager.cpp.
| size_t ros::TopicManager::getNumSubscribers | ( | const std::string & | _topic | ) |
Return the number of subscribers a node has for a particular topic:
| _topic | The topic name to check |
Definition at line 839 of file topic_manager.cpp.
| size_t ros::TopicManager::getNumSubscriptions | ( | ) |
Definition at line 857 of file topic_manager.cpp.
| void ros::TopicManager::getPublications | ( | XmlRpc::XmlRpcValue & | publications | ) | [private] |
Return the list of advertised topics for the node.
This is the implementation of the xml-rpc getPublications function; it populates the XmlRpcValue object sent to it with the list of advertised topics and their datatypes.
| void ros::TopicManager::getPublicationsCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 1050 of file topic_manager.cpp.
| void ros::TopicManager::getSubscribedTopics | ( | V_string & | topics | ) |
Get the list of topics subscribed to by this node.
| [out] | The | subscribed topics |
Definition at line 178 of file topic_manager.cpp.
| void ros::TopicManager::getSubscriptions | ( | XmlRpc::XmlRpcValue & | subscriptions | ) | [private] |
Return the list of subcriptions for the node.
This is the implementation of the xml-rpc getSubscriptions function; it populates the XmlRpcValue object sent to it with the list of subscribed topics and their datatypes.
| void ros::TopicManager::getSubscriptionsCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 1041 of file topic_manager.cpp.
| void ros::TopicManager::incrementSequence | ( | const std::string & | _topic | ) |
Definition at line 751 of file topic_manager.cpp.
| const TopicManagerPtr & ros::TopicManager::instance | ( | ) | [static] |
Definition at line 58 of file topic_manager.cpp.
| bool ros::TopicManager::isLatched | ( | const std::string & | topic | ) |
Definition at line 760 of file topic_manager.cpp.
| bool ros::TopicManager::isShuttingDown | ( | ) | [inline, private] |
Definition at line 212 of file topic_manager.h.
| bool ros::TopicManager::isTopicAdvertised | ( | const std::string & | topic | ) | [private] |
| PublicationPtr ros::TopicManager::lookupPublication | ( | const std::string & | topic | ) |
Lookup an advertised topic.
This method iterates over advertised_topics, looking for one with name matching the given topic name. The advertised_topics_mutex is locked during this search. This method is only used internally.
| topic | The topic name to look for. |
Definition at line 192 of file topic_manager.cpp.
| PublicationPtr ros::TopicManager::lookupPublicationWithoutLock | ( | const std::string & | topic | ) | [private] |
| void ros::TopicManager::processPublishQueues | ( | ) | [private] |
Definition at line 155 of file topic_manager.cpp.
| void ros::TopicManager::publish | ( | const std::string & | _topic, | |
| const boost::function< SerializedMessage(void)> & | serfunc, | |||
| SerializedMessage & | m | |||
| ) |
Definition at line 693 of file topic_manager.cpp.
| void ros::TopicManager::publish | ( | const std::string & | topic, | |
| const M & | message | |||
| ) | [inline] |
Definition at line 115 of file topic_manager.h.
| bool ros::TopicManager::pubUpdate | ( | const std::string & | topic, | |
| const std::vector< std::string > & | pubs | |||
| ) | [private] |
Update local publisher lists.
Use this method to update address information for publishers on a given topic.
| topic | The topic of interest | |
| pubs | The list of publishers to update. |
| void ros::TopicManager::pubUpdateCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 986 of file topic_manager.cpp.
| bool ros::TopicManager::registerSubscriber | ( | const SubscriptionPtr & | s, | |
| const std::string & | datatype | |||
| ) | [private] |
| bool ros::TopicManager::requestTopic | ( | const std::string & | topic, | |
| XmlRpc::XmlRpcValue & | protos, | |||
| XmlRpc::XmlRpcValue & | ret | |||
| ) | [private] |
Request a topic.
Negotiate a subscriber connection on a topic.
| topic | The topic of interest. | |
| protos | List of transport protocols, in preference order | |
| ret | Return value |
| void ros::TopicManager::requestTopicCallback | ( | XmlRpc::XmlRpcValue & | params, | |
| XmlRpc::XmlRpcValue & | result | |||
| ) | [private] |
Definition at line 1009 of file topic_manager.cpp.
| void ros::TopicManager::shutdown | ( | ) |
Definition at line 101 of file topic_manager.cpp.
| void ros::TopicManager::start | ( | ) |
Definition at line 82 of file topic_manager.cpp.
| bool ros::TopicManager::subscribe | ( | const SubscribeOptions & | ops | ) |
Definition at line 252 of file topic_manager.cpp.
| bool ros::TopicManager::unadvertise | ( | const std::string & | topic, | |
| const SubscriberCallbacksPtr & | callbacks | |||
| ) |
Definition at line 408 of file topic_manager.cpp.
| bool ros::TopicManager::unregisterPublisher | ( | const std::string & | topic | ) | [private] |
Definition at line 457 of file topic_manager.cpp.
| bool ros::TopicManager::unregisterSubscriber | ( | const std::string & | topic | ) | [private] |
| bool ros::TopicManager::unsubscribe | ( | const std::string & | _topic, | |
| const SubscriptionCallbackHelperPtr & | helper | |||
| ) |
Definition at line 787 of file topic_manager.cpp.
std::list<std::string> ros::TopicManager::advertised_topic_names_ [private] |
Definition at line 219 of file topic_manager.h.
boost::mutex ros::TopicManager::advertised_topic_names_mutex_ [private] |
Definition at line 220 of file topic_manager.h.
Definition at line 218 of file topic_manager.h.
boost::recursive_mutex ros::TopicManager::advertised_topics_mutex_ [private] |
Definition at line 217 of file topic_manager.h.
Definition at line 226 of file topic_manager.h.
Definition at line 225 of file topic_manager.h.
volatile bool ros::TopicManager::shutting_down_ [private] |
Definition at line 222 of file topic_manager.h.
boost::mutex ros::TopicManager::shutting_down_mutex_ [private] |
Definition at line 223 of file topic_manager.h.
boost::mutex ros::TopicManager::subs_mutex_ [private] |
Definition at line 214 of file topic_manager.h.
Definition at line 215 of file topic_manager.h.
Definition at line 227 of file topic_manager.h.