TopicManager Class Reference

Manages topics and their subscriptions. More...

#include <transport/transport.hh>

Inherits SingletonT< TopicManager >.

Public Types

typedef std::map< std::string, std::list< NodePtr > > SubNodeMap
 A map of string->list of Node pointers.
 

Public Member Functions

void AddNode (NodePtr _node)
 Add a node to the manager.
 
void AddNodeToProcess (NodePtr _ptr)
 Add a node to the list of nodes that requires processing.
 
PublisherPtr Advertise (const std::string &_topic, const std::string &_msgTypeName, unsigned int _queueLimit, double _hzRate)
 Advertise on a topic.
 
template<typename M >
PublisherPtr Advertise (const std::string &_topic, unsigned int _queueLimit, double _hzRate)
 Advertise on a topic.
 
void ClearBuffers ()
 Clear all buffers.
 
void ConnectPubToSub (const std::string &_topic, const SubscriptionTransportPtr _sublink)
 Connection a local Publisher to a remote Subscriber.
 
void ConnectSubscribers (const std::string &_topic)
 Connect all subscribers on a topic to known publishers.
 
void ConnectSubToPub (const msgs::Publish &_pub)
 Connect a local Subscriber to a remote Publisher.
 
void DisconnectPubFromSub (const std::string &_topic, const std::string &_host, unsigned int _port)
 Disconnect a local publisher from a remote subscriber.
 
void DisconnectSubFromPub (const std::string &_topic, const std::string &_host, unsigned int _port)
 Disconnect all local subscribers from a remote publisher.
 
PublicationPtr FindPublication (const std::string &_topic)
 Find a publication object by topic.
 
void Fini ()
 Finalize the manager.
 
void GetTopicNamespaces (std::list< std::string > &_namespaces)
 Get all the topic namespaces.
 
void Init ()
 Initialize the manager.
 
void PauseIncoming (bool _pause)
 Pause or unpause processing of incoming messages.
 
void ProcessNodes (bool _onlyOut=false)
 Process all nodes under management.
 
void Publish (const std::string &_topic, MessagePtr _message, boost::function< void(uint32_t)> _cb, uint32_t _id)
 Send a message.
 
void RegisterTopicNamespace (const std::string &_name)
 Register a new topic namespace.
 
void RemoveNode (unsigned int _id)
 Remove a node by its id.
 
SubscriberPtr Subscribe (const SubscribeOptions &_options)
 Subscribe to a topic.
 
void Unadvertise (const std::string &_topic)
 Unadvertise a topic.
 
void Unadvertise (const std::string &_topic, const uint32_t _id)
 Unadvertise a publisher, based on a publisher id.
 
void Unadvertise (PublisherPtr _pub)
 Unadvertise a publisher.
 
void Unsubscribe (const std::string &_topic, const NodePtr &_sub)
 Unsubscribe from a topic.
 
PublicationPtr UpdatePublications (const std::string &_topic, const std::string &_msgType)
 Update our list of advertised topics.
 

Static Public Member Functions

static TopicManagerInstance ()
 Get an instance of the singleton.
 

Detailed Description

Manages topics and their subscriptions.

Member Typedef Documentation

◆ SubNodeMap

typedef std::map<std::string, std::list<NodePtr> > SubNodeMap

A map of string->list of Node pointers.

Member Function Documentation

◆ AddNode()

void AddNode ( NodePtr _node)

Add a node to the manager.

Parameters
[in,out]_nodeThe node to be added

◆ AddNodeToProcess()

void AddNodeToProcess ( NodePtr _ptr)

Add a node to the list of nodes that requires processing.

Parameters
[in]_ptrNode to process.

◆ Advertise() [1/2]

PublisherPtr Advertise ( const std::string & _topic,
const std::string & _msgTypeName,
unsigned int _queueLimit,
double _hzRate )
inline

Advertise on a topic.

Parameters
[in]_topicThe name of the topic
[in]_queueLimitThe maximum number of outgoing messages to queue
[in]_hzUpdate rate for the publisher. Units are 1.0/seconds.
Returns
Pointer to the newly created Publisher

References GZ_ASSERT.

◆ Advertise() [2/2]

template<typename M >
PublisherPtr Advertise ( const std::string & _topic,
unsigned int _queueLimit,
double _hzRate )
inline

Advertise on a topic.

Parameters
[in]_topicThe name of the topic
[in]_queueLimitThe maximum number of outgoing messages to queue
[in]_hzUpdate rate for the publisher. Units are 1.0/seconds.
Returns
Pointer to the newly created Publisher

References gzthrow.

◆ ClearBuffers()

void ClearBuffers ( )

Clear all buffers.

◆ ConnectPubToSub()

void ConnectPubToSub ( const std::string & _topic,
const SubscriptionTransportPtr _sublink )

Connection a local Publisher to a remote Subscriber.

Parameters
[in]_topicThe topic to use
[in]_sublinkThe subscription transport object to use

◆ ConnectSubscribers()

void ConnectSubscribers ( const std::string & _topic)

Connect all subscribers on a topic to known publishers.

Parameters
[in]_topicThe topic to be connected

◆ ConnectSubToPub()

void ConnectSubToPub ( const msgs::Publish & _pub)

Connect a local Subscriber to a remote Publisher.

Parameters
[in]_pubThe publish object to use

◆ DisconnectPubFromSub()

void DisconnectPubFromSub ( const std::string & _topic,
const std::string & _host,
unsigned int _port )

Disconnect a local publisher from a remote subscriber.

Parameters
[in]_topicThe topic to be disconnected
[in]_hostThe host to be disconnected
[in]_portThe port to be disconnected

◆ DisconnectSubFromPub()

void DisconnectSubFromPub ( const std::string & _topic,
const std::string & _host,
unsigned int _port )

Disconnect all local subscribers from a remote publisher.

Parameters
[in]_topicThe topic to be disconnected
[in]_hostThe host to be disconnected
[in]_portThe port to be disconnected

◆ FindPublication()

PublicationPtr FindPublication ( const std::string & _topic)

Find a publication object by topic.

Parameters
[in]_topicThe topic to search for
Returns
Pointer to the publication object, if found (can be null)

◆ Fini()

void Fini ( )

Finalize the manager.

◆ GetTopicNamespaces()

void GetTopicNamespaces ( std::list< std::string > & _namespaces)

Get all the topic namespaces.

Parameters
[out]_namespacesThe list of namespaces will be written here

◆ Init()

void Init ( )

Initialize the manager.

◆ Instance()

static TopicManager * Instance ( )
inlinestaticinherited

Get an instance of the singleton.

◆ PauseIncoming()

void PauseIncoming ( bool _pause)

Pause or unpause processing of incoming messages.

Parameters
[in]_pauseIf true pause processing; otherwse unpause

◆ ProcessNodes()

void ProcessNodes ( bool _onlyOut = false)

Process all nodes under management.

Parameters
[in]_onlyOutTrue means only outbound messages on nodes will be sent. False means nodes process both outbound and inbound messages

◆ Publish()

void Publish ( const std::string & _topic,
MessagePtr _message,
boost::function< void(uint32_t)> _cb,
uint32_t _id )

Send a message.

Use a Publisher instead of calling this function directly.

Parameters
[in]_topicName of the topic
[in]_messageThe message to send.
[in]_cbCallback, used when the publish is completed.
[in]_idID associated with the message.

◆ RegisterTopicNamespace()

void RegisterTopicNamespace ( const std::string & _name)

Register a new topic namespace.

Parameters
[in]_nameThe name of the new namespace

◆ RemoveNode()

void RemoveNode ( unsigned int _id)

Remove a node by its id.

Parameters
[in]_idThe ID of the node to be removed

◆ Subscribe()

SubscriberPtr Subscribe ( const SubscribeOptions & _options)

Subscribe to a topic.

Parameters
[in]_optionsThe options to use for the subscription
Returns
Pointer to the newly created subscriber

◆ Unadvertise() [1/3]

void Unadvertise ( const std::string & _topic)

Unadvertise a topic.

Parameters
[in]_topicThe topic to be unadvertised

◆ Unadvertise() [2/3]

void Unadvertise ( const std::string & _topic,
const uint32_t _id )

Unadvertise a publisher, based on a publisher id.

Parameters
[in]_topicThe publisher's topic. It will also be unadvertised if there are no advertised publishers left.
[in]_idID of the publisher to unadvertise.

◆ Unadvertise() [3/3]

void Unadvertise ( PublisherPtr _pub)

Unadvertise a publisher.

Parameters
[in]_pubPublisher to unadvertise.

◆ Unsubscribe()

void Unsubscribe ( const std::string & _topic,
const NodePtr & _sub )

Unsubscribe from a topic.

Use a Subscriber rather than calling this function directly

Parameters
[in]_topicThe topic to unsubscribe from
[in]_subThe node to unsubscribe

◆ UpdatePublications()

PublicationPtr UpdatePublications ( const std::string & _topic,
const std::string & _msgType )

Update our list of advertised topics.

Parameters
[in]_topicThe topic to be updated
[in]_msgTypeThe type of the topic to be updated
Returns
True if the provided params define a new publisher, false otherwise

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