Private data for the Node class. This class should not be directly used. You should use the Node class. More...
#include <ignition/transport/NodeShared.hh>
Classes | |
struct | HandlerInfo |
HandlerInfo contains information about callback handlers which is useful for local publishers and message receivers. You should only retrieve a HandlerInfo by calling CheckHandlerInfo(const std::string &_topic) const. More... | |
struct | HandlerWrapper |
This struct wraps up the two different types of subscription handlers: normal (deserialized) and raw (serialized). This wrapper keeps the two sets of subscription handlers coordinated while allowing them to act independently when necessary. More... | |
struct | SubscriberInfo |
This struct provides information about the Subscribers of a Publisher. It should only be retrieved using CheckSubscriberInfo(const std::string&, const std::string&) const. The relevant subscriber info is a superset of the relevant HandlerInfo so we extend that struct. More... | |
Public Member Functions | |
bool | AdvertisePublisher (const ServicePublisher &_publisher) |
Pass through to bool Advertise(const Pub &_publisher) More... | |
HandlerInfo | CheckHandlerInfo (const std::string &_topic) const |
Get information about the local and raw subscribers that are attached to this NodeShared. More... | |
SubscriberInfo | CheckSubscriberInfo (const std::string &_topic, const std::string &_msgType) const |
Get information about the nodes that are subscribed to the publishers of this NodeShared. More... | |
bool | DiscoverService (const std::string &_topic) const |
Pass through to bool Discovery::Discover(const std::string &_topic) const. More... | |
void | EnableStats (const std::string &_topic, bool _enable, std::function< void(const TopicStatistics &_stats)> _cb) |
Turn topic statistics on or off. More... | |
void | OnEndRegistration (const MessagePublisher &_pub) |
Callback executed when a remote subscriber unregisters. More... | |
void | OnNewConnection (const MessagePublisher &_pub) |
Callback executed when the discovery detects new topics. More... | |
void | OnNewDisconnection (const MessagePublisher &_pub) |
Callback executed when the discovery detects disconnections. More... | |
void | OnNewRegistration (const MessagePublisher &_pub) |
Callback executed when a remote subscriber connects. More... | |
void | OnNewSrvConnection (const ServicePublisher &_pub) |
Callback executed when the discovery detects a new service call. More... | |
void | OnNewSrvDisconnection (const ServicePublisher &_pub) |
Callback executed when a service call is no longer available. More... | |
bool | Publish (const std::string &_topic, char *_data, const size_t _dataSize, DeallocFunc *_ffn, const std::string &_msgType) |
Publish data. More... | |
int | RcvHwm () |
Get the capacity of the buffer (High Water Mark) that stores incoming Ignition Transport messages. Note that this is a global queue shared by all subscribers within the same process. More... | |
void | RecvControlUpdate () |
Method in charge of receiving the control updates (when a new remote subscriber notifies its presence for example). ToDo: Remove this function when possible. More... | |
void | RecvMsgUpdate () |
Method in charge of receiving the topic updates. More... | |
void | RecvSrvRequest () |
Method in charge of receiving the service call requests. More... | |
void | RecvSrvResponse () |
Method in charge of receiving the service call responses. More... | |
void | RunReceptionTask () |
Receive data and control messages. More... | |
void | SendPendingRemoteReqs (const std::string &_topic, const std::string &_reqType, const std::string &_repType) |
Try to send all the requests for a given service call and a pair of request/response types. More... | |
int | SndHwm () |
Get the capacity of the buffer (High Water Mark) that stores outgoing Ignition Transport messages. Note that this is a global queue shared by all publishers within the same process. More... | |
bool | TopicPublishers (const std::string &_topic, SrvAddresses_M &_publishers) const |
Pass through to bool Publishers(const std::string &_topic, Addresses_M<Pub> &_publishers) const. More... | |
std::optional< TopicStatistics > | TopicStats (const std::string &_topic) const |
Get the current statistics for a topic. Statistics must have been enabled using the EnableStatistics function, otherwise the return value will be std::nullopt. More... | |
void | TriggerCallbacks (const MessageInfo &_info, const std::string &_msgData, const HandlerInfo &_handlerInfo) |
Call the SubscriptionHandler callbacks (local and raw) for this NodeShared. More... | |
Static Public Member Functions | |
static NodeShared * | Instance () |
NodeShared is a singleton. This method gets the NodeShared instance shared between all the nodes. More... | |
Public Attributes | |
std::string | discoveryIP = "239.255.0.7" |
Default IP address used by the message discovery layer. More... | |
std::string | hostAddr |
IP address of this host. More... | |
HandlerWrapper | localSubscribers |
int | msgDiscPort = kDefaultMsgDiscPort |
Port used by the message discovery layer. More... | |
std::recursive_mutex | mutex |
Mutex to guarantee exclusive access between all threads. More... | |
std::string | myAddress |
My pub/sub address. More... | |
std::string | myControlAddress |
My pub/sub control address. More... | |
std::string | myReplierAddress |
My replier service call address. More... | |
std::string | myRequesterAddress |
My requester service call address. More... | |
std::string | pUuid |
Process UUID. More... | |
TopicStorage< MessagePublisher > | remoteSubscribers |
Remote subscribers. More... | |
Uuid | replierId |
Replier socket identity. More... | |
HandlerStorage< IRepHandler > | repliers |
Service call repliers. More... | |
HandlerStorage< IReqHandler > | requests |
Pending service call requests. More... | |
Uuid | responseReceiverId |
Response receiver socket identity. More... | |
int | srvDiscPort = kDefaultSrvDiscPort |
Port used by the service discovery layer. More... | |
std::thread | threadReception |
thread in charge of receiving and handling incoming messages. More... | |
int | verbose |
Print activity to stdout. More... | |
Static Public Attributes | |
static const int | kDefaultMsgDiscPort = 10317 |
Default port used by the message discovery layer. More... | |
static const int | kDefaultSrvDiscPort = 10318 |
Default port used by the service discovery layer. More... | |
Protected Member Functions | |
NodeShared () | |
Constructor. More... | |
virtual | ~NodeShared () |
Destructor. More... | |
Detailed Description
Private data for the Node class. This class should not be directly used. You should use the Node class.
Constructor & Destructor Documentation
◆ NodeShared()
|
protected |
Constructor.
◆ ~NodeShared()
|
protectedvirtual |
Destructor.
Member Function Documentation
◆ AdvertisePublisher()
bool AdvertisePublisher | ( | const ServicePublisher & | _publisher | ) |
Pass through to bool Advertise(const Pub &_publisher)
- Parameters
-
[in] _publisher Publisher's information to advertise.
- Returns
- True if the method succeed or false otherwise (e.g. if the discovery has not been started).
- See also
- Pass through to bool Advertise(const Pub &_publisher)
◆ CheckHandlerInfo()
HandlerInfo CheckHandlerInfo | ( | const std::string & | _topic | ) | const |
Get information about the local and raw subscribers that are attached to this NodeShared.
- Parameters
-
[in] _topic Information will only be returned for handlers that are subscribed to the given topic name.
- Returns
- Information about local subscription handlers that are held by this NodeShared.
◆ CheckSubscriberInfo()
SubscriberInfo CheckSubscriberInfo | ( | const std::string & | _topic, |
const std::string & | _msgType | ||
) | const |
Get information about the nodes that are subscribed to the publishers of this NodeShared.
- Parameters
-
[in] _topic Only information about subscribers to this topic will be returned. [in] _msgType If there are no remote subscribers listening for this message type, then SubscriberInfo::haveRemote will be false in the return value of this function.
- Returns
- Information about subscribers.
◆ DiscoverService()
bool DiscoverService | ( | const std::string & | _topic | ) | const |
Pass through to bool Discovery::Discover(const std::string &_topic) const.
- Parameters
-
[in] _topic Service name.
- Returns
- True if the method succeeded or false otherwise (e.g. if the discovery has not been started).
- See also
- bool Discovery::Discover(const std::string &_topic) const
◆ EnableStats()
void EnableStats | ( | const std::string & | _topic, |
bool | _enable, | ||
std::function< void(const TopicStatistics &_stats)> | _cb | ||
) |
Turn topic statistics on or off.
- Parameters
-
[in] _topic The name of the topic on which to enable or disable statistics. [in] _enable True to enable statistics, false to disable. [in] _cb Callback that is triggered whenever statistics are updated.
◆ Instance()
|
static |
NodeShared is a singleton. This method gets the NodeShared instance shared between all the nodes.
- Returns
- Pointer to the current NodeShared instance.
◆ OnEndRegistration()
void OnEndRegistration | ( | const MessagePublisher & | _pub | ) |
Callback executed when a remote subscriber unregisters.
- Parameters
-
[in] _pub Information of the remote subscriber.
◆ OnNewConnection()
void OnNewConnection | ( | const MessagePublisher & | _pub | ) |
Callback executed when the discovery detects new topics.
- Parameters
-
[in] _pub Information of the publisher in charge of the topic.
◆ OnNewDisconnection()
void OnNewDisconnection | ( | const MessagePublisher & | _pub | ) |
Callback executed when the discovery detects disconnections.
- Parameters
-
[in] _pub Information of the publisher in charge of the topic.
◆ OnNewRegistration()
void OnNewRegistration | ( | const MessagePublisher & | _pub | ) |
Callback executed when a remote subscriber connects.
- Parameters
-
[in] _pub Information of the remote subscriber.
◆ OnNewSrvConnection()
void OnNewSrvConnection | ( | const ServicePublisher & | _pub | ) |
Callback executed when the discovery detects a new service call.
- Parameters
-
[in] _pub Information of the publisher in charge of the service.
◆ OnNewSrvDisconnection()
void OnNewSrvDisconnection | ( | const ServicePublisher & | _pub | ) |
Callback executed when a service call is no longer available.
- Parameters
-
[in] _pub Information of the publisher in charge of the service.
◆ Publish()
bool Publish | ( | const std::string & | _topic, |
char * | _data, | ||
const size_t | _dataSize, | ||
DeallocFunc * | _ffn, | ||
const std::string & | _msgType | ||
) |
Publish data.
- Parameters
-
[in] _topic Topic to be published. [in,out] _data Serialized data. Note that this buffer will be automatically deallocated by ZMQ when all data has been published. [in] _dataSize Data size (bytes). [in,out] _ffn Deallocation function. This function is executed by ZeroMQ when the data is published. This function deallocates the buffer containing the published data.
- See also
- http://zeromq.org/blog:zero-copy
- Parameters
-
[in] _msgType Message type in string format.
- Returns
- true when success or false otherwise.
◆ RcvHwm()
int RcvHwm | ( | ) |
Get the capacity of the buffer (High Water Mark) that stores incoming Ignition Transport messages. Note that this is a global queue shared by all subscribers within the same process.
- Returns
- The capacity of the buffer storing incoming messages (units are messages). A value of 0 indicates an unlimited buffer and -1 that the socket cannot be queried. The default buffer size is contained in the kDefaultRcvHwm variable. If the buffer is set to unlimited, then your buffer will grow until you run out of memory (and probably crash). If your buffer reaches the maximum capacity data will be dropped.
◆ RecvControlUpdate()
void RecvControlUpdate | ( | ) |
Method in charge of receiving the control updates (when a new remote subscriber notifies its presence for example). ToDo: Remove this function when possible.
◆ RecvMsgUpdate()
void RecvMsgUpdate | ( | ) |
Method in charge of receiving the topic updates.
◆ RecvSrvRequest()
void RecvSrvRequest | ( | ) |
Method in charge of receiving the service call requests.
◆ RecvSrvResponse()
void RecvSrvResponse | ( | ) |
Method in charge of receiving the service call responses.
◆ RunReceptionTask()
void RunReceptionTask | ( | ) |
Receive data and control messages.
◆ SendPendingRemoteReqs()
void SendPendingRemoteReqs | ( | const std::string & | _topic, |
const std::string & | _reqType, | ||
const std::string & | _repType | ||
) |
Try to send all the requests for a given service call and a pair of request/response types.
- Parameters
-
[in] _topic Topic name. [in] _reqType Type of the request in string format. [in] _repType Type of the response in string format.
◆ SndHwm()
int SndHwm | ( | ) |
Get the capacity of the buffer (High Water Mark) that stores outgoing Ignition Transport messages. Note that this is a global queue shared by all publishers within the same process.
- Returns
- The capacity of the buffer storing outgoing messages (units are messages). A value of 0 indicates an unlimited buffer and -1 that the socket cannot be queried. The default buffer size is contained in the kDefaultSndHwm variable. If the buffer is set to unlimited, then your buffer will grow until you run out of memory (and probably crash). If your buffer reaches the maximum capacity data will be dropped.
◆ TopicPublishers()
bool TopicPublishers | ( | const std::string & | _topic, |
SrvAddresses_M & | _publishers | ||
) | const |
Pass through to bool Publishers(const std::string &_topic, Addresses_M<Pub> &_publishers) const.
- Parameters
-
[in] _topic Service name. [out] _publishers Collection of service publishers.
- Returns
- True if the service is found and
- See also
- bool Publishers(const std::string &_topic, Addresses_M<Pub> &_publishers) const
◆ TopicStats()
std::optional<TopicStatistics> TopicStats | ( | const std::string & | _topic | ) | const |
Get the current statistics for a topic. Statistics must have been enabled using the EnableStatistics function, otherwise the return value will be std::nullopt.
- Parameters
-
[in] _topic The name of the topic to get statistics for.
- Returns
- A TopicStatistics class, or std::nullopt if statistics were not enabled.
◆ TriggerCallbacks()
void TriggerCallbacks | ( | const MessageInfo & | _info, |
const std::string & | _msgData, | ||
const HandlerInfo & | _handlerInfo | ||
) |
Call the SubscriptionHandler callbacks (local and raw) for this NodeShared.
- Parameters
-
[in] _info Message information. [in] _msgData The raw serialized data for the message [in] _handlerInfo Information for the handlers of this node, as generated by CheckHandlerInfo(const std::string&) const
Member Data Documentation
◆ discoveryIP
std::string discoveryIP = "239.255.0.7" |
Default IP address used by the message discovery layer.
◆ hostAddr
std::string hostAddr |
IP address of this host.
◆ kDefaultMsgDiscPort
|
static |
Default port used by the message discovery layer.
◆ kDefaultSrvDiscPort
|
static |
Default port used by the service discovery layer.
◆ localSubscribers
HandlerWrapper localSubscribers |
◆ msgDiscPort
int msgDiscPort = kDefaultMsgDiscPort |
Port used by the message discovery layer.
◆ mutex
|
mutable |
Mutex to guarantee exclusive access between all threads.
◆ myAddress
std::string myAddress |
My pub/sub address.
◆ myControlAddress
std::string myControlAddress |
My pub/sub control address.
◆ myReplierAddress
std::string myReplierAddress |
My replier service call address.
◆ myRequesterAddress
std::string myRequesterAddress |
My requester service call address.
◆ pUuid
std::string pUuid |
Process UUID.
◆ remoteSubscribers
TopicStorage<MessagePublisher> remoteSubscribers |
Remote subscribers.
◆ replierId
Uuid replierId |
Replier socket identity.
◆ repliers
HandlerStorage<IRepHandler> repliers |
Service call repliers.
◆ requests
HandlerStorage<IReqHandler> requests |
Pending service call requests.
◆ responseReceiverId
Uuid responseReceiverId |
Response receiver socket identity.
◆ srvDiscPort
int srvDiscPort = kDefaultSrvDiscPort |
Port used by the service discovery layer.
◆ threadReception
std::thread threadReception |
thread in charge of receiving and handling incoming messages.
◆ verbose
int verbose |
Print activity to stdout.
The documentation for this class was generated from the following file: