#include <ReliableSession.h>
Public Member Functions | |
NakWatchdog (ACE_Reactor *reactor, ACE_thread_t owner, ReliableSession *session) | |
virtual bool | reactor_is_shut_down () const |
Protected Member Functions | |
virtual ACE_Time_Value | next_interval () |
virtual void | on_interval (const void *arg) |
Private Member Functions | |
~NakWatchdog () | |
Private Attributes | |
ReliableSession * | session_ |
Definition at line 29 of file ReliableSession.h.
OpenDDS::DCPS::NakWatchdog::NakWatchdog | ( | ACE_Reactor * | reactor, | |
ACE_thread_t | owner, | |||
ReliableSession * | session | |||
) | [explicit] |
Definition at line 28 of file ReliableSession.cpp.
00031 : DataLinkWatchdog(reactor, owner) 00032 , session_(session) 00033 { 00034 }
OpenDDS::DCPS::NakWatchdog::~NakWatchdog | ( | ) | [inline, private] |
Definition at line 43 of file ReliableSession.h.
ACE_Time_Value OpenDDS::DCPS::NakWatchdog::next_interval | ( | ) | [protected, virtual] |
Implements OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 37 of file ReliableSession.cpp.
References OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::MulticastSession::link(), OpenDDS::DCPS::MulticastInst::nak_interval_, and session_.
00038 { 00039 ACE_Time_Value interval(this->session_->link()->config().nak_interval_); 00040 00041 // Apply random backoff to minimize potential collisions: 00042 interval *= static_cast<double>(std::rand()) / 00043 static_cast<double>(RAND_MAX) + 1.0; 00044 00045 return interval; 00046 }
void OpenDDS::DCPS::NakWatchdog::on_interval | ( | const void * | arg | ) | [protected, virtual] |
Implements OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 49 of file ReliableSession.cpp.
References OpenDDS::DCPS::ReliableSession::expire_naks(), OpenDDS::DCPS::ReliableSession::send_naks(), and session_.
00050 { 00051 // Expire outstanding repair requests that have not yet been 00052 // fulfilled; this prevents NAK implosions due to remote 00053 // peers becoming unresponsive: 00054 this->session_->expire_naks(); 00055 00056 // Initiate repairs by sending MULTICAST_NAK control samples 00057 // to remote peers from which we are missing data: 00058 this->session_->send_naks(); 00059 }
bool OpenDDS::DCPS::NakWatchdog::reactor_is_shut_down | ( | ) | const [virtual] |
Implements OpenDDS::DCPS::ReactorInterceptor.
Definition at line 77 of file ReliableSession.cpp.
References OpenDDS::DCPS::TransportImpl::is_shut_down(), OpenDDS::DCPS::MulticastSession::link(), session_, and OpenDDS::DCPS::MulticastDataLink::transport().
00078 { 00079 return session_->link()->transport().is_shut_down(); 00080 }
Definition at line 44 of file ReliableSession.h.
Referenced by next_interval(), on_interval(), and reactor_is_shut_down().