##

TopicManager Class Reference
Transport

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. More...

## Public Member Functions

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

## Static Public Member Functions

static TopicManager * | Instance ()
| Get an instance of the singleton. More...

## 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] | _node | The node to be added

## AddNodeToProcess()

void AddNodeToProcess | ( | NodePtr | _ptr | ) |

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

Parameters

  [in] | _ptr | Node to process.

## Advertise()

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

inline

Advertise on a topic.

Parameters

  [in] | _topic | The name of the topic
  [in] | _queueLimit | The maximum number of outgoing messages to queue
  [in] | _hz | Update rate for the publisher. Units are 1.0/seconds.

Returns
  Pointer to the newly created Publisher

References GZ_ASSERT, gzthrow, and NULL.

## 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] | _topic | The topic to use
  [in] | _sublink | The subscription transport object to use

## ConnectSubscribers()

void ConnectSubscribers | ( | const std::string & | _topic | ) |

Connect all subscribers on a topic to known publishers.

Parameters

  [in] | _topic | The topic to be connected

## ConnectSubToPub()

void ConnectSubToPub | ( | const msgs::Publish & | _pub | ) |

Connect a local Subscriber to a remote Publisher.

Parameters

  [in] | _pub | The 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] | _topic | The topic to be disconnected
  [in] | _host | The host to be disconnected
  [in] | _port | The 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] | _topic | The topic to be disconnected
  [in] | _host | The host to be disconnected
  [in] | _port | The port to be disconnected

## FindPublication()

PublicationPtr FindPublication | ( | const std::string & | _topic | ) |

Find a publication object by topic.

Parameters

  [in] | _topic | The 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] | _namespaces | The list of namespaces will be written here

## Init()

void Init | ( |  | ) |

Initialize the manager.

## Instance()

static TopicManager * Instance | ( |  | ) |

inline static inherited

Get an instance of the singleton.

## PauseIncoming()

void PauseIncoming | ( | bool | _pause | ) |

Pause or unpause processing of incoming messages.

Parameters

  [in] | _pause | If true pause processing; otherwse unpause

## ProcessNodes()

void ProcessNodes | ( | bool | _onlyOut = `false` | ) |

Process all nodes under management.

Parameters

  [in] | _onlyOut | True 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] | _topic | Name of the topic
  [in] | _message | The message to send.
  [in] | _cb | Callback, used when the publish is completed.
  [in] | _id | ID associated with the message.

## RegisterTopicNamespace()

void RegisterTopicNamespace | ( | const std::string & | _name | ) |

Register a new topic namespace.

Parameters

  [in] | _name | The name of the new namespace

## RemoveNode()

void RemoveNode | ( | unsigned int | _id | ) |

Remove a node by its id.

Parameters

  [in] | _id | The ID of the node to be removed

## Subscribe()

SubscriberPtr Subscribe | ( | const SubscribeOptions & | _options | ) |

Subscribe to a topic.

Parameters

  [in] | _options | The 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] | _topic | The 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] | _topic | The publisher's topic. It will also be unadvertised if there are no advertised publishers left.
  [in] | _id | ID of the publisher to unadvertise.

## Unadvertise() [3/3]

void Unadvertise | ( | PublisherPtr | _pub | ) |

Unadvertise a publisher.

Parameters

  [in] | _pub | Publisher 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] | _topic | The topic to unsubscribe from
  [in] | _sub | The node to unsubscribe

## UpdatePublications()

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

Update our list of advertised topics.

Parameters

  [in] | _topic | The topic to be updated
  [in] | _msgType | The 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:

- TopicManager.hh