OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <DataLink.h>
Classes | |
class | ImmediateStart |
class | Interceptor |
struct | LocalAssociationInfo |
Public Types | |
enum | ConnectionNotice { DISCONNECTED, RECONNECTED, LOST } |
typedef WeakRcHandle< TransportClient > | TransportClient_wrch |
typedef std::pair< TransportClient_wrch, GUID_t > | OnStartCallback |
![]() | |
typedef long | Reference_Count |
Public Member Functions | |
DataLink (const TransportImpl_rch &impl, Priority priority, bool is_loopback, bool is_active) | |
Only called by our TransportImpl object. More... | |
virtual | ~DataLink () |
int | handle_exception (ACE_HANDLE) |
Reactor invokes this after being notified in schedule_stop or cancel_release. More... | |
void | schedule_stop (const MonotonicTimePoint &schedule_to_stop_at) |
void | stop () |
The stop method is used to stop the DataLink prior to shutdown. More... | |
void | resume_send () |
virtual int | make_reservation (const GUID_t &remote_subscription_id, const GUID_t &local_publication_id, const TransportSendListener_wrch &send_listener, bool reliable) |
virtual int | make_reservation (const GUID_t &remote_publication_id, const GUID_t &local_subscription_id, const TransportReceiveListener_wrch &receive_listener, bool reliable) |
void | release_reservations (GUID_t remote_id, GUID_t local_id, DataLinkSetMap &released_locals) |
void | schedule_delayed_release () |
const TimeDuration & | datalink_release_delay () const |
void | remove_listener (const GUID_t &local_id) |
void | send_start () |
void | send (TransportQueueElement *element) |
void | send_stop (GUID_t repoId) |
virtual RemoveResult | remove_sample (const DataSampleElement *sample) |
virtual void | remove_all_msgs (const GUID_t &pub_id) |
int | data_received (ReceivedDataSample &sample, const GUID_t &readerId=GUID_UNKNOWN) |
void | data_received_include (ReceivedDataSample &sample, const RepoIdSet &incl) |
DataLinkIdType | id () const |
Obtain a unique identifier for this DataLink object. More... | |
void | transport_shutdown () |
void | notify (ConnectionNotice notice) |
virtual void | pre_stop_i () |
void | release_resources () |
void | terminate_send () |
void | terminate_send_if_suspended () |
bool | is_target (const GUID_t &remote_id) |
void | clear_associations () |
int | handle_timeout (const ACE_Time_Value &tv, const void *arg) |
int | handle_close (ACE_HANDLE h, ACE_Reactor_Mask m) |
void | set_dscp_codepoint (int cp, ACE_SOCK &socket) |
Priority & | transport_priority () |
Priority | transport_priority () const |
bool & | is_loopback () |
bool | is_loopback () const |
bool & | is_active () |
bool | is_active () const |
bool | cancel_release () |
ACE_Message_Block * | create_control (char submessage_id, DataSampleHeader &header, Message_Block_Ptr data) |
SendControlStatus | send_control (const DataSampleHeader &header, Message_Block_Ptr data) |
GUIDSeq * | target_intersection (const GUID_t &pub_id, const GUIDSeq &in, size_t &n_subs) |
TransportImpl_rch | impl () const |
void | default_listener (const TransportReceiveListener_wrch &trl) |
TransportReceiveListener_wrch | default_listener () const |
bool | add_on_start_callback (const TransportClient_wrch &client, const GUID_t &remote) |
void | remove_on_start_callback (const TransportClient_wrch &client, const GUID_t &remote) |
void | invoke_on_start_callbacks (bool success) |
bool | invoke_on_start_callbacks (const GUID_t &local, const GUID_t &remote, bool success) |
void | remove_startup_callbacks (const GUID_t &local, const GUID_t &remote) |
void | set_scheduling_release (bool scheduling_release) |
virtual void | send_final_acks (const GUID_t &readerid) |
virtual WeakRcHandle< ICE::Endpoint > | get_ice_endpoint () const |
virtual bool | is_leading (const GUID_t &, const GUID_t &) const |
![]() | |
RcEventHandler () | |
ACE_Event_Handler::Reference_Count | add_reference () |
ACE_Event_Handler::Reference_Count | remove_reference () |
![]() | |
virtual | ~ACE_Event_Handler (void) |
virtual ACE_HANDLE | get_handle (void) const |
virtual void | set_handle (ACE_HANDLE) |
virtual int | priority (void) const |
virtual void | priority (int priority) |
virtual int | handle_input (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
virtual int | handle_output (ACE_HANDLE fd=ACE_INVALID_HANDLE) |
virtual int | handle_exit (ACE_Process *) |
virtual int | handle_signal (int signum, siginfo_t *=0, ucontext_t *=0) |
virtual int | resume_handler (void) |
virtual int | handle_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual int | handle_group_qos (ACE_HANDLE=ACE_INVALID_HANDLE) |
virtual void | reactor (ACE_Reactor *reactor) |
virtual ACE_Reactor * | reactor (void) const |
virtual ACE_Reactor_Timer_Interface * | reactor_timer_interface (void) const |
Reference_Counting_Policy & | reference_counting_policy (void) |
![]() | |
virtual | ~RcObject () |
virtual void | _add_ref () |
virtual void | _remove_ref () |
long | ref_count () const |
WeakObject * | _get_weak_object () const |
Protected Types | |
typedef ACE_Guard< LockType > | GuardType |
![]() | |
typedef ACE_Atomic_Op< ACE_SYNCH_MUTEX, Reference_Count > | Atomic_Reference_Count |
Protected Member Functions | |
int | start (const TransportSendStrategy_rch &send_strategy, const TransportStrategy_rch &receive_strategy, bool invoke_all=true) |
virtual void | stop_i () |
void | send_start_i () |
virtual void | send_i (TransportQueueElement *element, bool relink=true) |
void | send_stop_i (GUID_t repoId) |
GUIDSeq * | peer_ids (const GUID_t &local_id) const |
void | network_change () const |
void | replay_durable_data (const GUID_t &local_pub_id, const GUID_t &remote_sub_id) const |
TransportSendStrategy_rch | get_send_strategy () |
typedef | OPENDDS_MAP_CMP (GUID_t, TransportClient_wrch, GUID_tKeyLessThan) RepoToClientMap |
typedef | OPENDDS_MAP_CMP (GUID_t, RepoToClientMap, GUID_tKeyLessThan) OnStartCallbackMap |
typedef | OPENDDS_MAP_CMP (GUID_t, RepoIdSet, GUID_tKeyLessThan) PendingOnStartsMap |
![]() | |
ACE_Event_Handler (ACE_Reactor *=0, int priority=ACE_Event_Handler::LO_PRIORITY) | |
![]() | |
RcObject () | |
Static Protected Member Functions | |
static ACE_UINT64 | get_next_datalink_id () |
Used to provide unique Ids to all DataLink methods. More... | |
Protected Attributes | |
TransportStrategy_rch | receive_strategy_ |
The transport receive strategy object for this DataLink. More... | |
TransportSendStrategy_rch | send_strategy_ |
The transport send strategy object for this DataLink. More... | |
LockType | strategy_lock_ |
OnStartCallbackMap | on_start_callbacks_ |
PendingOnStartsMap | pending_on_starts_ |
TimeDuration | datalink_release_delay_ |
unique_ptr< MessageBlockAllocator > | mb_allocator_ |
unique_ptr< DataBlockAllocator > | db_allocator_ |
bool | is_loopback_ |
Is remote attached to same transport ? More... | |
bool | is_active_ |
Is pub or sub ? More... | |
bool | started_ |
SendResponseListener | send_response_listener_ |
Listener for TransportSendControlElements created in send_control. More... | |
Interceptor | interceptor_ |
![]() | |
Atomic_Reference_Count | reference_count_ |
Private Types | |
typedef ACE_SYNCH_MUTEX | LockType |
Private Attributes | |
bool | stopped_ |
MonotonicTimePoint | scheduled_to_stop_at_ |
IdToSendListenerMap | send_listeners_ |
IdToRecvListenerMap | recv_listeners_ |
TransportReceiveListener_wrch | default_listener_ |
LockType | pub_sub_maps_lock_ |
AssocByRemote | assoc_by_remote_ |
AssocByLocal | assoc_by_local_ |
WeakRcHandle< TransportImpl > | impl_ |
A weak rchandle to the TransportImpl that created this DataLink. More... | |
ACE_UINT64 | id_ |
The id for this DataLink. More... | |
unique_ptr< ThreadPerConnectionSendTask > | thr_per_con_send_task_ |
AssocByLocal | assoc_releasing_ |
Priority | transport_priority_ |
TRANSPORT_PRIORITY value associated with the link. More... | |
bool | scheduling_release_ |
Friends | |
class | DataLinkCleanupTask |
class | ThreadPerConnectionSendTask |
OpenDDS_Dcps_Export std::ostream & | operator<< (std::ostream &str, const DataLink &value) |
Convenience function for diagnostic information. More... | |
Additional Inherited Members | |
![]() | |
static ACE_THR_FUNC_RETURN | read_adapter (void *event_handler) |
static int | register_stdin_handler (ACE_Event_Handler *eh, ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr, int flags=THR_DETACHED) |
static int | remove_stdin_handler (ACE_Reactor *reactor, ACE_Thread_Manager *thr_mgr) |
![]() | |
LO_PRIORITY | |
HI_PRIORITY | |
NULL_MASK | |
READ_MASK | |
WRITE_MASK | |
EXCEPT_MASK | |
ACCEPT_MASK | |
CONNECT_MASK | |
TIMER_MASK | |
QOS_MASK | |
GROUP_QOS_MASK | |
SIGNAL_MASK | |
ALL_EVENTS_MASK | |
RWE_MASK | |
DONT_CALL | |
ACE_EVENT_HANDLER_NOT_RESUMED | |
ACE_REACTOR_RESUMES_HANDLER | |
ACE_APPLICATION_RESUMES_HANDLER | |
This class manages the reservations based on the associations between datareader and datawriter. It basically delegate the samples to send strategy for sending and deliver the samples received by receive strategy to the listener.
Notes about object ownership: 1) Own the send strategy object and receive strategy object. 2) Own ThreadPerConnectionSendTask object which is used when thread_per_connection is enabled.
Definition at line 73 of file DataLink.h.
|
protected |
Definition at line 437 of file DataLink.h.
|
private |
Definition at line 377 of file DataLink.h.
typedef std::pair<TransportClient_wrch, GUID_t> OpenDDS::DCPS::DataLink::OnStartCallback |
Definition at line 259 of file DataLink.h.
Definition at line 258 of file DataLink.h.
Enumerator | |
---|---|
DISCONNECTED | |
RECONNECTED | |
LOST |
Definition at line 80 of file DataLink.h.
OpenDDS::DCPS::DataLink::DataLink | ( | const TransportImpl_rch & | impl, |
Priority | priority, | ||
bool | is_loopback, | ||
bool | is_active | ||
) |
Only called by our TransportImpl object.
A DataLink object is always created by a TransportImpl object. Thus, the TransportImpl object passed-in here is the object that created this DataLink. The ability to specify a priority for individual links is included for construction so its value can be available for activating any threads.
Definition at line 42 of file DataLink.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::TransportImpl::config(), OpenDDS::DCPS::TransportInst::datalink_control_chunks_, datalink_release_delay(), OpenDDS::DCPS::TransportInst::datalink_release_delay_, datalink_release_delay_, db_allocator_, DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::TransportInst::DEFAULT_DATALINK_CONTROL_CHUNKS, OpenDDS::DCPS::TransportInst::DEFAULT_DATALINK_RELEASE_DELAY, OpenDDS::DCPS::TimeDuration::from_msec(), get_next_datalink_id(), id_, LM_DEBUG, LM_ERROR, mb_allocator_, thr_per_con_send_task_, OpenDDS::DCPS::TransportInst::thread_per_connection_, and ThreadPerConnectionSendTask.
|
virtual |
Definition at line 88 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), assoc_by_local_, DBG_ENTRY_LVL, LM_WARNING, and thr_per_con_send_task_.
bool OpenDDS::DCPS::DataLink::add_on_start_callback | ( | const TransportClient_wrch & | client, |
const GUID_t & | remote | ||
) |
Definition at line 111 of file DataLink.cpp.
References OpenDDS::DCPS::ReactorInterceptor::execute_or_enqueue(), OpenDDS::DCPS::GUID_UNKNOWN, interceptor_, OpenDDS::DCPS::RcHandle< T >::is_nil(), OpenDDS::DCPS::WeakRcHandle< T >::lock(), on_start_callbacks_, pending_on_starts_, ACE_Guard< ACE_LOCK >::release(), send_strategy_, started_, and strategy_lock_.
Referenced by OpenDDS::DCPS::TcpTransport::accept_datalink(), OpenDDS::DCPS::RtpsUdpDataLink::associated(), and OpenDDS::DCPS::TcpTransport::connect_datalink().
bool OpenDDS::DCPS::DataLink::cancel_release | ( | ) |
Definition at line 601 of file DataLink.cpp.
References ACE_DEBUG, DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, LM_DEBUG, notify_reactor(), scheduled_to_stop_at_, scheduling_release_, set_scheduling_release(), stopped_, and OpenDDS::DCPS::TimePoint_T< MonotonicClock >::zero_value.
Referenced by OpenDDS::DCPS::TcpTransport::find_datalink_i().
void OpenDDS::DCPS::DataLink::clear_associations | ( | ) |
This is called by DataLinkCleanupTask thread to remove the associations based on the snapshot in release_resources().
Definition at line 1059 of file DataLink.cpp.
References assoc_releasing_, recv_listener_for(), OpenDDS::DCPS::TransportReceiveListener::remove_associations(), send_listener_for(), and OpenDDS::DCPS::set_to_seq().
Referenced by OpenDDS::DCPS::TransportImpl::DoClear::handle_event().
|
private |
Helper function to output the enum as a string to help debugging.
Definition at line 267 of file DataLink.inl.
References ACE_INLINE.
Referenced by notify().
ACE_Message_Block * OpenDDS::DCPS::DataLink::create_control | ( | char | submessage_id, |
DataSampleHeader & | header, | ||
Message_Block_Ptr | data | ||
) |
This allows a subclass to easily create a transport control sample to send via send_control.
Definition at line 628 of file DataLink.cpp.
References ACE_CDR_BYTE_ORDER, ACE_DEFAULT_MESSAGE_BLOCK_PRIORITY, ACE_DES_FREE, ACE_ERROR, ACE_NEW_MALLOC_RETURN, ACE_TEXT(), OpenDDS::DCPS::DataSampleHeader::byte_order_, db_allocator_, DBG_ENTRY_LVL, OpenDDS::DCPS::DataSampleHeader::get_max_serialized_size(), LM_ERROR, ACE_Time_Value::max_time, mb_allocator_, ACE_Message_Block::MB_DATA, OpenDDS::DCPS::DataSampleHeader::message_id_, OpenDDS::DCPS::DataSampleHeader::message_length_, OpenDDS::DCPS::unique_ptr< T, Deleter >::release(), OpenDDS::DCPS::DataSampleHeader::submessage_id_, ACE_Message_Block::total_length(), OpenDDS::DCPS::TRANSPORT_CONTROL, and ACE_Time_Value::zero.
Referenced by OpenDDS::DCPS::MulticastSession::send_control(), and OpenDDS::DCPS::MulticastDataLink::syn_received_no_session().
|
inlineprivatevirtual |
Allow derived classes to provide an alternate "customized" queue element for this DataLink (not shared with other links in the DataLinkSet).
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink.
Definition at line 360 of file DataLink.h.
Referenced by send().
int OpenDDS::DCPS::DataLink::data_received | ( | ReceivedDataSample & | sample, |
const GUID_t & | readerId = GUID_UNKNOWN |
||
) |
This is called by our TransportReceiveStrategy object when it has received a complete data sample. This method will cause the appropriate TransportReceiveListener objects to be told that data_received(). If readerId is not GUID_UNKNOWN, only the TransportReceiveListener with that ID (if one exists) will receive the data.
This method will "deliver" the sample to all TransportReceiveListeners within this DataLink that are interested in the (remote) publisher id that sent the sample.
Definition at line 690 of file DataLink.cpp.
References data_received_i(), and OpenDDS::DCPS::ReceiveListenerSet::SET_EXCLUDED.
Referenced by OpenDDS::DCPS::ReliableSession::deliver_held_data(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::deliver_held_data(), OpenDDS::DCPS::ShmemReceiveStrategy::deliver_sample(), OpenDDS::DCPS::UdpReceiveStrategy::deliver_sample(), OpenDDS::DCPS::TcpReceiveStrategy::deliver_sample(), OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_sample_i(), OpenDDS::DCPS::ShmemDataLink::request_ack_received(), and OpenDDS::DCPS::MulticastDataLink::sample_received().
|
private |
Definition at line 704 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), assoc_by_remote_, OpenDDS::DCPS::DataSampleHeader::content_filter_, OpenDDS::DCPS::DataSampleHeader::content_filter_entries_, OpenDDS::DCPS::TransportReceiveListener::data_received(), DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, default_listener_, OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::ReceivedDataSample::header_, OpenDDS::DCPS::RcHandle< T >::in(), OpenDDS::DCPS::RcHandle< T >::is_nil(), LM_DEBUG, OpenDDS::DCPS::WeakRcHandle< T >::lock(), OPENDDS_STRING, pub_sub_maps_lock_, OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::DCPS::ReceiveListenerSet::remove_all(), OpenDDS::DCPS::ReceiveListenerSet::SET_EXCLUDED, OpenDDS::DCPS::to_string(), and OpenDDS::DCPS::Transport_debug_level.
Referenced by data_received(), and data_received_include().
void OpenDDS::DCPS::DataLink::data_received_include | ( | ReceivedDataSample & | sample, |
const RepoIdSet & | incl | ||
) |
Varation of data_received() that allows for excluding a subset of readers by specifying which readers specifically should receive. Any reader ID that does not appear in the include set will be skipped.
Definition at line 698 of file DataLink.cpp.
References data_received_i(), OpenDDS::DCPS::GUID_UNKNOWN, and OpenDDS::DCPS::ReceiveListenerSet::SET_INCLUDED.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::deliver_sample_i().
ACE_INLINE const TimeDuration & OpenDDS::DCPS::DataLink::datalink_release_delay | ( | ) | const |
Definition at line 62 of file DataLink.inl.
References ACE_INLINE, and datalink_release_delay_.
Referenced by DataLink(), OpenDDS::DCPS::TcpTransport::release_datalink(), and OpenDDS::DCPS::TcpTransport::unbind_link().
ACE_INLINE void OpenDDS::DCPS::DataLink::default_listener | ( | const TransportReceiveListener_wrch & | trl | ) |
Definition at line 352 of file DataLink.inl.
References ACE_INLINE, default_listener_, and pub_sub_maps_lock_.
Referenced by OpenDDS::DCPS::RtpsUdpTransport::configure_i().
ACE_INLINE TransportReceiveListener_wrch OpenDDS::DCPS::DataLink::default_listener | ( | ) | const |
Definition at line 360 of file DataLink.inl.
References ACE_INLINE, default_listener_, and pub_sub_maps_lock_.
|
inlinevirtual |
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink.
Definition at line 287 of file DataLink.h.
|
staticprotected |
Used to provide unique Ids to all DataLink methods.
Definition at line 805 of file DataLink.cpp.
References ACE_ERROR, ACE_TEXT(), id(), and LM_ERROR.
Referenced by DataLink().
|
protected |
Definition at line 374 of file DataLink.inl.
References OPENDDS_END_VERSIONED_NAMESPACE_DECL, send_strategy_, and strategy_lock_.
Referenced by make_reservation(), remove_all_msgs(), remove_sample(), resume_send(), schedule_delayed_release(), send_i(), send_start_i(), send_stop_i(), terminate_send(), and terminate_send_if_suspended().
|
virtual |
Reimplemented from ACE_Event_Handler.
Definition at line 1101 of file DataLink.cpp.
References handle_timeout(), TheServiceParticipant, ACE_Event_Handler::TIMER_MASK, and ACE_Time_Value::zero.
|
virtual |
Reactor invokes this after being notified in schedule_stop or cancel_release.
Reimplemented from ACE_Event_Handler.
Definition at line 270 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), ACE_Reactor_Timer_Interface::cancel_timer(), OpenDDS::DCPS::DCPS_debug_level, handle_timeout(), impl(), impl_, OpenDDS::DCPS::TimePoint_T< AceClock >::is_zero(), LM_DEBUG, OpenDDS::DCPS::TimePoint_T< MonotonicClock >::now(), ACE_Event_Handler::reactor(), ACE_Reactor_Timer_Interface::schedule_timer(), scheduled_to_stop_at_, scheduling_release_, stop(), TheServiceParticipant, OpenDDS::DCPS::TransportImpl::timer(), OpenDDS::DCPS::TimeDuration::value(), and ACE_Time_Value::zero.
|
privatevirtual |
Reimplemented in OpenDDS::DCPS::TcpDataLink.
Definition at line 1191 of file DataLink.cpp.
References OpenDDS::DCPS::TransportQueueElement::data_delivered().
Referenced by send().
|
virtual |
Reimplemented from ACE_Event_Handler.
Definition at line 1081 of file DataLink.cpp.
References assoc_by_local_, assoc_by_remote_, impl(), impl_, OpenDDS::DCPS::TimePoint_T< AceClock >::is_zero(), LM_DEBUG, scheduled_to_stop_at_, stop(), TheServiceParticipant, OpenDDS::DCPS::TransportImpl::unbind_link(), and VDBG_LVL.
Referenced by handle_close(), and handle_exception().
ACE_INLINE DataLinkIdType OpenDDS::DCPS::DataLink::id | ( | void | ) | const |
Obtain a unique identifier for this DataLink object.
Definition at line 205 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, and id_.
Referenced by get_next_datalink_id(), OpenDDS::DCPS::DataLinkSet::insert_link(), and OpenDDS::DCPS::DataLinkSet::remove_link().
TransportImpl_rch OpenDDS::DCPS::DataLink::impl | ( | void | ) | const |
Definition at line 105 of file DataLink.cpp.
References impl_.
Referenced by OpenDDS::DCPS::TcpConnection::active_open(), OpenDDS::DCPS::TcpConnection::active_reconnect_i(), OpenDDS::DCPS::DataReaderImpl::add_link(), OpenDDS::DCPS::TcpConnection::close(), OpenDDS::DCPS::RtpsUdpDataLink::config(), OpenDDS::DCPS::UdpDataLink::control_received(), OpenDDS::DCPS::RtpsUdpDataLink::get_ice_endpoint(), handle_exception(), OpenDDS::DCPS::TcpConnection::handle_timeout(), handle_timeout(), notify_reactor(), OpenDDS::DCPS::UdpDataLink::open(), OpenDDS::DCPS::TcpDataLink::reconnect(), release_reservations(), release_resources(), OpenDDS::DCPS::TcpConnection::set_datalink(), OpenDDS::DCPS::MulticastDataLink::transport(), OpenDDS::DCPS::ShmemDataLink::transport(), OpenDDS::DCPS::RtpsUdpDataLink::transport(), and transport_shutdown().
void OpenDDS::DCPS::DataLink::invoke_on_start_callbacks | ( | bool | success | ) |
Definition at line 194 of file DataLink.cpp.
References OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::WeakRcHandle< T >::lock(), on_start_callbacks_, ACE_Guard< ACE_LOCK >::release(), and strategy_lock_.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::associated(), OpenDDS::DCPS::TcpTransport::async_connect_failed(), OpenDDS::DCPS::TcpTransport::connect_datalink(), OpenDDS::DCPS::TcpDataLink::do_association_actions(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_heartbeat_i(), OpenDDS::DCPS::TcpDataLink::request_ack_received(), OpenDDS::DCPS::ShmemDataLink::request_ack_received(), start(), and OpenDDS::DCPS::MulticastSession::synack_received().
bool OpenDDS::DCPS::DataLink::invoke_on_start_callbacks | ( | const GUID_t & | local, |
const GUID_t & | remote, | ||
bool | success | ||
) |
Definition at line 230 of file DataLink.cpp.
References OpenDDS::DCPS::WeakRcHandle< T >::lock(), on_start_callbacks_, pending_on_starts_, and strategy_lock_.
ACE_INLINE bool & OpenDDS::DCPS::DataLink::is_active | ( | ) |
Definition at line 49 of file DataLink.inl.
References ACE_INLINE, and is_active_.
Referenced by OpenDDS::DCPS::MulticastDataLink::check_header(), OpenDDS::DCPS::TcpTransport::release_datalink(), OpenDDS::DCPS::MulticastDataLink::sample_received(), and OpenDDS::DCPS::TcpTransport::unbind_link().
ACE_INLINE bool OpenDDS::DCPS::DataLink::is_active | ( | ) | const |
|
inlinevirtual |
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink.
Definition at line 289 of file DataLink.h.
ACE_INLINE bool & OpenDDS::DCPS::DataLink::is_loopback | ( | void | ) |
Definition at line 35 of file DataLink.inl.
References ACE_INLINE, and is_loopback_.
Referenced by OpenDDS::DCPS::TcpTransport::release_datalink(), and OpenDDS::DCPS::TcpTransport::unbind_link().
ACE_INLINE bool OpenDDS::DCPS::DataLink::is_loopback | ( | void | ) | const |
Definition at line 42 of file DataLink.inl.
References ACE_INLINE, and is_loopback_.
bool OpenDDS::DCPS::DataLink::is_target | ( | const GUID_t & | remote_id | ) |
This is called on publisher side to see if this link communicates with the provided sub or by the subscriber side to see if this link communicates with the provided pub
Definition at line 1013 of file DataLink.cpp.
References assoc_by_remote_, and pub_sub_maps_lock_.
Referenced by OpenDDS::DCPS::RtpsUdpReceiveStrategy::reassemble_i().
|
virtual |
Only called by our TransportImpl object.
Return Codes: 0 means successful reservation made. -1 means failure.
Reimplemented in OpenDDS::DCPS::TcpDataLink.
Definition at line 398 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), assoc_by_local_, assoc_by_remote_, OpenDDS::DCPS::DataLink::LocalAssociationInfo::associated_, OpenDDS::DCPS::LogGuid::c_str(), DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), OpenDDS::DCPS::TransportSendStrategy::link_released(), LM_DEBUG, pub_sub_maps_lock_, OpenDDS::DCPS::DataLink::LocalAssociationInfo::reliable_, and send_listeners_.
Referenced by OpenDDS::DCPS::TransportClient::add_link(), OpenDDS::DCPS::ShmemDataLink::make_reservation(), OpenDDS::DCPS::TcpDataLink::make_reservation(), OpenDDS::DCPS::MulticastDataLink::make_reservation(), and OpenDDS::DCPS::RtpsUdpDataLink::make_reservation().
|
virtual |
Only called by our TransportImpl object.
Return Codes: 0 means successful reservation made. -1 means failure.
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink, OpenDDS::DCPS::MulticastDataLink, OpenDDS::DCPS::TcpDataLink, and OpenDDS::DCPS::ShmemDataLink.
Definition at line 439 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), assoc_by_local_, assoc_by_remote_, OpenDDS::DCPS::DataLink::LocalAssociationInfo::associated_, OpenDDS::DCPS::LogGuid::c_str(), DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), OpenDDS::DCPS::TransportSendStrategy::link_released(), LM_DEBUG, pub_sub_maps_lock_, recv_listeners_, and OpenDDS::DCPS::DataLink::LocalAssociationInfo::reliable_.
|
protected |
Definition at line 1212 of file DataLink.cpp.
References pub_sub_maps_lock_, recv_listeners_, send_listeners_, and OpenDDS::DCPS::TransportReceiveListener::transport_discovery_change().
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::on_data_available().
void OpenDDS::DCPS::DataLink::notify | ( | ConnectionNotice | notice | ) |
Notify the datawriters and datareaders that the connection is disconnected, lost, or reconnected. The datareader/datawriter will notify the corresponding listener.
Definition at line 848 of file DataLink.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_TEXT(), assoc_by_local_, connection_notice_as_str(), DBG_ENTRY_LVL, DISCONNECTED, LM_DEBUG, LM_ERROR, LOST, OpenDDS::DCPS::TransportReceiveListener::notify_subscription_disconnected(), OpenDDS::DCPS::TransportReceiveListener::notify_subscription_lost(), OpenDDS::DCPS::TransportReceiveListener::notify_subscription_reconnected(), OPENDDS_STRING, pub_sub_maps_lock_, RECONNECTED, recv_listeners_, send_listeners_, OpenDDS::DCPS::set_to_seq(), OpenDDS::DCPS::Transport_debug_level, and VDBG.
Referenced by OpenDDS::DCPS::TcpConnection::active_reconnect_i(), OpenDDS::DCPS::TcpConnection::active_reconnect_open(), OpenDDS::DCPS::TcpConnection::handle_close(), OpenDDS::DCPS::TcpConnection::notify_connection_lost(), OpenDDS::DCPS::TcpConnection::passive_reconnect_i(), and OpenDDS::DCPS::TcpConnection::transfer().
|
private |
Definition at line 340 of file DataLink.cpp.
References impl(), impl_, ACE_Reactor::notify(), ACE_Event_Handler::reactor(), and OpenDDS::DCPS::TransportImpl::reactor_task().
Referenced by cancel_release(), and schedule_stop().
|
private |
Map publication Id value to TransportSendListener.
|
private |
Map subscription Id value to TransportReceieveListener.
|
private |
|
private |
|
protected |
|
protected |
|
protected |
For a given local GUID_t (publication or subscription), return the list of remote peer GUID_ts (subscriptions or publications) that this link knows about due to make_reservation().
Definition at line 490 of file DataLink.cpp.
References assoc_by_local_, pub_sub_maps_lock_, and OpenDDS::DCPS::set_to_seq().
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element(), and OpenDDS::DCPS::RtpsUdpDataLink::get_addresses_i().
|
virtual |
Called before release the datalink or before shutdown to let the concrete DataLink to do anything necessary.
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink, and OpenDDS::DCPS::TcpDataLink.
Definition at line 993 of file DataLink.cpp.
References thr_per_con_send_task_.
Referenced by OpenDDS::DCPS::TcpDataLink::pre_stop_i(), OpenDDS::DCPS::RtpsUdpDataLink::pre_stop_i(), and stop().
|
private |
Save current sub and pub association maps for releasing and create empty maps for new associations.
Definition at line 1045 of file DataLink.cpp.
References ACE_ERROR, ACE_TEXT(), assoc_by_local_, assoc_releasing_, LM_ERROR, and pub_sub_maps_lock_.
Referenced by release_resources().
|
private |
Definition at line 338 of file DataLink.inl.
References ACE_INLINE, and recv_listeners_.
Referenced by clear_associations().
|
inlineprivatevirtual |
Reimplemented in OpenDDS::DCPS::MulticastDataLink.
Definition at line 366 of file DataLink.h.
Referenced by release_reservations().
void OpenDDS::DCPS::DataLink::release_reservations | ( | GUID_t | remote_id, |
GUID_t | local_id, | ||
DataLinkSetMap & | released_locals | ||
) |
This will release reservations that were made by one of the make_reservation() methods. All we know is that the supplied GUID_t is considered to be a remote id. It could be a remote subscriber or a remote publisher.
This gets invoked when a TransportClient::remove_associations() call has been made. Because this DataLink can be shared amongst different TransportClient objects, and different threads could be "managing" the different TransportClient objects, we need to make sure that this release_reservations() works in conjunction with a simultaneous call (in another thread) to one of this DataLink's make_reservation() methods.
Definition at line 512 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), assoc_by_local_, assoc_by_remote_, DBG_ENTRY_LVL, OpenDDS::DCPS::DCPS_debug_level, impl(), impl_, OpenDDS::DCPS::RcHandle< T >::is_nil(), LM_DEBUG, OPENDDS_STRING, pub_sub_maps_lock_, OpenDDS::DCPS::rchandle_from(), ACE_Guard< ACE_LOCK >::release(), OpenDDS::DCPS::TransportImpl::release_datalink(), release_remote_i(), release_reservations_i(), remove_startup_callbacks(), stopped_, and VDBG_LVL.
Referenced by OpenDDS::DCPS::TransportClient::disassociate().
|
inlineprivatevirtual |
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink, and OpenDDS::DCPS::MulticastDataLink.
Definition at line 367 of file DataLink.h.
Referenced by release_reservations().
void OpenDDS::DCPS::DataLink::release_resources | ( | ) |
Definition at line 1001 of file DataLink.cpp.
References DBG_ENTRY_LVL, impl(), impl_, prepare_release(), and OpenDDS::DCPS::TransportImpl::release_link_resources().
Referenced by OpenDDS::DCPS::TcpConnection::tear_link().
|
virtual |
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink.
Definition at line 190 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), and OpenDDS::DCPS::TransportSendStrategy::remove_all_msgs().
ACE_INLINE void OpenDDS::DCPS::DataLink::remove_listener | ( | const GUID_t & | local_id | ) |
Either send or receive listener for this local_id should be removed from internal DataLink structures so it no longer receives events.
Definition at line 289 of file DataLink.inl.
References ACE_DEBUG, ACE_INLINE, ACE_TEXT(), OpenDDS::DCPS::LogGuid::c_str(), LM_DEBUG, pub_sub_maps_lock_, recv_listeners_, send_listeners_, and OpenDDS::DCPS::Transport_debug_level.
Referenced by OpenDDS::DCPS::TransportClient::disassociate().
void OpenDDS::DCPS::DataLink::remove_on_start_callback | ( | const TransportClient_wrch & | client, |
const GUID_t & | remote | ||
) |
Definition at line 173 of file DataLink.cpp.
References OpenDDS::DCPS::WeakRcHandle< T >::lock(), on_start_callbacks_, and strategy_lock_.
|
virtual |
This method is essentially an "undo_send()" method. It's goal is to remove all traces of the sample from this DataLink (if the sample is even known to the DataLink).
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink.
Definition at line 167 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), LM_DEBUG, OpenDDS::DCPS::REMOVE_FOUND, OpenDDS::DCPS::REMOVE_NOT_FOUND, OpenDDS::DCPS::REMOVE_RELEASED, OpenDDS::DCPS::TransportSendStrategy::remove_sample(), thr_per_con_send_task_, and VDBG.
void OpenDDS::DCPS::DataLink::remove_startup_callbacks | ( | const GUID_t & | local, |
const GUID_t & | remote | ||
) |
Definition at line 146 of file DataLink.cpp.
References on_start_callbacks_, pending_on_starts_, and strategy_lock_.
Referenced by release_reservations().
|
protected |
Definition at line 1239 of file DataLink.cpp.
References send_listener_for().
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::ReplayDurableData::handle_event().
void OpenDDS::DCPS::DataLink::resume_send | ( | ) |
The resume_send is used in the case of reconnection on the subscriber's side.
Definition at line 388 of file DataLink.cpp.
References get_send_strategy(), OpenDDS::DCPS::TransportSendStrategy::isDirectMode(), and OpenDDS::DCPS::TransportSendStrategy::resume_send().
void OpenDDS::DCPS::DataLink::schedule_delayed_release | ( | ) |
Definition at line 581 of file DataLink.cpp.
References OpenDDS::DCPS::TransportSendStrategy::clear(), datalink_release_delay_, DBG_ENTRY_LVL, get_send_strategy(), LM_DEBUG, OpenDDS::DCPS::TransportSendStrategy::MODE_DIRECT, OpenDDS::DCPS::TimePoint_T< MonotonicClock >::now(), schedule_stop(), and VDBG.
Referenced by OpenDDS::DCPS::TcpTransport::release_datalink().
void OpenDDS::DCPS::DataLink::schedule_stop | ( | const MonotonicTimePoint & | schedule_to_stop_at | ) |
Allows DataLink::stop to be done on the reactor thread so that this thread avoids possibly deadlocking trying to access reactor to stop strategies or schedule timers
Definition at line 325 of file DataLink.cpp.
References ACE_DEBUG, ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::TimePoint_T< AceClock >::is_zero(), LM_DEBUG, notify_reactor(), scheduled_to_stop_at_, and stopped_.
Referenced by OpenDDS::DCPS::TcpTransport::release_datalink(), and schedule_delayed_release().
ACE_INLINE void OpenDDS::DCPS::DataLink::send | ( | TransportQueueElement * | element | ) |
Definition at line 94 of file DataLink.inl.
References ACE_INLINE, customize_queue_element(), OpenDDS::DCPS::TransportQueueElement::data_dropped(), DBG_ENTRY_LVL, handle_send_request_ack(), OpenDDS::DCPS::TransportQueueElement::is_request_ack(), OpenDDS::DCPS::SEND, send_i(), and thr_per_con_send_task_.
Referenced by send_control().
SendControlStatus OpenDDS::DCPS::DataLink::send_control | ( | const DataSampleHeader & | header, |
Message_Block_Ptr | data | ||
) |
This allows a subclass to send transport control samples over this DataLink. This is useful for sending transport-specific control messages between one or more endpoints under this DataLink's control.
Definition at line 668 of file DataLink.cpp.
References DBG_ENTRY_LVL, OpenDDS::DCPS::GUID_UNKNOWN, OpenDDS::DCPS::move(), OpenDDS::DCPS::DataSampleHeader::publication_id_, send(), OpenDDS::DCPS::SEND_CONTROL_OK, send_response_listener_, send_start(), send_stop(), and OpenDDS::DCPS::SendResponseListener::track_message().
Referenced by OpenDDS::DCPS::MulticastSession::send_control(), and OpenDDS::DCPS::MulticastDataLink::syn_received_no_session().
|
virtual |
|
protectedvirtual |
Reimplemented in OpenDDS::DCPS::TcpDataLink.
Definition at line 119 of file DataLink.inl.
References ACE_INLINE, OpenDDS::DCPS::TransportQueueElement::data_dropped(), DBG_ENTRY_LVL, get_send_strategy(), and OpenDDS::DCPS::TransportSendStrategy::send().
Referenced by OpenDDS::DCPS::ThreadPerConnectionSendTask::execute(), send(), OpenDDS::DCPS::ShmemDataLink::send_association_msg(), and OpenDDS::DCPS::TcpDataLink::send_i().
|
private |
Definition at line 324 of file DataLink.inl.
References ACE_INLINE, and send_listeners_.
Referenced by clear_associations(), and replay_durable_data().
ACE_INLINE void OpenDDS::DCPS::DataLink::send_start | ( | ) |
Called by the TransportClient objects that reference this DataLink. Used by the TransportClient to send a sample, or to send a control message. These functions either give the request to the PerThreadConnectionSendTask when thread_per_connection configuration is true or just simply delegate to the send strategy.
Definition at line 68 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, OpenDDS::DCPS::SEND_START, send_start_i(), and thr_per_con_send_task_.
Referenced by send_control().
|
protected |
The implementation of the functions that accomplish the sample or control message delivery. They just simply delegate to the send strategy.
Definition at line 80 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), and OpenDDS::DCPS::TransportSendStrategy::send_start().
Referenced by OpenDDS::DCPS::ThreadPerConnectionSendTask::execute(), and send_start().
ACE_INLINE void OpenDDS::DCPS::DataLink::send_stop | ( | GUID_t | repoId | ) |
Definition at line 135 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, OpenDDS::DCPS::SEND_STOP, send_stop_i(), and thr_per_con_send_task_.
Referenced by send_control().
|
protected |
Definition at line 147 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, get_send_strategy(), OpenDDS::DCPS::RcHandle< T >::is_nil(), and OpenDDS::DCPS::TransportSendStrategy::send_stop().
Referenced by OpenDDS::DCPS::ThreadPerConnectionSendTask::execute(), send_stop(), and OpenDDS::DCPS::TcpDataLink::send_stop_i().
void OpenDDS::DCPS::DataLink::set_dscp_codepoint | ( | int | cp, |
ACE_SOCK & | socket | ||
) |
The following IPV6 code was lifted in spirit from the RTCORBA implementation of setting the DiffServ codepoint.
Definition at line 1115 of file DataLink.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, ENOTSUP, ACE_SOCK::get_local_addr(), ACE_Addr::get_type(), IPPROTO_IP, LM_DEBUG, LM_ERROR, and ACE_SOCK::set_option().
Referenced by OpenDDS::DCPS::TcpConnection::on_active_connection_established(), and OpenDDS::DCPS::UdpDataLink::open().
ACE_INLINE void OpenDDS::DCPS::DataLink::set_scheduling_release | ( | bool | scheduling_release | ) |
Definition at line 161 of file DataLink.inl.
References ACE_INLINE, and scheduling_release_.
Referenced by cancel_release(), OpenDDS::DCPS::TcpTransport::release_datalink(), and transport_shutdown().
|
protected |
This is how the subclass "announces" to this DataLink base class that this DataLink has now been "connected" and should start the supplied strategy objects. This start method is also going to keep a "copy" of the references to the strategy objects. Also note that it is acceptable to pass-in a NULL (0) TransportReceiveStrategy*, but it is assumed that the TransportSendStrategy* argument is not NULL.
If the start() method fails to start either strategy, then a -1 is returned. Otherwise, a 0 is returned. In the failure case, if one of the strategy objects was started successfully, then it will be stopped before the start() method returns -1.
Definition at line 212 of file DataLink.inl.
References ACE_INLINE, DBG_ENTRY_LVL, invoke_on_start_callbacks(), OpenDDS::DCPS::RcHandle< T >::is_nil(), receive_strategy_, send_strategy_, OpenDDS::DCPS::TransportStrategy::start(), OpenDDS::DCPS::TransportSendStrategy::start(), started_, OpenDDS::DCPS::TransportSendStrategy::stop(), and strategy_lock_.
Referenced by OpenDDS::DCPS::TcpDataLink::connect(), OpenDDS::DCPS::MulticastDataLink::join(), OpenDDS::DCPS::UdpDataLink::open(), OpenDDS::DCPS::ShmemDataLink::open(), OpenDDS::DCPS::RtpsUdpDataLink::open(), and OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_gap_i().
void OpenDDS::DCPS::DataLink::stop | ( | void | ) |
The stop method is used to stop the DataLink prior to shutdown.
Definition at line 355 of file DataLink.cpp.
References OpenDDS::DCPS::RcHandle< T >::is_nil(), pre_stop_i(), receive_strategy_, OpenDDS::DCPS::RcHandle< T >::reset(), scheduled_to_stop_at_, send_strategy_, OpenDDS::DCPS::TransportStrategy::stop(), OpenDDS::DCPS::TransportSendStrategy::stop(), stop_i(), stopped_, strategy_lock_, and OpenDDS::DCPS::TimePoint_T< MonotonicClock >::zero_value.
Referenced by handle_exception(), handle_timeout(), OpenDDS::DCPS::UdpTransport::release_datalink(), OpenDDS::DCPS::ShmemTransport::release_datalink(), and transport_shutdown().
|
protectedvirtual |
This announces the "stop" event to our subclass. The "stop" event will occur when this DataLink is handling a release_reservations() call and determines that it has just released all of the remaining reservations on this DataLink. The "stop" event will also occur when the TransportImpl is being shutdown() - we call stop_i() from our transport_shutdown() method to handle this case.
Reimplemented in OpenDDS::DCPS::RtpsUdpDataLink, OpenDDS::DCPS::MulticastDataLink, OpenDDS::DCPS::TcpDataLink, OpenDDS::DCPS::ShmemDataLink, and OpenDDS::DCPS::UdpDataLink.
Definition at line 622 of file DataLink.cpp.
References DBG_ENTRY_LVL.
Referenced by stop().
GUIDSeq * OpenDDS::DCPS::DataLink::target_intersection | ( | const GUID_t & | pub_id, |
const GUIDSeq & | in, | ||
size_t & | n_subs | ||
) |
For a given publication "pub_id", store the total number of corresponding subscriptions in "n_subs" and given a set of subscriptions (the "in" sequence), return the subset of the input set "in" which are targets of this DataLink (see is_target()).
Definition at line 1020 of file DataLink.cpp.
References assoc_by_local_, pub_sub_maps_lock_, and OpenDDS::DCPS::push_back().
ACE_INLINE void OpenDDS::DCPS::DataLink::terminate_send | ( | ) |
Definition at line 279 of file DataLink.inl.
References ACE_INLINE, get_send_strategy(), and OpenDDS::DCPS::TransportSendStrategy::terminate_send().
void OpenDDS::DCPS::DataLink::terminate_send_if_suspended | ( | ) |
Definition at line 1275 of file DataLink.cpp.
References get_send_strategy(), OPENDDS_END_VERSIONED_NAMESPACE_DECL, and OpenDDS::DCPS::TransportSendStrategy::terminate_send_if_suspended().
ACE_INLINE Priority & OpenDDS::DCPS::DataLink::transport_priority | ( | ) |
Accessors for the TRANSPORT_PRIORITY value associated with this link.
Definition at line 21 of file DataLink.inl.
References ACE_INLINE, and transport_priority_.
Referenced by OpenDDS::DCPS::TcpTransport::connect_datalink(), OpenDDS::DCPS::TcpTransport::connect_tcp_datalink(), OpenDDS::DCPS::UdpDataLink::open(), OpenDDS::DCPS::ThreadPerConnectionSendTask::open(), OpenDDS::DCPS::TcpTransport::release_datalink(), and OpenDDS::DCPS::TcpTransport::unbind_link().
ACE_INLINE Priority OpenDDS::DCPS::DataLink::transport_priority | ( | ) | const |
Definition at line 28 of file DataLink.inl.
References ACE_INLINE, and transport_priority_.
void OpenDDS::DCPS::DataLink::transport_shutdown | ( | ) |
Our TransportImpl will inform us if it is being shutdown() by calling this method.
Definition at line 826 of file DataLink.cpp.
References ACE_Reactor_Timer_Interface::cancel_timer(), DBG_ENTRY_LVL, impl(), impl_, ACE_Event_Handler::reactor(), scheduled_to_stop_at_, set_scheduling_release(), stop(), OpenDDS::DCPS::TransportImpl::timer(), and OpenDDS::DCPS::TimePoint_T< MonotonicClock >::zero_value.
Referenced by OpenDDS::DCPS::UdpTransport::shutdown_i(), and OpenDDS::DCPS::RtpsUdpTransport::shutdown_i().
|
friend |
Definition at line 76 of file DataLink.h.
|
friend |
|
friend |
Definition at line 326 of file DataLink.h.
Referenced by DataLink().
|
private |
Definition at line 414 of file DataLink.h.
Referenced by handle_timeout(), make_reservation(), notify(), OpenDDS::DCPS::operator<<(), peer_ids(), prepare_release(), release_reservations(), target_intersection(), and ~DataLink().
|
private |
Definition at line 406 of file DataLink.h.
Referenced by data_received_i(), handle_timeout(), is_target(), make_reservation(), and release_reservations().
|
private |
Definition at line 428 of file DataLink.h.
Referenced by clear_associations(), and prepare_release().
|
protected |
Configurable delay in milliseconds that the datalink should be released after all associations are removed.
Definition at line 453 of file DataLink.h.
Referenced by DataLink(), datalink_release_delay(), and schedule_delayed_release().
|
protected |
Definition at line 458 of file DataLink.h.
Referenced by create_control(), and DataLink().
|
private |
If default_listener_ is not null and this DataLink receives a sample from a publication GUID that's not in pub_map_, it will call data_received() on the default_listener_.
Definition at line 401 of file DataLink.h.
Referenced by data_received_i(), and default_listener().
|
private |
The id for this DataLink.
Definition at line 420 of file DataLink.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::add_gap_submsg_i(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), DataLink(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::end_historic_samples_i(), id(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::remove_all_msgs(), and OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::request_ack_i().
|
private |
A weak rchandle to the TransportImpl that created this DataLink.
Definition at line 417 of file DataLink.h.
Referenced by handle_exception(), handle_timeout(), impl(), notify_reactor(), release_reservations(), release_resources(), and transport_shutdown().
|
protected |
Definition at line 469 of file DataLink.h.
Referenced by add_on_start_callback().
|
protected |
Is pub or sub ?
Definition at line 463 of file DataLink.h.
Referenced by is_active(), and OpenDDS::DCPS::TcpDataLink::reuse_existing_connection().
|
protected |
Is remote attached to same transport ?
Definition at line 461 of file DataLink.h.
Referenced by is_loopback(), and OpenDDS::DCPS::UdpDataLink::open().
|
protected |
Allocators for data and message blocks used by transport control samples when send_control is called.
Definition at line 457 of file DataLink.h.
Referenced by create_control(), and DataLink().
|
protected |
Definition at line 447 of file DataLink.h.
Referenced by add_on_start_callback(), OpenDDS::DCPS::TcpDataLink::do_association_actions(), invoke_on_start_callbacks(), remove_on_start_callback(), and remove_startup_callbacks().
|
protected |
Definition at line 449 of file DataLink.h.
Referenced by add_on_start_callback(), invoke_on_start_callbacks(), and remove_startup_callbacks().
|
mutableprivate |
Definition at line 403 of file DataLink.h.
Referenced by data_received_i(), default_listener(), is_target(), make_reservation(), network_change(), notify(), peer_ids(), prepare_release(), release_reservations(), remove_listener(), and target_intersection().
|
protected |
The transport receive strategy object for this DataLink.
Definition at line 324 of file DataLink.h.
Referenced by OpenDDS::DCPS::RtpsUdpDataLink::open(), OpenDDS::DCPS::TcpDataLink::receive_strategy(), OpenDDS::DCPS::RtpsUdpDataLink::receive_strategy(), OpenDDS::DCPS::TcpDataLink::reconnect(), OpenDDS::DCPS::TcpDataLink::reuse_existing_connection(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsUdpDataLink(), start(), and stop().
|
private |
Definition at line 396 of file DataLink.h.
Referenced by make_reservation(), network_change(), notify(), recv_listener_for(), and remove_listener().
|
private |
Definition at line 388 of file DataLink.h.
Referenced by cancel_release(), handle_exception(), handle_timeout(), schedule_stop(), stop(), and transport_shutdown().
|
private |
Definition at line 433 of file DataLink.h.
Referenced by cancel_release(), handle_exception(), and set_scheduling_release().
|
private |
Definition at line 392 of file DataLink.h.
Referenced by make_reservation(), network_change(), notify(), remove_listener(), and send_listener_for().
|
protected |
Listener for TransportSendControlElements created in send_control.
Definition at line 467 of file DataLink.h.
Referenced by send_control().
|
protected |
The transport send strategy object for this DataLink.
Definition at line 440 of file DataLink.h.
Referenced by add_on_start_callback(), OpenDDS::DCPS::RtpsUdpDataLink::client_stop(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element_non_reliable_i(), OpenDDS::DCPS::TcpDataLink::do_association_actions(), get_send_strategy(), OpenDDS::DCPS::RtpsUdpDataLink::open(), OpenDDS::DCPS::TcpDataLink::reconnect(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::remove_all_msgs(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::remove_sample(), OpenDDS::DCPS::TcpDataLink::reuse_existing_connection(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsUdpDataLink(), OpenDDS::DCPS::TcpDataLink::send_graceful_disconnect_message(), OpenDDS::DCPS::TcpDataLink::send_strategy(), OpenDDS::DCPS::RtpsUdpDataLink::send_strategy(), start(), and stop().
|
protected |
Definition at line 464 of file DataLink.h.
Referenced by add_on_start_callback(), and start().
|
private |
A boolean indicating if the DataLink has been stopped. This value is protected by the strategy_lock_.
Definition at line 387 of file DataLink.h.
Referenced by cancel_release(), release_reservations(), schedule_stop(), and stop().
|
protected |
Definition at line 441 of file DataLink.h.
Referenced by add_on_start_callback(), OpenDDS::DCPS::RtpsUdpDataLink::associated(), OpenDDS::DCPS::RtpsUdpDataLink::client_stop(), OpenDDS::DCPS::TcpDataLink::connect(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::customize_queue_element_helper(), OpenDDS::DCPS::RtpsUdpDataLink::customize_queue_element_non_reliable_i(), OpenDDS::DCPS::TcpDataLink::do_association_actions(), get_send_strategy(), invoke_on_start_callbacks(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::pre_stop_helper(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_data_i(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_gap_i(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_heartbeat_frag_i(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsReader::process_heartbeat_i(), OpenDDS::DCPS::TcpDataLink::receive_strategy(), OpenDDS::DCPS::RtpsUdpDataLink::received(), OpenDDS::DCPS::TcpDataLink::reconnect(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::remove_all_msgs(), remove_on_start_callback(), OpenDDS::DCPS::RtpsUdpDataLink::RtpsWriter::remove_sample(), remove_startup_callbacks(), OpenDDS::DCPS::TcpDataLink::send_strategy(), start(), and stop().
|
private |
The task used to do the sending. This ThreadPerConnectionSendTask object is created when the thread_per_connection configuration is true. It only dedicate to this datalink.
Definition at line 425 of file DataLink.h.
Referenced by DataLink(), pre_stop_i(), remove_sample(), send(), send_start(), send_stop(), and ~DataLink().
|
private |
TRANSPORT_PRIORITY value associated with the link.
Definition at line 431 of file DataLink.h.
Referenced by transport_priority().