##

Node Class Reference
Transport

A node can advertise and subscribe topics, publish on advertised topics and listen to subscribed topics. More...

`#include <transport/transport.hh>`

Inherits enable_shared_from_this< Node >.

## Public Member Functions

| Node ()
| Constructor. More...
virtual | ~Node ()
| Destructor. More...
template<typename M >
transport::PublisherPtr | Advertise (const std::string &_topic, unsigned int _queueLimit=1000, double _hzRate=0)
| Adverise a topic. More...
std::string | DecodeTopicName (const std::string &_topic)
| Decode a topic name. More...
std::string | EncodeTopicName (const std::string &_topic)
| Encode a topic name. More...
void | Fini ()
| Finalize the node. More...
unsigned int | GetId () const
| Get the unique ID of the node. More...
std::string | GetMsgType (const std::string &_topic) const
| Get the message type for a topic. More...
std::string | GetTopicNamespace () const
| Get the topic namespace for this node. More...
bool | HandleData (const std::string &_topic, const std::string &_msg)
| Handle incoming data. More...
bool | HandleMessage (const std::string &_topic, MessagePtr _msg)
| Handle incoming msg. More...
bool | HasLatchedSubscriber (const std::string &_topic) const
| Return true if a subscriber on a specific topic is latched. More...
void | Init (const std::string &_space="")
| Init the node. More...
void | InsertLatchedMsg (const std::string &_topic, const std::string &_msg)
| Add a latched message to the node for publication. More...
void | InsertLatchedMsg (const std::string &_topic, MessagePtr _msg)
| Add a latched message to the node for publication. More...
bool | IsInitialized () const
| Check if this Node has been initialized. More...
void | ProcessIncoming ()
| Process incoming messages. More...
void | ProcessPublishers ()
| Process all publishers, which has each publisher send it's most recent message over the wire. More...
template<typename M >
void | Publish (const std::string &_topic, const google::protobuf::Message &_message)
| A convenience function for a one-time publication of a message. More...
void | RemoveCallback (const std::string &_topic, unsigned int _id)
template<typename M >
SubscriberPtr | Subscribe (const std::string &_topic, void(*_fp)(const boost::shared_ptr< M const > &), bool _latching=false)
| Subscribe to a topic using a bare function as the callback. More...
SubscriberPtr | Subscribe (const std::string &_topic, void(*_fp)(const std::string &), bool _latching=false)
| Subscribe to a topic using a bare function as the callback. More...
template<typename M , typename T >
SubscriberPtr | Subscribe (const std::string &_topic, void(T::*_fp)(const boost::shared_ptr< M const > &), T *_obj, bool _latching=false)
| Subscribe to a topic using a class method as the callback. More...
template<typename T >
SubscriberPtr | Subscribe (const std::string &_topic, void(T::*_fp)(const std::string &), T *_obj, bool _latching=false)
| Subscribe to a topic using a class method as the callback. More...
bool | TryInit (const common::Time &_maxWait=common::Time(1, 0))
| Try to initialize the node to use the global namespace, and specify the maximum wait time. More...

## Detailed Description

A node can advertise and subscribe topics, publish on advertised topics and listen to subscribed topics.

## Constructor & Destructor Documentation

## Node()

Node | ( |  | ) |

Constructor.

## ~Node()

virtual ~Node | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## Advertise()

transport::PublisherPtr Advertise | ( | const std::string & | _topic,
|  | unsigned int | _queueLimit = `1000`,
|  | double | _hzRate = `0`
| ) |  |

inline

Adverise a topic.

Parameters

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

Returns
  Pointer to new publisher object

References Node::DecodeTopicName(), and SingletonT< TopicManager >::Instance().

## DecodeTopicName()

std::string DecodeTopicName | ( | const std::string & | _topic | ) |

Decode a topic name.

Parameters

  [in] | The | encoded name

Returns
  The decoded name

Referenced by Node::Advertise(), and Node::Subscribe().

## EncodeTopicName()

std::string EncodeTopicName | ( | const std::string & | _topic | ) |

Encode a topic name.

Parameters

  [in] | The | decoded name

Returns
  The encoded name

## Fini()

void Fini | ( |  | ) |

Finalize the node.

## GetId()

unsigned int GetId | ( |  | ) | const

Get the unique ID of the node.

Returns
  The unique ID of the node

Referenced by Node::Subscribe().

## GetMsgType()

std::string GetMsgType | ( | const std::string & | _topic | ) | const

Get the message type for a topic.

Parameters

  [in] | _topic | The topic

Returns
  The message type

## GetTopicNamespace()

std::string GetTopicNamespace | ( |  | ) | const

Get the topic namespace for this node.

Returns
  The namespace

## HandleData()

bool HandleData | ( | const std::string & | _topic,
|  | const std::string & | _msg
| ) |  |

Handle incoming data.

Parameters

  [in] | _topic | Topic for which the data was received
  [in] | _msg | The message that was received

Returns
  true if the message was handled successfully, false otherwise

## HandleMessage()

bool HandleMessage | ( | const std::string & | _topic,
|  | MessagePtr | _msg
| ) |  |

Handle incoming msg.

Parameters

  [in] | _topic | Topic for which the data was received
  [in] | _msg | The message that was received

Returns
  true if the message was handled successfully, false otherwise

## HasLatchedSubscriber()

bool HasLatchedSubscriber | ( | const std::string & | _topic | ) | const

Return true if a subscriber on a specific topic is latched.

Parameters

  [in] | _topic | Name of the topic to check.

Returns
  True if a latched subscriber exists.

## Init()

void Init | ( | const std::string & | _space = `""` | ) |

Init the node.

Parameters

  [in] | _space | Set the namespace of this topic. If this is the first Node initialized, then this namespace will become the global namespace. If left blank, the topic will initialize to the first namespace on the Master. If the Master does not have any namespaces within 1 second of calling this function, the Node will be initialized with a namespace of "default".

See also
  TryInit()

## InsertLatchedMsg() [1/2]

void InsertLatchedMsg | ( | const std::string & | _topic,
|  | const std::string & | _msg
| ) |  |

Add a latched message to the node for publication.

This is called when a subscription is connected to a publication.

Parameters

  [in] | _topic | Name of the topic to publish data on.
  [in] | _msg | The message to publish.

## InsertLatchedMsg() [2/2]

void InsertLatchedMsg | ( | const std::string & | _topic,
|  | MessagePtr | _msg
| ) |  |

Add a latched message to the node for publication.

This is called when a subscription is connected to a publication.

Parameters

  [in] | _topic | Name of the topic to publish data on.
  [in] | _msg | The message to publish.

## IsInitialized()

bool IsInitialized | ( |  | ) | const

Check if this Node has been initialized.

Returns
  True if initialized, otherwise false

See also
  Init()
  TryInit()

## ProcessIncoming()

void ProcessIncoming | ( |  | ) |

Process incoming messages.

## ProcessPublishers()

void ProcessPublishers | ( |  | ) |

Process all publishers, which has each publisher send it's most recent message over the wire.

This is for internal use only

## Publish()

void Publish | ( | const std::string & | _topic,
|  | const google::protobuf::Message & | _message
| ) |  |

inline

A convenience function for a one-time publication of a message.

This is inefficient, compared to Node::Advertise followed by Publisher::Publish. This function should only be used when sending a message very infrequently.

Parameters

  [in] | _topic | The topic to advertise
  [in] | _message | Message to be published

## RemoveCallback()

void RemoveCallback | ( | const std::string & | _topic,
|  | unsigned int | _id
| ) |  |

## Subscribe() [1/4]

SubscriberPtr Subscribe | ( | const std::string & | _topic,
|  | void(*)(const boost::shared_ptr< M const > &) | _fp,
|  | bool | _latching = `false`
| ) |  |

inline

Subscribe to a topic using a bare function as the callback.

Parameters

  [in] | _topic | The topic to subscribe to
  [in] | _fp | Function to be called on receipt of new message
  [in] | _latching | If true, latch latest incoming message; otherwise don't latch

Returns
  Pointer to new Subscriber object

References Node::DecodeTopicName(), Node::GetId(), and SingletonT< TopicManager >::Instance().

## Subscribe() [2/4]

SubscriberPtr Subscribe | ( | const std::string & | _topic,
|  | void(*)(const std::string &) | _fp,
|  | bool | _latching = `false`
| ) |  |

inline

Subscribe to a topic using a bare function as the callback.

Parameters

  [in] | _topic | The topic to subscribe to
  [in] | _fp | Function to be called on receipt of new message
  [in] | _latching | If true, latch latest incoming message; otherwise don't latch

Returns
  Pointer to new Subscriber object

References Node::DecodeTopicName(), Node::GetId(), SubscribeOptions::Init(), and SingletonT< TopicManager >::Instance().

## Subscribe() [3/4]

SubscriberPtr Subscribe | ( | const std::string & | _topic,
|  | void(T::*)(const boost::shared_ptr< M const > &) | _fp,
|  | T * | _obj,
|  | bool | _latching = `false`
| ) |  |

inline

Subscribe to a topic using a class method as the callback.

Parameters

  [in] | _topic | The topic to subscribe to
  [in] | _fp | Class method to be called on receipt of new message
  [in] | _obj | Class instance to be used on receipt of new message
  [in] | _latching | If true, latch latest incoming message; otherwise don't latch

Returns
  Pointer to new Subscriber object

References Node::DecodeTopicName(), Node::GetId(), and SingletonT< TopicManager >::Instance().

## Subscribe() [4/4]

SubscriberPtr Subscribe | ( | const std::string & | _topic,
|  | void(T::*)(const std::string &) | _fp,
|  | T * | _obj,
|  | bool | _latching = `false`
| ) |  |

inline

Subscribe to a topic using a class method as the callback.

Parameters

  [in] | _topic | The topic to subscribe to
  [in] | _fp | Class method to be called on receipt of new message
  [in] | _obj | Class instance to be used on receipt of new message
  [in] | _latching | If true, latch latest incoming message; otherwise don't latch

Returns
  Pointer to new Subscriber object

References Node::DecodeTopicName(), Node::GetId(), SubscribeOptions::Init(), and SingletonT< TopicManager >::Instance().

## TryInit()

bool TryInit | ( | const common::Time & | _maxWait = `common::Time(1, 0)` | ) |

Try to initialize the node to use the global namespace, and specify the maximum wait time.

If a global namespace is not available by the time a duration of _maxWait has transpired, this will return false, and the Node will not be initialized.

Parameters

  [in] | _maxWait | The maximum amount of time to wait for the Node to initialize. The initialization might be delayed while waiting for namespaces to be found. The default is 1 second.

Returns
  True if a global namespace was found, and this node has been initialized to it. False if a global namespace was not found (the node will not be initialized in that case).

See also
  Init()

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

- Node.hh