Node Class Reference

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)
 Advertise a topic. More...
 
transport::PublisherPtr Advertise (const std::string &_topic, const std::string &_msgTypeName, unsigned int _queueLimit=1000, double _hzRate=0)
 Advertise 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 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 , 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 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...
 
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...
 
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...
 
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() [1/2]

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

Advertise a topic.

Parameters
[in]_topicThe topic to advertise
[in]_queueLimitThe maximum number of outgoing messages to queue for delivery
[in]_hzUpdate rate for the publisher. Units are 1.0/seconds.
Returns
Pointer to new publisher object

References SingletonT< TopicManager >::Instance().

◆ Advertise() [2/2]

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

Advertise a topic.

Parameters
[in]_topicThe topic to advertise
[in]_queueLimitThe maximum number of outgoing messages to queue for delivery
[in]_hzUpdate rate for the publisher. Units are 1.0/seconds.
Returns
Pointer to new publisher object

References SingletonT< TopicManager >::Instance().

◆ DecodeTopicName()

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

Decode a topic name.

Parameters
[in]Theencoded name
Returns
The decoded name

◆ EncodeTopicName()

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

Encode a topic name.

Parameters
[in]Thedecoded 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

◆ GetMsgType()

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

Get the message type for a topic.

Parameters
[in]_topicThe 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]_topicTopic for which the data was received
[in]_msgThe 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]_topicTopic for which the data was received
[in]_msgThe 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]_topicName of the topic to check.
Returns
True if a latched subscriber exists.

◆ Init()

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

Init the node.

Parameters
[in]_spaceSet 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]_topicName of the topic to publish data on.
[in]_msgThe 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]_topicName of the topic to publish data on.
[in]_msgThe 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() [1/2]

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]_topicThe topic to advertise
[in]_messageMessage to be published

◆ Publish() [2/2]

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]_topicThe topic to advertise
[in]_messageMessage to be published

◆ RemoveCallback()

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

◆ Subscribe() [1/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]_topicThe topic to subscribe to
[in]_fpClass method to be called on receipt of new message
[in]_objClass instance to be used on receipt of new message
[in]_latchingIf true, latch latest incoming message; otherwise don't latch
Returns
Pointer to new Subscriber object

References SingletonT< TopicManager >::Instance().

◆ Subscribe() [2/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]_topicThe topic to subscribe to
[in]_fpFunction to be called on receipt of new message
[in]_latchingIf true, latch latest incoming message; otherwise don't latch
Returns
Pointer to new Subscriber object

References SingletonT< TopicManager >::Instance().

◆ Subscribe() [3/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]_topicThe topic to subscribe to
[in]_fpClass method to be called on receipt of new message
[in]_objClass instance to be used on receipt of new message
[in]_latchingIf true, latch latest incoming message; otherwise don't latch
Returns
Pointer to new Subscriber object

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

◆ Subscribe() [4/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]_topicThe topic to subscribe to
[in]_fpFunction to be called on receipt of new message
[in]_latchingIf true, latch latest incoming message; otherwise don't latch
Returns
Pointer to new Subscriber object

References 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]_maxWaitThe 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: