OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::BestEffortSession Class Reference

#include <BestEffortSession.h>

Inheritance diagram for OpenDDS::DCPS::BestEffortSession:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::BestEffortSession:
Collaboration graph
[legend]

Public Member Functions

 BestEffortSession (RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer)
 
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)
 
virtual bool start (bool active, bool acked)
 
virtual bool is_reliable ()
 
- Public Member Functions inherited from OpenDDS::DCPS::MulticastSession
virtual ~MulticastSession ()
 
MulticastDataLinklink ()
 
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)
 
virtual void send_naks ()
 
virtual void release_remote (const GUID_t &)
 
virtual bool control_received (char submessage_id, const Message_Block_Ptr &control)
 
virtual void stop ()
 
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)
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Private Attributes

SequenceNumber expected_
 

Additional Inherited Members

- Protected Types inherited from OpenDDS::DCPS::MulticastSession
typedef ACE_Reverse_Lock< ACE_Thread_MutexReverse_Lock_t
 
- Protected Member Functions inherited from OpenDDS::DCPS::MulticastSession
 MulticastSession (RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer)
 
void send_control (char submessage_id, Message_Block_Ptr data)
 
void start_syn ()
 
virtual void syn_hook (const SequenceNumber &)
 
typedef OPENDDS_MAP_CMP (GUID_t, RepoIdSet, GUID_tKeyLessThan) PendingRemoteMap
 
- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 
- Protected Attributes inherited from OpenDDS::DCPS::MulticastSession
MulticastDataLinklink_
 
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_
 

Detailed Description

Definition at line 20 of file BestEffortSession.h.

Constructor & Destructor Documentation

◆ BestEffortSession()

OpenDDS::DCPS::BestEffortSession::BestEffortSession ( RcHandle< ReactorInterceptor interceptor,
MulticastDataLink link,
MulticastPeer  remote_peer 
)

Definition at line 15 of file BestEffortSession.cpp.

18  : MulticastSession(interceptor, link, remote_peer)
20 {}
MulticastSession(RcHandle< ReactorInterceptor > interceptor, MulticastDataLink *link, MulticastPeer remote_peer)
MulticastPeer remote_peer() const
static SequenceNumber SEQUENCENUMBER_UNKNOWN()

Member Function Documentation

◆ check_header()

bool OpenDDS::DCPS::BestEffortSession::check_header ( const TransportHeader header)
virtual

Implements OpenDDS::DCPS::MulticastSession.

Definition at line 23 of file BestEffortSession.cpp.

References ACE_TEXT(), OpenDDS::DCPS::TransportReassembly::data_unavailable(), expected_, OpenDDS::DCPS::SequenceNumber::getValue(), LM_WARNING, OpenDDS::DCPS::SequenceNumber::previous(), OpenDDS::DCPS::MulticastSession::reassembly_, OpenDDS::DCPS::TransportHeader::sequence_, OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN(), and VDBG_LVL.

Referenced by record_header_received().

24 {
25  if (header.sequence_ != this->expected_ &&
27  VDBG_LVL((LM_WARNING,
28  ACE_TEXT("(%P|%t) WARNING: BestEffortSession::check_header ")
29  ACE_TEXT("expected %q received %q\n"),
30  this->expected_.getValue(), header.sequence_.getValue()), 2);
31  if (header.sequence_ > this->expected_) {
32  FragmentRange range(this->expected_.getValue(), header.sequence_.previous().getValue());
33  this->reassembly_.data_unavailable(range);
34  }
35  }
36 
37  this->expected_ = header.sequence_;
38  ++this->expected_;
39 
40  // Assume header is valid; this does not prevent duplicate
41  // delivery of datagrams:
42  return true;
43 }
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Definition: CHANGELOG.txt:8
std::pair< FragmentNumber, FragmentNumber > FragmentRange
void data_unavailable(const FragmentRange &transportSeqDropped)
ACE_TEXT("TCP_Factory")
#define VDBG_LVL(DBG_ARGS, LEVEL)
static SequenceNumber SEQUENCENUMBER_UNKNOWN()

◆ is_reliable()

virtual bool OpenDDS::DCPS::BestEffortSession::is_reliable ( )
inlinevirtual

Reimplemented from OpenDDS::DCPS::MulticastSession.

Definition at line 34 of file BestEffortSession.h.

34 { return false;}

◆ ready_to_deliver()

bool OpenDDS::DCPS::BestEffortSession::ready_to_deliver ( const TransportHeader header,
const ReceivedDataSample data 
)
virtual

Implements OpenDDS::DCPS::MulticastSession.

Definition at line 54 of file BestEffortSession.cpp.

References expected_, OpenDDS::DCPS::SequenceNumber::previous(), OpenDDS::DCPS::TransportHeader::sequence_, and OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN().

56 {
58  && header.sequence_ == expected_.previous()) {
59  return true;
60  }
61  return false;
62 }
SequenceNumber previous() const
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Definition: CHANGELOG.txt:8
static SequenceNumber SEQUENCENUMBER_UNKNOWN()

◆ record_header_received()

void OpenDDS::DCPS::BestEffortSession::record_header_received ( const TransportHeader header)
virtual

Implements OpenDDS::DCPS::MulticastSession.

Definition at line 46 of file BestEffortSession.cpp.

References check_header(), OpenDDS::DCPS::MulticastSession::remote_peer_, and OpenDDS::DCPS::TransportHeader::source_.

47 {
48  if (this->remote_peer_ != header.source_) return;
49 
51 }
Christopher Diggins *renamed files *fixing compilation errors *adding Visual C project file *removed make Max Lybbert *removed references to missing and unused header
Definition: CHANGELOG.txt:8
virtual bool check_header(const TransportHeader &header)

◆ start()

bool OpenDDS::DCPS::BestEffortSession::start ( bool  active,
bool  acked 
)
virtual

Implements OpenDDS::DCPS::MulticastSession.

Definition at line 65 of file BestEffortSession.cpp.

References ACE_GUARD_RETURN, ACE_SYNCH_MUTEX, OpenDDS::DCPS::MulticastSession::active_, OPENDDS_END_VERSIONED_NAMESPACE_DECL, OpenDDS::DCPS::MulticastSession::set_acked(), OpenDDS::DCPS::MulticastSession::start_lock_, and OpenDDS::DCPS::MulticastSession::started_.

66 {
67  ACE_GUARD_RETURN(ACE_SYNCH_MUTEX,
68  guard,
69  this->start_lock_,
70  false);
71 
72  if (this->started_) return true; // already started
73 
74  this->active_ = active;
75  set_acked();
76 
77  return this->started_ = true;
78 }
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)

Member Data Documentation

◆ expected_

SequenceNumber OpenDDS::DCPS::BestEffortSession::expected_
private

Definition at line 37 of file BestEffortSession.h.

Referenced by check_header(), and ready_to_deliver().


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