#include <BestEffortSession.h>
Inheritance diagram for OpenDDS::DCPS::BestEffortSession:


Public Member Functions | |
| BestEffortSession (ACE_Reactor *reactor, ACE_thread_t owner, 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 () |
Private Attributes | |
| SequenceNumber | expected_ |
Definition at line 18 of file BestEffortSession.h.
| OpenDDS::DCPS::BestEffortSession::BestEffortSession | ( | ACE_Reactor * | reactor, | |
| ACE_thread_t | owner, | |||
| MulticastDataLink * | link, | |||
| MulticastPeer | remote_peer | |||
| ) |
Definition at line 13 of file BestEffortSession.cpp.
00017 : MulticastSession(reactor, owner, link, remote_peer) 00018 , expected_(SequenceNumber::SEQUENCENUMBER_UNKNOWN()) 00019 { 00020 }
| bool OpenDDS::DCPS::BestEffortSession::check_header | ( | const TransportHeader & | header | ) | [virtual] |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 23 of file BestEffortSession.cpp.
References OpenDDS::DCPS::TransportReassembly::data_unavailable(), expected_, header, OpenDDS::DCPS::MulticastSession::reassembly_, OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN(), and VDBG_LVL.
Referenced by record_header_received().
00024 { 00025 if (header.sequence_ != this->expected_ && 00026 expected_ != SequenceNumber::SEQUENCENUMBER_UNKNOWN()) { 00027 VDBG_LVL((LM_WARNING, 00028 ACE_TEXT("(%P|%t) WARNING: BestEffortSession::check_header ") 00029 ACE_TEXT("expected %q received %q\n"), 00030 this->expected_.getValue(), header.sequence_.getValue()), 2); 00031 if (header.sequence_ > this->expected_) { 00032 SequenceRange range(this->expected_, header.sequence_.previous()); 00033 this->reassembly_.data_unavailable(range); 00034 } 00035 } 00036 00037 this->expected_ = header.sequence_; 00038 ++this->expected_; 00039 00040 // Assume header is valid; this does not prevent duplicate 00041 // delivery of datagrams: 00042 return true; 00043 }
| virtual bool OpenDDS::DCPS::BestEffortSession::is_reliable | ( | ) | [inline, virtual] |
Reimplemented from OpenDDS::DCPS::MulticastSession.
Definition at line 33 of file BestEffortSession.h.
| 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_, header, OpenDDS::DCPS::SequenceNumber::previous(), and OpenDDS::DCPS::SequenceNumber::SEQUENCENUMBER_UNKNOWN().
00056 { 00057 if (expected_ != SequenceNumber::SEQUENCENUMBER_UNKNOWN() 00058 && header.sequence_ == expected_.previous()) { 00059 return true; 00060 } 00061 return false; 00062 }
| 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(), and header.
00047 { 00048 if (this->remote_peer_ != header.source_) return; 00049 00050 check_header(header); 00051 }
| bool OpenDDS::DCPS::BestEffortSession::start | ( | bool | active, | |
| bool | acked | |||
| ) | [virtual] |
Implements OpenDDS::DCPS::MulticastSession.
Definition at line 65 of file BestEffortSession.cpp.
References OpenDDS::DCPS::MulticastSession::active_, and OpenDDS::DCPS::MulticastSession::started_.
00066 { 00067 ACE_GUARD_RETURN(ACE_SYNCH_MUTEX, 00068 guard, 00069 this->start_lock_, 00070 false); 00071 00072 if (this->started_) return true; // already started 00073 00074 this->active_ = active; 00075 00076 if (active && !this->start_syn()) { 00077 ACE_ERROR_RETURN((LM_ERROR, 00078 ACE_TEXT("(%P|%t) ERROR: ") 00079 ACE_TEXT("BestEffortSession::start: ") 00080 ACE_TEXT("failed to schedule SYN watchdog!\n")), 00081 false); 00082 } 00083 00084 return this->started_ = true; 00085 }
Definition at line 36 of file BestEffortSession.h.
Referenced by check_header(), and ready_to_deliver().
1.4.7