Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
ros::TopicManager Class Reference

#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. More...
 
size_t getNumPublishers (const std::string &_topic)
 Return the number of publishers connected to this node on a particular topic. More...
 
size_t getNumSubscribers (const std::string &_topic)
 Return the number of subscribers a node has for a particular topic: More...
 
size_t getNumSubscriptions ()
 
void getSubscribedTopics (V_string &topics)
 Get the list of topics subscribed to by this node. More...
 
void incrementSequence (const std::string &_topic)
 
bool isLatched (const std::string &topic)
 
PublicationPtr lookupPublication (const std::string &topic)
 Lookup an advertised topic. More...
 
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 TopicManagerPtrinstance ()
 

Private Member Functions

bool addSubCallback (const SubscribeOptions &ops)
 
void getBusInfo (XmlRpc::XmlRpcValue &info)
 Compute the info for the node's connectivity. More...
 
void getBusInfoCallback (XmlRpc::XmlRpcValue &params, XmlRpc::XmlRpcValue &result)
 
void getBusStats (XmlRpc::XmlRpcValue &stats)
 Compute the statistics for the node's connectivity. More...
 
void getBusStatsCallback (XmlRpc::XmlRpcValue &params, XmlRpc::XmlRpcValue &result)
 
void getPublications (XmlRpc::XmlRpcValue &publications)
 Return the list of advertised topics for the node. More...
 
void getPublicationsCallback (XmlRpc::XmlRpcValue &params, XmlRpc::XmlRpcValue &result)
 
void getSubscriptions (XmlRpc::XmlRpcValue &subscriptions)
 Return the list of subcriptions for the node. More...
 
void getSubscriptionsCallback (XmlRpc::XmlRpcValue &params, 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. More...
 
void pubUpdateCallback (XmlRpc::XmlRpcValue &params, 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. More...
 
void requestTopicCallback (XmlRpc::XmlRpcValue &params, 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_
 

Detailed Description

Definition at line 64 of file topic_manager.h.

Constructor & Destructor Documentation

◆ TopicManager()

ros::TopicManager::TopicManager ( )

Definition at line 63 of file topic_manager.cpp.

◆ ~TopicManager()

ros::TopicManager::~TopicManager ( )

Definition at line 68 of file topic_manager.cpp.

Member Function Documentation

◆ addSubCallback()

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 199 of file topic_manager.cpp.

◆ advertise()

bool ros::TopicManager::advertise ( const AdvertiseOptions ops,
const SubscriberCallbacksPtr callbacks 
)

Definition at line 294 of file topic_manager.cpp.

◆ getAdvertisedTopics()

void ros::TopicManager::getAdvertisedTopics ( V_string topics)

Get the list of topics advertised by this node.

Parameters
[out]topicsThe advertised topics

Definition at line 163 of file topic_manager.cpp.

◆ getBusInfo()

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.

Definition at line 938 of file topic_manager.cpp.

◆ getBusInfoCallback()

void ros::TopicManager::getBusInfoCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1040 of file topic_manager.cpp.

◆ getBusStats()

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.

Definition at line 905 of file topic_manager.cpp.

◆ getBusStatsCallback()

void ros::TopicManager::getBusStatsCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1030 of file topic_manager.cpp.

◆ getNumPublishers()

size_t ros::TopicManager::getNumPublishers ( const std::string &  _topic)

Return the number of publishers connected to this node on a particular topic.

Parameters
_topicthe topic name to check
Returns
the number of subscribers

Definition at line 884 of file topic_manager.cpp.

◆ getNumSubscribers()

size_t ros::TopicManager::getNumSubscribers ( const std::string &  _topic)

Return the number of subscribers a node has for a particular topic:

Parameters
_topicThe topic name to check
Returns
number of subscribers

Definition at line 860 of file topic_manager.cpp.

◆ getNumSubscriptions()

size_t ros::TopicManager::getNumSubscriptions ( )

Definition at line 878 of file topic_manager.cpp.

◆ getPublications()

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.

Definition at line 983 of file topic_manager.cpp.

◆ getPublicationsCallback()

void ros::TopicManager::getPublicationsCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1060 of file topic_manager.cpp.

◆ getSubscribedTopics()

void ros::TopicManager::getSubscribedTopics ( V_string topics)

Get the list of topics subscribed to by this node.

Parameters
[out]Thesubscribed topics

Definition at line 173 of file topic_manager.cpp.

◆ getSubscriptions()

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.

Definition at line 963 of file topic_manager.cpp.

◆ getSubscriptionsCallback()

void ros::TopicManager::getSubscriptionsCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1050 of file topic_manager.cpp.

◆ incrementSequence()

void ros::TopicManager::incrementSequence ( const std::string &  _topic)

Definition at line 763 of file topic_manager.cpp.

◆ instance()

const TopicManagerPtr & ros::TopicManager::instance ( )
static

Definition at line 57 of file topic_manager.cpp.

◆ isLatched()

bool ros::TopicManager::isLatched ( const std::string &  topic)

Definition at line 772 of file topic_manager.cpp.

◆ isShuttingDown()

bool ros::TopicManager::isShuttingDown ( )
inlineprivate

Definition at line 220 of file topic_manager.h.

◆ isTopicAdvertised()

bool ros::TopicManager::isTopicAdvertised ( const std::string &  topic)
private

Definition at line 463 of file topic_manager.cpp.

◆ lookupPublication()

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.

Parameters
topicThe topic name to look for.
Returns
Pointer to the matching Publication, NULL if none is found.

Definition at line 187 of file topic_manager.cpp.

◆ lookupPublicationWithoutLock()

PublicationPtr ros::TopicManager::lookupPublicationWithoutLock ( const std::string &  topic)
private

Definition at line 783 of file topic_manager.cpp.

◆ processPublishQueues()

void ros::TopicManager::processPublishQueues ( )
private

Definition at line 150 of file topic_manager.cpp.

◆ publish() [1/2]

void ros::TopicManager::publish ( const std::string &  _topic,
const boost::function< SerializedMessage(void)> &  serfunc,
SerializedMessage m 
)

Definition at line 705 of file topic_manager.cpp.

◆ publish() [2/2]

template<typename M >
void ros::TopicManager::publish ( const std::string &  topic,
const M &  message 
)
inline

Definition at line 123 of file topic_manager.h.

◆ pubUpdate()

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.

Parameters
topicThe topic of interest
pubsThe list of publishers to update.
Returns
true on success, false otherwise.

Definition at line 551 of file topic_manager.cpp.

◆ pubUpdateCallback()

void ros::TopicManager::pubUpdateCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1005 of file topic_manager.cpp.

◆ registerSubscriber()

bool ros::TopicManager::registerSubscriber ( const SubscriptionPtr s,
const std::string &  datatype 
)
private

Definition at line 476 of file topic_manager.cpp.

◆ requestTopic()

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.

Parameters
topicThe topic of interest.
protosList of transport protocols, in preference order
retReturn value
Returns
true on success, false otherwise
Todo:
Consider making this private

Definition at line 589 of file topic_manager.cpp.

◆ requestTopicCallback()

void ros::TopicManager::requestTopicCallback ( XmlRpc::XmlRpcValue params,
XmlRpc::XmlRpcValue result 
)
private

Definition at line 1022 of file topic_manager.cpp.

◆ shutdown()

void ros::TopicManager::shutdown ( )

Definition at line 92 of file topic_manager.cpp.

◆ start()

void ros::TopicManager::start ( )

Definition at line 73 of file topic_manager.cpp.

◆ subscribe()

bool ros::TopicManager::subscribe ( const SubscribeOptions ops)

Definition at line 247 of file topic_manager.cpp.

◆ unadvertise()

bool ros::TopicManager::unadvertise ( const std::string &  topic,
const SubscriberCallbacksPtr callbacks 
)

Definition at line 403 of file topic_manager.cpp.

◆ unregisterPublisher()

bool ros::TopicManager::unregisterPublisher ( const std::string &  topic)
private

Definition at line 452 of file topic_manager.cpp.

◆ unregisterSubscriber()

bool ros::TopicManager::unregisterSubscriber ( const std::string &  topic)
private

Definition at line 539 of file topic_manager.cpp.

◆ unsubscribe()

bool ros::TopicManager::unsubscribe ( const std::string &  _topic,
const SubscriptionCallbackHelperPtr helper 
)

Definition at line 799 of file topic_manager.cpp.

Member Data Documentation

◆ advertised_topic_names_

std::list<std::string> ros::TopicManager::advertised_topic_names_
private

Definition at line 227 of file topic_manager.h.

◆ advertised_topic_names_mutex_

boost::mutex ros::TopicManager::advertised_topic_names_mutex_
private

Definition at line 228 of file topic_manager.h.

◆ advertised_topics_

V_Publication ros::TopicManager::advertised_topics_
private

Definition at line 226 of file topic_manager.h.

◆ advertised_topics_mutex_

boost::recursive_mutex ros::TopicManager::advertised_topics_mutex_
private

Definition at line 225 of file topic_manager.h.

◆ connection_manager_

ConnectionManagerPtr ros::TopicManager::connection_manager_
private

Definition at line 234 of file topic_manager.h.

◆ poll_manager_

PollManagerPtr ros::TopicManager::poll_manager_
private

Definition at line 233 of file topic_manager.h.

◆ shutting_down_

volatile bool ros::TopicManager::shutting_down_
private

Definition at line 230 of file topic_manager.h.

◆ shutting_down_mutex_

boost::mutex ros::TopicManager::shutting_down_mutex_
private

Definition at line 231 of file topic_manager.h.

◆ subs_mutex_

boost::mutex ros::TopicManager::subs_mutex_
private

Definition at line 222 of file topic_manager.h.

◆ subscriptions_

L_Subscription ros::TopicManager::subscriptions_
private

Definition at line 223 of file topic_manager.h.

◆ xmlrpc_manager_

XMLRPCManagerPtr ros::TopicManager::xmlrpc_manager_
private

Definition at line 235 of file topic_manager.h.


The documentation for this class was generated from the following files:


roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim, Dirk Thomas , Jacob Perron
autogenerated on Tue May 20 2025 03:00:12