Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
roswrap::Subscription Class Reference

Manages a subscription on a single topic. More...

#include <subscription.h>

Inheritance diagram for roswrap::Subscription:
Inheritance graph
[legend]

Classes

struct  CallbackInfo
 
struct  LatchInfo
 
class  PendingConnection
 

Public Types

typedef std::map< std::string, std::string > M_string
 
typedef std::shared_ptr< PendingConnectionPendingConnectionPtr
 

Public Member Functions

bool addCallback (const SubscriptionCallbackHelperPtr &helper, const std::string &md5sum, CallbackQueueInterface *queue, int32_t queue_size, const VoidConstPtr &tracked_object, bool allow_concurrent_callbacks)
 
void addLocalConnection (const PublicationPtr &pub)
 
const std::string datatype ()
 
void drop ()
 Terminate all our PublisherLinks. More...
 
void getInfo (XmlRpc::XmlRpcValue &info)
 
const std::string & getName () const
 
uint32_t getNumCallbacks () const
 
uint32_t getNumPublishers ()
 
void getPublishTypes (bool &ser, bool &nocopy, const std::type_info &ti)
 
XmlRpc::XmlRpcValue getStats ()
 
uint32_t handleMessage (const SerializedMessage &m, bool ser, bool nocopy, const std::shared_ptr< M_string > &connection_header, const PublisherLinkPtr &link)
 Called to notify that a new message has arrived from a publisher. Schedules the callback for invokation with the callback queue. More...
 
void headerReceived (const PublisherLinkPtr &link, const Header &h)
 
bool isDropped ()
 Returns whether this Subscription has been dropped or not. More...
 
const std::string md5sum ()
 
bool negotiateConnection (const std::string &xmlrpc_uri)
 Negotiates a connection with a publisher. More...
 
void pendingConnectionDone (const PendingConnectionPtr &pending_conn, XmlRpc::XmlRpcValue &result)
 
bool pubUpdate (const std::vector< std::string > &pubs)
 Handle a publisher update list received from the master. Creates/drops PublisherLinks based on the list. Never handles new self-subscriptions. More...
 
void removeCallback (const SubscriptionCallbackHelperPtr &helper)
 
void removePublisherLink (const PublisherLinkPtr &pub_link)
 Removes a subscriber from our list. More...
 
void shutdown ()
 Terminate all our PublisherLinks and join our callback thread if it exists. More...
 
 Subscription (const std::string &name, const std::string &md5sum, const std::string &datatype, const TransportHints &transport_hints)
 
virtual ~Subscription ()
 

Private Types

typedef std::shared_ptr< CallbackInfoCallbackInfoPtr
 
typedef std::map< PublisherLinkPtr, LatchInfoM_PublisherLinkToLatchInfo
 
typedef std::set< PendingConnectionPtrS_PendingConnection
 
typedef std::vector< CallbackInfoPtrV_CallbackInfo
 
typedef std::vector< PublisherLinkPtrV_PublisherLink
 
typedef std::vector< std::pair< const std::type_info *, MessageDeserializerPtr > > V_TypeAndDeserializer
 

Private Member Functions

void addPublisherLink (const PublisherLinkPtr &link)
 
void dropAllConnections ()
 
Subscriptionoperator= (const Subscription &)
 
 Subscription (const Subscription &)
 

Private Attributes

V_TypeAndDeserializer cached_deserializers_
 
V_CallbackInfo callbacks_
 
std::mutex callbacks_mutex_
 
std::string datatype_
 
bool dropped_
 
M_PublisherLinkToLatchInfo latched_messages_
 
std::string md5sum_
 
std::mutex md5sum_mutex_
 
std::string name_
 
uint32_t nonconst_callbacks_
 
S_PendingConnection pending_connections_
 
std::mutex pending_connections_mutex_
 
V_PublisherLink publisher_links_
 
std::mutex publisher_links_mutex_
 
std::mutex shutdown_mutex_
 
bool shutting_down_
 
StatisticsLogger statistics_
 
TransportHints transport_hints_
 

Detailed Description

Manages a subscription on a single topic.

Definition at line 66 of file subscription.h.

Member Typedef Documentation

◆ CallbackInfoPtr

typedef std::shared_ptr<CallbackInfo> roswrap::Subscription::CallbackInfoPtr
private

Definition at line 205 of file subscription.h.

◆ M_PublisherLinkToLatchInfo

Definition at line 240 of file subscription.h.

◆ M_string

typedef std::map<std::string, std::string> roswrap::Subscription::M_string

Definition at line 103 of file subscription.h.

◆ PendingConnectionPtr

Definition at line 179 of file subscription.h.

◆ S_PendingConnection

Definition at line 220 of file subscription.h.

◆ V_CallbackInfo

Definition at line 206 of file subscription.h.

◆ V_PublisherLink

Definition at line 224 of file subscription.h.

◆ V_TypeAndDeserializer

typedef std::vector<std::pair<const std::type_info*, MessageDeserializerPtr> > roswrap::Subscription::V_TypeAndDeserializer
private

Definition at line 243 of file subscription.h.

Constructor & Destructor Documentation

◆ Subscription() [1/2]

roswrap::Subscription::Subscription ( const std::string &  name,
const std::string &  md5sum,
const std::string &  datatype,
const TransportHints transport_hints 
)

◆ ~Subscription()

virtual roswrap::Subscription::~Subscription ( )
virtual

◆ Subscription() [2/2]

roswrap::Subscription::Subscription ( const Subscription )
private

Member Function Documentation

◆ addCallback()

bool roswrap::Subscription::addCallback ( const SubscriptionCallbackHelperPtr helper,
const std::string &  md5sum,
CallbackQueueInterface queue,
int32_t  queue_size,
const VoidConstPtr tracked_object,
bool  allow_concurrent_callbacks 
)

◆ addLocalConnection()

void roswrap::Subscription::addLocalConnection ( const PublicationPtr pub)

◆ addPublisherLink()

void roswrap::Subscription::addPublisherLink ( const PublisherLinkPtr link)
private

◆ datatype()

const std::string roswrap::Subscription::datatype ( )

◆ drop()

void roswrap::Subscription::drop ( )

Terminate all our PublisherLinks.

◆ dropAllConnections()

void roswrap::Subscription::dropAllConnections ( )
private

◆ getInfo()

void roswrap::Subscription::getInfo ( XmlRpc::XmlRpcValue info)

◆ getName()

const std::string& roswrap::Subscription::getName ( ) const
inline

Definition at line 119 of file subscription.h.

◆ getNumCallbacks()

uint32_t roswrap::Subscription::getNumCallbacks ( ) const
inline

Definition at line 120 of file subscription.h.

◆ getNumPublishers()

uint32_t roswrap::Subscription::getNumPublishers ( )

◆ getPublishTypes()

void roswrap::Subscription::getPublishTypes ( bool &  ser,
bool &  nocopy,
const std::type_info &  ti 
)

◆ getStats()

XmlRpc::XmlRpcValue roswrap::Subscription::getStats ( )

◆ handleMessage()

uint32_t roswrap::Subscription::handleMessage ( const SerializedMessage m,
bool  ser,
bool  nocopy,
const std::shared_ptr< M_string > &  connection_header,
const PublisherLinkPtr link 
)

Called to notify that a new message has arrived from a publisher. Schedules the callback for invokation with the callback queue.

◆ headerReceived()

void roswrap::Subscription::headerReceived ( const PublisherLinkPtr link,
const Header h 
)

◆ isDropped()

bool roswrap::Subscription::isDropped ( )
inline

Returns whether this Subscription has been dropped or not.

Definition at line 96 of file subscription.h.

◆ md5sum()

const std::string roswrap::Subscription::md5sum ( )

◆ negotiateConnection()

bool roswrap::Subscription::negotiateConnection ( const std::string &  xmlrpc_uri)

Negotiates a connection with a publisher.

Parameters
xmlrpc_uriThe XMLRPC URI to connect to to negotiate the connection

◆ operator=()

Subscription& roswrap::Subscription::operator= ( const Subscription )
private

◆ pendingConnectionDone()

void roswrap::Subscription::pendingConnectionDone ( const PendingConnectionPtr pending_conn,
XmlRpc::XmlRpcValue result 
)

◆ pubUpdate()

bool roswrap::Subscription::pubUpdate ( const std::vector< std::string > &  pubs)

Handle a publisher update list received from the master. Creates/drops PublisherLinks based on the list. Never handles new self-subscriptions.

◆ removeCallback()

void roswrap::Subscription::removeCallback ( const SubscriptionCallbackHelperPtr helper)

◆ removePublisherLink()

void roswrap::Subscription::removePublisherLink ( const PublisherLinkPtr pub_link)

Removes a subscriber from our list.

◆ shutdown()

void roswrap::Subscription::shutdown ( )

Terminate all our PublisherLinks and join our callback thread if it exists.

Member Data Documentation

◆ cached_deserializers_

V_TypeAndDeserializer roswrap::Subscription::cached_deserializers_
private

Definition at line 244 of file subscription.h.

◆ callbacks_

V_CallbackInfo roswrap::Subscription::callbacks_
private

Definition at line 213 of file subscription.h.

◆ callbacks_mutex_

std::mutex roswrap::Subscription::callbacks_mutex_
private

Definition at line 212 of file subscription.h.

◆ datatype_

std::string roswrap::Subscription::datatype_
private

Definition at line 211 of file subscription.h.

◆ dropped_

bool roswrap::Subscription::dropped_
private

Definition at line 216 of file subscription.h.

◆ latched_messages_

M_PublisherLinkToLatchInfo roswrap::Subscription::latched_messages_
private

Definition at line 241 of file subscription.h.

◆ md5sum_

std::string roswrap::Subscription::md5sum_
private

Definition at line 210 of file subscription.h.

◆ md5sum_mutex_

std::mutex roswrap::Subscription::md5sum_mutex_
private

Definition at line 209 of file subscription.h.

◆ name_

std::string roswrap::Subscription::name_
private

Definition at line 208 of file subscription.h.

◆ nonconst_callbacks_

uint32_t roswrap::Subscription::nonconst_callbacks_
private

Definition at line 214 of file subscription.h.

◆ pending_connections_

S_PendingConnection roswrap::Subscription::pending_connections_
private

Definition at line 221 of file subscription.h.

◆ pending_connections_mutex_

std::mutex roswrap::Subscription::pending_connections_mutex_
private

Definition at line 222 of file subscription.h.

◆ publisher_links_

V_PublisherLink roswrap::Subscription::publisher_links_
private

Definition at line 225 of file subscription.h.

◆ publisher_links_mutex_

std::mutex roswrap::Subscription::publisher_links_mutex_
private

Definition at line 226 of file subscription.h.

◆ shutdown_mutex_

std::mutex roswrap::Subscription::shutdown_mutex_
private

Definition at line 218 of file subscription.h.

◆ shutting_down_

bool roswrap::Subscription::shutting_down_
private

Definition at line 217 of file subscription.h.

◆ statistics_

StatisticsLogger roswrap::Subscription::statistics_
private

Definition at line 230 of file subscription.h.

◆ transport_hints_

TransportHints roswrap::Subscription::transport_hints_
private

Definition at line 228 of file subscription.h.


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


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:15