OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <DataLinkSet.h>
Public Types | |
typedef ACE_SYNCH_MUTEX | LockType |
typedef ACE_Guard< LockType > | GuardType |
Public Member Functions | |
DataLinkSet () | |
virtual | ~DataLinkSet () |
int | insert_link (const DataLink_rch &link) |
void | remove_link (const DataLink_rch &link) |
void | send (DataSampleElement *sample) |
Send to each DataLink in the set. More... | |
void | send_control (DataSampleElement *sample) |
Send a control message that is wrapped in a DataSampleElement. More... | |
SendControlStatus | send_control (GUID_t pub_id, const TransportSendListener_rch &listener, const DataSampleHeader &header, Message_Block_Ptr msg) |
Send control message to each DataLink in the set. More... | |
void | send_response (GUID_t sub_id, const DataSampleHeader &header, Message_Block_Ptr response) |
bool | remove_sample (const DataSampleElement *sample) |
bool | remove_all_msgs (const GUID_t &pub_id) |
void | send_start (DataLinkSet *link_set) |
void | send_stop (GUID_t repoId) |
DataLinkSet_rch | select_links (const GUID_t *remoteIds, const CORBA::ULong num_targets) |
bool | empty () |
void | send_final_acks (const GUID_t &readerid) |
typedef | OPENDDS_MAP (DataLinkIdType, DataLink_rch) MapType |
LockType & | lock () |
Accessors for external iteration. More... | |
MapType & | map () |
void | terminate_send_if_suspended () |
bool | is_leading (const GUID_t &writer_id, const GUID_t &reader_id) const |
![]() | |
virtual | ~RcObject () |
virtual void | _add_ref () |
virtual void | _remove_ref () |
long | ref_count () const |
WeakObject * | _get_weak_object () const |
Private Member Functions | |
void | copy_map_to (MapType &target) |
lock and copy map for lock-free access More... | |
Private Attributes | |
MapType | map_ |
Hash map for DataLinks. More... | |
LockType | lock_ |
SendResponseListener | send_response_listener_ |
Listener for TransportSendControlElements created in send_response. More... | |
Additional Inherited Members | |
![]() | |
RcObject () | |
Definition at line 30 of file DataLinkSet.h.
Definition at line 78 of file DataLinkSet.h.
Definition at line 77 of file DataLinkSet.h.
OpenDDS::DCPS::DataLinkSet::DataLinkSet | ( | ) |
Definition at line 30 of file DataLinkSet.cpp.
References DBG_ENTRY_LVL.
|
virtual |
|
private |
lock and copy map for lock-free access
Definition at line 256 of file DataLinkSet.inl.
References ACE_INLINE, lock_, and map_.
Referenced by send_control().
bool OpenDDS::DCPS::DataLinkSet::empty | ( | void | ) |
Definition at line 87 of file DataLinkSet.cpp.
int OpenDDS::DCPS::DataLinkSet::insert_link | ( | const DataLink_rch & | link | ) |
Definition at line 42 of file DataLinkSet.cpp.
References OpenDDS::DCPS::bind(), DBG_ENTRY_LVL, OpenDDS::DCPS::DataLink::id(), lock_, and map_.
Referenced by OpenDDS::DCPS::TransportClient::add_link(), OpenDDS::DCPS::TransportClient::send_control_to(), and OpenDDS::DCPS::TransportClient::send_response().
bool OpenDDS::DCPS::DataLinkSet::is_leading | ( | const GUID_t & | writer_id, |
const GUID_t & | reader_id | ||
) | const |
Definition at line 107 of file DataLinkSet.cpp.
Referenced by OpenDDS::DCPS::TransportClient::is_leading().
|
inline |
|
inline |
Definition at line 85 of file DataLinkSet.h.
typedef OpenDDS::DCPS::DataLinkSet::OPENDDS_MAP | ( | DataLinkIdType | , |
DataLink_rch | |||
) |
ACE_INLINE bool OpenDDS::DCPS::DataLinkSet::remove_all_msgs | ( | const GUID_t & | pub_id | ) |
Definition at line 185 of file DataLinkSet.inl.
References ACE_INLINE, DBG_ENTRY_LVL, lock_, and map_.
Referenced by OpenDDS::DCPS::TransportClient::remove_all_msgs().
void OpenDDS::DCPS::DataLinkSet::remove_link | ( | const DataLink_rch & | link | ) |
Definition at line 50 of file DataLinkSet.cpp.
References ACE_TEXT(), DBG_ENTRY_LVL, OpenDDS::DCPS::DataLink::id(), LM_DEBUG, lock_, map_, OpenDDS::DCPS::unbind(), and VDBG.
Referenced by OpenDDS::DCPS::TransportClient::disassociate().
ACE_INLINE bool OpenDDS::DCPS::DataLinkSet::remove_sample | ( | const DataSampleElement * | sample | ) |
Definition at line 166 of file DataLinkSet.inl.
References ACE_INLINE, DBG_ENTRY_LVL, lock_, map_, and OpenDDS::DCPS::REMOVE_RELEASED.
Referenced by OpenDDS::DCPS::TransportClient::remove_sample().
OpenDDS::DCPS::DataLinkSet_rch OpenDDS::DCPS::DataLinkSet::select_links | ( | const GUID_t * | remoteIds, |
const CORBA::ULong | num_targets | ||
) |
Definition at line 64 of file DataLinkSet.cpp.
References OpenDDS::DCPS::bind(), DBG_ENTRY_LVL, lock_, and map_.
Referenced by OpenDDS::DCPS::TransportClient::send_i().
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send | ( | DataSampleElement * | sample | ) |
Send to each DataLink in the set.
Definition at line 22 of file DataLinkSet.inl.
References ACE_INLINE, OpenDDS::DCPS::DataSampleHeader::add_cfentries(), OpenDDS::DCPS::CONTENT_FILTER_FLAG, OpenDDS::DCPS::TransportSendListener::data_dropped(), DBG_ENTRY_LVL, ACE_Message_Block::duplicate(), OpenDDS::DCPS::DataSampleElement::get_filter_per_link(), OpenDDS::DCPS::DataSampleElement::get_sample(), OpenDDS::DCPS::DataSampleElement::get_send_listener(), LM_DEBUG, lock_, map_, OpenDDS::DCPS::move(), OpenDDS::DCPS::TransportSendElement::msg(), OpenDDS::DCPS::DataSampleHeader::test_flag(), and VDBG_LVL.
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send_control | ( | DataSampleElement * | sample | ) |
Send a control message that is wrapped in a DataSampleElement.
Definition at line 81 of file DataLinkSet.inl.
References ACE_INLINE, DBG_ENTRY_LVL, LM_DEBUG, lock_, map_, and VDBG.
Referenced by OpenDDS::DCPS::TransportClient::send_control(), and OpenDDS::DCPS::TransportClient::send_control_to().
ACE_INLINE OpenDDS::DCPS::SendControlStatus OpenDDS::DCPS::DataLinkSet::send_control | ( | GUID_t | pub_id, |
const TransportSendListener_rch & | listener, | ||
const DataSampleHeader & | header, | ||
Message_Block_Ptr | msg | ||
) |
Send control message to each DataLink in the set.
Definition at line 100 of file DataLinkSet.inl.
References ACE_DEBUG, ACE_INLINE, ACE_TEXT(), OpenDDS::DCPS::LogGuid::c_str(), copy_map_to(), DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, header, OpenDDS::DCPS::RcHandle< T >::in(), LM_DEBUG, OpenDDS::DCPS::move(), and OpenDDS::DCPS::SEND_CONTROL_OK.
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send_final_acks | ( | const GUID_t & | readerid | ) |
Definition at line 273 of file DataLinkSet.inl.
Referenced by OpenDDS::DCPS::TransportClient::send_final_acks().
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send_response | ( | GUID_t | sub_id, |
const DataSampleHeader & | header, | ||
Message_Block_Ptr | response | ||
) |
Definition at line 141 of file DataLinkSet.inl.
References ACE_INLINE, DBG_ENTRY_LVL, lock_, map_, OpenDDS::DCPS::move(), send_response_listener_, and OpenDDS::DCPS::SendResponseListener::track_message().
Referenced by OpenDDS::DCPS::TransportClient::send_response().
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send_start | ( | DataLinkSet * | link_set | ) |
Calls send_start() on the links in link_set and also adds the links from link_set to *this.
Definition at line 202 of file DataLinkSet.inl.
References ACE_ERROR, ACE_INLINE, OpenDDS::DCPS::bind(), DBG_ENTRY_LVL, LM_ERROR, lock_, map_, and OpenDDS::DCPS::OPENDDS_VECTOR().
Referenced by OpenDDS::DCPS::TransportClient::send_i().
ACE_INLINE void OpenDDS::DCPS::DataLinkSet::send_stop | ( | GUID_t | repoId | ) |
Calls send_stop() on the links with ID repoId and then clears the set.
Definition at line 239 of file DataLinkSet.inl.
References ACE_INLINE, DBG_ENTRY_LVL, lock_, and map_.
Referenced by OpenDDS::DCPS::TransportClient::send_i().
void OpenDDS::DCPS::DataLinkSet::terminate_send_if_suspended | ( | ) |
Definition at line 94 of file DataLinkSet.cpp.
Referenced by OpenDDS::DCPS::TransportClient::terminate_send_if_suspended().
|
mutableprivate |
This lock will protect critical sections of code that play a role in the sending of data.
Definition at line 100 of file DataLinkSet.h.
Referenced by copy_map_to(), empty(), insert_link(), is_leading(), remove_all_msgs(), remove_link(), remove_sample(), select_links(), send(), send_control(), send_final_acks(), send_response(), send_start(), send_stop(), and terminate_send_if_suspended().
|
private |
Hash map for DataLinks.
Definition at line 96 of file DataLinkSet.h.
Referenced by copy_map_to(), empty(), insert_link(), is_leading(), remove_all_msgs(), remove_link(), remove_sample(), select_links(), send(), send_control(), send_final_acks(), send_response(), send_start(), send_stop(), and terminate_send_if_suspended().
|
private |
Listener for TransportSendControlElements created in send_response.
Definition at line 103 of file DataLinkSet.h.
Referenced by send_response().