OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <ReliableSession.h>
Public Member Functions | |
ReliableSession (RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer) | |
~ReliableSession () | |
virtual bool | check_header (const TransportHeader &header) |
virtual void | record_header_received (const TransportHeader &header) |
virtual bool | ready_to_deliver (const TransportHeader &header, const ReceivedDataSample &data) |
void | deliver_held_data () |
virtual void | release_remote (const GUID_t &remote) |
virtual bool | control_received (char submessage_id, const Message_Block_Ptr &control) |
void | expire_naks () |
void | send_naks () |
void | nak_received (const Message_Block_Ptr &control) |
void | send_naks (DisjointSequence &found) |
void | nakack_received (const Message_Block_Ptr &control) |
virtual void | send_nakack (SequenceNumber low) |
virtual bool | start (bool active, bool acked) |
virtual void | stop () |
virtual bool | is_reliable () |
virtual void | syn_hook (const SequenceNumber &seq) |
![]() | |
virtual | ~MulticastSession () |
MulticastDataLink * | link () |
MulticastPeer | remote_peer () const |
bool | acked () |
void | set_acked () |
void | syn_received (const Message_Block_Ptr &control) |
void | send_all_syn (const MonotonicTimePoint &now) |
void | send_syn (const GUID_t &local_writer, const GUID_t &remote_reader) |
void | synack_received (const Message_Block_Ptr &control) |
void | send_synack (const GUID_t &local_reader, const GUID_t &remote_writer) |
bool | reassemble (ReceivedDataSample &data, const TransportHeader &header) |
void | add_remote (const GUID_t &local) |
void | add_remote (const GUID_t &local, const GUID_t &remote) |
void | remove_remote (const GUID_t &local, const GUID_t &remote) |
![]() | |
virtual | ~RcObject () |
virtual void | _add_ref () |
virtual void | _remove_ref () |
long | ref_count () const |
WeakObject * | _get_weak_object () const |
Private Types | |
typedef PmfSporadicTask< ReliableSession > | Sporadic |
typedef SequenceNumber | TransportHeaderSN |
Private Member Functions | |
TimeDuration | nak_delay () |
void | process_naks (const MonotonicTimePoint &) |
typedef | OPENDDS_MAP (MonotonicTimePoint, SequenceNumber) NakRequestMap |
OPENDDS_MULTIMAP (TransportHeaderSN, ReceivedDataSample) held_ | |
typedef | OPENDDS_SET (SequenceRange) NakPeerSet |
Private Attributes | |
RcHandle< Sporadic > | nak_watchdog_ |
DisjointSequence | nak_sequence_ |
NakRequestMap | nak_requests_ |
ACE_Thread_Mutex | held_lock_ |
NakPeerSet | nak_peers_ |
Additional Inherited Members | |
![]() | |
typedef ACE_Reverse_Lock< ACE_Thread_Mutex > | Reverse_Lock_t |
![]() | |
MulticastSession (RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer) | |
void | send_control (char submessage_id, Message_Block_Ptr data) |
void | start_syn () |
typedef | OPENDDS_MAP_CMP (GUID_t, RepoIdSet, GUID_tKeyLessThan) PendingRemoteMap |
![]() | |
RcObject () | |
![]() | |
MulticastDataLink * | link_ |
MulticastPeer | remote_peer_ |
ACE_Thread_Mutex | start_lock_ |
Reverse_Lock_t | reverse_start_lock_ |
bool | started_ |
bool | active_ |
TransportReassembly | reassembly_ |
bool | acked_ |
PendingRemoteMap | pending_remote_map_ |
Definition at line 27 of file ReliableSession.h.
|
private |
Definition at line 63 of file ReliableSession.h.
|
private |
Definition at line 74 of file ReliableSession.h.
OpenDDS::DCPS::ReliableSession::ReliableSession | ( | RcHandle< ReactorInterceptor > | interceptor, |
MulticastDataLink * | link, | ||
MulticastPeer | remote_peer | ||
) |
Definition at line 33 of file ReliableSession.cpp.
OpenDDS::DCPS::ReliableSession::~ReliableSession | ( | ) |
Definition at line 43 of file ReliableSession.cpp.
References nak_watchdog_.
|
virtual |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 49 of file ReliableSession.cpp.
References OpenDDS::DCPS::MulticastSession::active_, OpenDDS::DCPS::DisjointSequence::insert(), nak_sequence_, OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::TransportHeader::sequence_, and OpenDDS::DCPS::TransportHeader::source_.
|
virtual |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 183 of file ReliableSession.cpp.
References ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::MulticastSession::control_received(), LM_WARNING, OpenDDS::DCPS::MULTICAST_NAK, OpenDDS::DCPS::MULTICAST_NAKACK, nak_received(), and nakack_received().
void OpenDDS::DCPS::ReliableSession::deliver_held_data | ( | ) |
Definition at line 135 of file ReliableSession.cpp.
References ACE_DEBUG, ACE_GUARD, ACE_TEXT(), OpenDDS::DCPS::LogGuid::c_str(), OpenDDS::DCPS::DisjointSequence::cumulative_ack(), OpenDDS::DCPS::DataLink::data_received(), OpenDDS::DCPS::DisjointSequence::empty(), held_lock_, OpenDDS::DCPS::MulticastSession::link_, LM_DEBUG, OpenDDS::DCPS::DisjointSequence::low(), nak_sequence_, OPENDDS_MULTIMAP(), OpenDDS::DCPS::OPENDDS_VECTOR(), and OpenDDS::DCPS::Transport_debug_level.
Referenced by expire_naks(), nakack_received(), ready_to_deliver(), and record_header_received().
void OpenDDS::DCPS::ReliableSession::expire_naks | ( | ) |
Definition at line 224 of file ReliableSession.cpp.
References ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::TransportReassembly::data_unavailable(), OpenDDS::DCPS::MulticastInst::DEFAULT_NAK_TIMEOUT, deliver_held_data(), OpenDDS::DCPS::TimeDuration::from_msec(), OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::DisjointSequence::insert(), OpenDDS::DCPS::MulticastSession::link_, LM_WARNING, OpenDDS::DCPS::DisjointSequence::low(), nak_requests_, nak_sequence_, OpenDDS::DCPS::TimePoint_T< MonotonicClock >::now(), OpenDDS::DCPS::MulticastSession::reassembly_, and OpenDDS::DCPS::MulticastSession::remote_peer_.
Referenced by process_naks().
|
inlinevirtual |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 58 of file ReliableSession.h.
|
private |
Definition at line 686 of file ReliableSession.cpp.
References OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::MulticastInst::DEFAULT_NAK_INTERVAL, OpenDDS::DCPS::TimeDuration::from_msec(), and OpenDDS::DCPS::MulticastSession::link_.
Referenced by process_naks(), and start().
void OpenDDS::DCPS::ReliableSession::nak_received | ( | const Message_Block_Ptr & | control | ) |
Definition at line 482 of file ReliableSession.cpp.
References ACE_DEBUG, ACE_TEXT(), OpenDDS::DCPS::MulticastSession::active_, OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::SingleSendBuffer::Proxy::empty(), OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), OpenDDS::DCPS::SequenceNumber::getValue(), header, OpenDDS::DCPS::MulticastSession::link(), OpenDDS::DCPS::MulticastSession::link_, LM_DEBUG, OpenDDS::DCPS::MulticastDataLink::local_peer(), OpenDDS::DCPS::SingleSendBuffer::Proxy::low(), OpenDDS::DCPS::MulticastDataLink::receive_strategy(), OpenDDS::DCPS::TransportReceiveStrategy< TH, DSH >::received_header(), OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::SingleSendBuffer::resend(), OpenDDS::DCPS::MulticastDataLink::send_buffer(), send_nakack(), OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN(), OpenDDS::DCPS::TransportHeader::source_, and OpenDDS::DCPS::TransportHeader::swap_bytes().
Referenced by control_received().
void OpenDDS::DCPS::ReliableSession::nakack_received | ( | const Message_Block_Ptr & | control | ) |
Definition at line 587 of file ReliableSession.cpp.
References ACE_ERROR, ACE_TEXT(), OpenDDS::DCPS::MulticastSession::active_, OpenDDS::DCPS::TransportReassembly::data_unavailable(), OpenDDS::DCPS::DCPS_debug_level, deliver_held_data(), OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), header, OpenDDS::DCPS::DisjointSequence::insert(), OpenDDS::DCPS::MulticastSession::link(), OpenDDS::DCPS::MulticastSession::link_, LM_WARNING, nak_sequence_, OpenDDS::DCPS::MulticastSession::reassembly_, OpenDDS::DCPS::MulticastDataLink::receive_strategy(), OpenDDS::DCPS::TransportReceiveStrategy< TH, DSH >::received_header(), OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::TransportHeader::source_, and OpenDDS::DCPS::TransportHeader::swap_bytes().
Referenced by control_received().
|
private |
|
private |
Referenced by deliver_held_data(), ready_to_deliver(), and release_remote().
|
private |
|
private |
Definition at line 699 of file ReliableSession.cpp.
References expire_naks(), nak_delay(), nak_watchdog_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, and send_naks().
|
virtual |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 81 of file ReliableSession.cpp.
References ACE_DEBUG, ACE_GUARD_RETURN, ACE_TEXT(), OpenDDS::DCPS::MulticastSession::acked(), OpenDDS::DCPS::LogGuid::c_str(), OpenDDS::DCPS::DisjointSequence::cumulative_ack(), deliver_held_data(), OpenDDS::DCPS::DisjointSequence::disjoint(), OpenDDS::DCPS::DisjointSequence::empty(), OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::ReceivedDataSample::header_, held_lock_, LM_DEBUG, OpenDDS::DCPS::DisjointSequence::low(), nak_sequence_, OPENDDS_MULTIMAP(), OpenDDS::DCPS::DataSampleHeader::publication_id_, OpenDDS::DCPS::TransportHeader::sequence_, OpenDDS::DCPS::DataSampleHeader::sequence_, and OpenDDS::DCPS::Transport_debug_level.
|
virtual |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 66 of file ReliableSession.cpp.
References OpenDDS::DCPS::MulticastSession::active_, deliver_held_data(), OpenDDS::DCPS::DisjointSequence::insert(), nak_sequence_, OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::TransportHeader::sequence_, and OpenDDS::DCPS::TransportHeader::source_.
|
virtual |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 166 of file ReliableSession.cpp.
References ACE_GUARD, held_lock_, and OPENDDS_MULTIMAP().
|
virtual |
Definition at line 636 of file ReliableSession.cpp.
References OpenDDS::DCPS::unique_ptr< T, Deleter >::get(), OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::move(), OpenDDS::DCPS::MULTICAST_NAKACK, and OpenDDS::DCPS::MulticastSession::send_control().
Referenced by nak_received().
|
virtual |
The range first - second will be skipped (no naks sent for it).
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 265 of file ReliableSession.cpp.
References ACE_DEBUG, ACE_TEXT(), OpenDDS::DCPS::MulticastSession::acked(), OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::DisjointSequence::cumulative_ack(), OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::MulticastInst::DEFAULT_NAK_DELAY_INTERVALS, OpenDDS::DCPS::MulticastInst::DEFAULT_NAK_MAX, OpenDDS::DCPS::DisjointSequence::disjoint(), OpenDDS::DCPS::DisjointSequence::dump(), OpenDDS::DCPS::SequenceNumber::getValue(), OpenDDS::DCPS::DisjointSequence::insert(), OpenDDS::DCPS::MulticastSession::link(), OpenDDS::DCPS::MulticastSession::link_, LM_DEBUG, OpenDDS::DCPS::DisjointSequence::low(), OpenDDS::DCPS::move(), OpenDDS::DCPS::MULTICAST_NAK, nak_peers_, nak_requests_, nak_sequence_, OpenDDS::DCPS::TimePoint_T< MonotonicClock >::now(), OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::MulticastSession::send_control(), and ACE_Utils::truncate_cast().
Referenced by process_naks().
void OpenDDS::DCPS::ReliableSession::send_naks | ( | DisjointSequence & | found | ) |
Definition at line 551 of file ReliableSession.cpp.
References ACE_DEBUG, ACE_TEXT(), OpenDDS::DCPS::DCPS_debug_level, OpenDDS::DCPS::MulticastSession::link(), LM_DEBUG, OpenDDS::DCPS::move(), OpenDDS::DCPS::MULTICAST_NAK, OpenDDS::DCPS::MulticastSession::remote_peer_, OpenDDS::DCPS::MulticastSession::send_control(), and ACE_Utils::truncate_cast().
|
virtual |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 650 of file ReliableSession.cpp.
References ACE_GUARD_RETURN, OpenDDS::DCPS::MulticastSession::active_, nak_delay(), nak_watchdog_, OpenDDS::DCPS::MulticastSession::reverse_start_lock_, OpenDDS::DCPS::MulticastSession::set_acked(), OpenDDS::DCPS::MulticastSession::start_lock_, and OpenDDS::DCPS::MulticastSession::started_.
|
virtual |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 679 of file ReliableSession.cpp.
References nak_watchdog_, and OpenDDS::DCPS::MulticastSession::stop().
|
virtual |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 211 of file ReliableSession.cpp.
References OpenDDS::DCPS::DisjointSequence::insert(), nak_sequence_, and OpenDDS::DCPS::DisjointSequence::reset().
|
private |
Definition at line 73 of file ReliableSession.h.
Referenced by deliver_held_data(), ready_to_deliver(), and release_remote().
|
private |
Definition at line 78 of file ReliableSession.h.
Referenced by send_naks().
|
private |
Definition at line 71 of file ReliableSession.h.
Referenced by expire_naks(), and send_naks().
|
private |
Definition at line 68 of file ReliableSession.h.
Referenced by check_header(), deliver_held_data(), expire_naks(), nakack_received(), ready_to_deliver(), record_header_received(), send_naks(), and syn_hook().
Definition at line 64 of file ReliableSession.h.
Referenced by process_naks(), start(), stop(), and ~ReliableSession().