Go to the documentation of this file.
18 #ifndef GZ_TRANSPORT_NODESHARED_HH_
19 #define GZ_TRANSPORT_NODESHARED_HH_
22 #pragma warning(push, 0)
24 #include <google/protobuf/message.h>
37 #include "gz/transport/config.hh"
38 #include "gz/transport/Export.hh"
54 inline namespace IGNITION_TRANSPORT_VERSION_NAMESPACE {
61 class NodeSharedPrivate;
74 public:
void RunReceptionTask();
89 const size_t _dataSize,
94 public:
void RecvMsgUpdate();
172 public:
void IGN_DEPRECATED(8.0) TriggerSubscriberCallbacks(
173 const
std::
string &_topic,
174 const
std::
string &_msgData,
175 const
std::
string &_msgType,
184 public:
void TriggerCallbacks(
186 const
std::
string &_msgData,
192 public:
void RecvControlUpdate();
195 public:
void RecvSrvRequest();
198 public:
void RecvSrvResponse();
205 public:
void SendPendingRemoteReqs(const
std::
string &_topic,
206 const
std::
string &_reqType,
207 const
std::
string &_repType);
241 public:
bool TopicPublishers(const
std::
string &_topic,
250 public:
bool DiscoverService(const
std::
string &_topic) const;
269 public:
int RcvHwm();
281 public:
int SndHwm();
289 public:
void EnableStats(const
std::
string &_topic,
bool _enable,
299 const
std::
string &_topic) const;
310 private:
bool InitializeSockets();
317 public:
Uuid responseReceiverId;
325 #pragma warning(push)
326 #pragma warning(disable: 4251)
338 public:
static const int kMsgDiscPort = 10317;
341 public:
static const int kSrvDiscPort = 10318;
367 public:
bool HasSubscriber(
376 public:
bool HasSubscriber(
397 public:
bool RemoveHandlersForNode(
415 #pragma warning(push)
416 #pragma warning(disable: 4251)
447 private:
friend Node;
448 private:
friend NodePrivate;
std::string myReplierAddress
My replier service call address.
Definition: gz/transport/NodeShared.hh:437
HandlerStorage< ISubscriptionHandler > normal
Normal local subscriptions.
Definition: gz/transport/NodeShared.hh:402
void OnNewDisconnection(const MessagePublisher &_pub)
Callback executed when the discovery detects disconnections.
std::map< std::string, ISubscriptionHandler_M > localHandlers
This is a map of the standard local callback handlers. The key is the topic name, and the value is an...
Definition: gz/transport/NodeShared.hh:105
Encapsulates statistics for a single topic. The set of statistics include:
Definition: gz/transport/TopicStatistics.hh:113
This struct wraps up the two different types of subscription handlers: normal (deserialized) and raw ...
Definition: gz/transport/NodeShared.hh:359
This struct provides information about the Subscribers of a Publisher. It should only be retrieved us...
Definition: gz/transport/NodeShared.hh:141
Definition: gz/transport/AdvertiseOptions.hh:28
HandlerInfo contains information about callback handlers which is useful for local publishers and mes...
Definition: gz/transport/NodeShared.hh:100
void OnNewSrvConnection(const ServicePublisher &_pub)
Callback executed when the discovery detects a new service call.
std::string pUuid
Process UUID.
Definition: gz/transport/NodeShared.hh:329
std::optional< TopicStatistics > TopicStats(const std::string &_topic) const
Get the current statistics for a topic. Statistics must have been enabled using the EnableStatistics ...
std::string myControlAddress
My pub/sub control address.
Definition: gz/transport/NodeShared.hh:431
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.
bool HasSubscriber(const std::string &_fullyQualifiedTopic, const std::string &_msgType) const
Returns true if this wrapper contains any subscriber that matches the given topic name and message ty...
void RecvSrvResponse()
Method in charge of receiving the service call responses.
bool DiscoverService(const std::string &_topic) const
Pass through to bool Discovery::Discover(const std::string &_topic) const.
static const int kSrvDiscPort
Port used by the service discovery layer.
Definition: gz/transport/NodeShared.hh:341
bool AdvertisePublisher(const ServicePublisher &_publisher)
Pass through to bool Advertise(const Pub &_publisher)
HandlerStorage< IReqHandler > requests
Pending service call requests.
Definition: gz/transport/NodeShared.hh:422
std::recursive_mutex mutex
Mutex to guarantee exclusive access between all threads.
Definition: gz/transport/NodeShared.hh:335
static const int kMsgDiscPort
Port used by the message discovery layer.
Definition: gz/transport/NodeShared.hh:338
void RecvSrvRequest()
Method in charge of receiving the service call requests.
void OnNewSrvDisconnection(const ServicePublisher &_pub)
Callback executed when a service call is no longer available.
virtual ~NodeShared()
Destructor.
This class stores all the information about a message publisher.
Definition: gz/transport/Publisher.hh:222
std::thread threadReception
thread in charge of receiving and handling incoming messages.
Definition: gz/transport/NodeShared.hh:332
int verbose
Print activity to stdout.
Definition: gz/transport/NodeShared.hh:425
A portable class for representing a Universally Unique Identifier.
Definition: gz/transport/Uuid.hh:45
void RecvMsgUpdate()
Method in charge of receiving the topic updates.
void OnEndRegistration(const MessagePublisher &_pub)
Callback executed when a remote subscriber unregisters.
void TriggerSubscriberCallbacks(const std::string &_topic, const std::string &_msgData, const std::string &_msgType, const HandlerInfo &_handlerInfo)
Call the SubscriptionHandler callbacks (local and raw) for this NodeShared.
void OnNewConnection(const MessagePublisher &_pub)
Callback executed when the discovery detects new topics.
Uuid responseReceiverId
Response receiver socket identity.
Definition: gz/transport/NodeShared.hh:317
A class that allows a client to communicate with other peers. There are two main communication modes:...
Definition: gz/transport/Node.hh:95
std::string myRequesterAddress
My requester service call address.
Definition: gz/transport/NodeShared.hh:434
void RunReceptionTask()
Receive data and control messages.
std::map< std::string, RawSubscriptionHandler_M > rawHandlers
This is a map of the raw local callback handlers. The key is the topic name, and the value is another...
Definition: gz/transport/NodeShared.hh:110
A class that provides information about the message received.
Definition: gz/transport/MessageInfo.hh:37
HandlerWrapper localSubscribers
Definition: gz/transport/NodeShared.hh:410
bool TopicPublishers(const std::string &_topic, SrvAddresses_M &_publishers) const
Pass through to bool Publishers(const std::string &_topic, Addresses_M<Pub> &_publishers) const.
std::string myAddress
My pub/sub address.
Definition: gz/transport/NodeShared.hh:428
bool haveRemote
True if this Publisher has any remote subscribers.
Definition: gz/transport/NodeShared.hh:145
void TriggerCallbacks(const MessageInfo &_info, const std::string &_msgData, const HandlerInfo &_handlerInfo)
Call the SubscriptionHandler callbacks (local and raw) for this NodeShared.
HandlerStorage< RawSubscriptionHandler > raw
Raw local subscriptions. Keeping these separate from localSubscriptions allows us to avoid an unneces...
Definition: gz/transport/NodeShared.hh:407
void RecvControlUpdate()
Method in charge of receiving the control updates (when a new remote subscriber notifies its presence...
int RcvHwm()
Get the capacity of the buffer (High Water Mark) that stores incoming Ignition Transport messages....
TopicStorage< MessagePublisher > remoteSubscribers
Remote subscribers.
Definition: gz/transport/NodeShared.hh:350
bool RemoveHandlersForNode(const std::string &_fullyQualifiedTopic, const std::string &_nUuid)
Remove the handlers for the given topic name that belong to a specific node.
This class stores all the information about a service publisher.
Definition: gz/transport/Publisher.hh:355
HandlerStorage< IRepHandler > repliers
Service call repliers.
Definition: gz/transport/NodeShared.hh:419
Uuid replierId
Replier socket identity.
Definition: gz/transport/NodeShared.hh:320
std::string hostAddr
IP address of this host.
Definition: gz/transport/NodeShared.hh:440
std::vector< std::string > NodeUuids(const std::string &_fullyQualifiedTopic, const std::string &_msgTypeName) const
Get a set of node UUIDs for subscribers in this wrapper that match the topic and message type criteri...
Store address information about topics and provide convenient methods for adding new topics,...
Definition: gz/transport/TopicStorage.hh:41
bool haveLocal
True iff there are any standard local subscribers.
Definition: gz/transport/NodeShared.hh:113
void(void *_data, void *_hint) DeallocFunc
Definition: gz/transport/TransportTypes.hh:171
HandlerInfo CheckHandlerInfo(const std::string &_topic) const
Get information about the local and raw subscribers that are attached to this NodeShared.
bool Publish(const std::string &_topic, char *_data, const size_t _dataSize, DeallocFunc *_ffn, const std::string &_msgType)
Publish data.
Private data for the Node class. This class should not be directly used. You should use the Node clas...
Definition: gz/transport/NodeShared.hh:66
void OnNewRegistration(const MessagePublisher &_pub)
Callback executed when a remote subscriber connects.
void EnableStats(const std::string &_topic, bool _enable, std::function< void(const TopicStatistics &_stats)> _cb)
Turn topic statistics on or off.
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.
bool haveRaw
True iff there are any raw local subscribers.
Definition: gz/transport/NodeShared.hh:116
static NodeShared * Instance()
NodeShared is a singleton. This method gets the NodeShared instance shared between all the nodes.
Class to store and manage service call handlers.
Definition: gz/transport/HandlerStorage.hh:39
int SndHwm()
Get the capacity of the buffer (High Water Mark) that stores outgoing Ignition Transport messages....