#include <MulticastSession.h>
Public Member Functions | |
SynWatchdog (ACE_Reactor *reactor, ACE_thread_t owner, MulticastSession *session) | |
virtual bool | reactor_is_shut_down () const |
Protected Member Functions | |
virtual ACE_Time_Value | next_interval () |
virtual void | on_interval (const void *arg) |
virtual ACE_Time_Value | next_timeout () |
virtual void | on_timeout (const void *arg) |
Private Member Functions | |
~SynWatchdog () | |
Private Attributes | |
MulticastSession * | session_ |
size_t | retries_ |
Definition at line 36 of file MulticastSession.h.
OpenDDS::DCPS::SynWatchdog::SynWatchdog | ( | ACE_Reactor * | reactor, | |
ACE_thread_t | owner, | |||
MulticastSession * | session | |||
) | [explicit] |
Definition at line 21 of file MulticastSession.cpp.
00024 : DataLinkWatchdog (reactor, owner) 00025 , session_(session) 00026 , retries_(0) 00027 { 00028 }
OpenDDS::DCPS::SynWatchdog::~SynWatchdog | ( | ) | [inline, private] |
Definition at line 53 of file MulticastSession.h.
ACE_Time_Value OpenDDS::DCPS::SynWatchdog::next_interval | ( | ) | [protected, virtual] |
Implements OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 37 of file MulticastSession.cpp.
References OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::MulticastSession::link(), retries_, session_, OpenDDS::DCPS::MulticastInst::syn_backoff_, and OpenDDS::DCPS::MulticastInst::syn_interval_.
00038 { 00039 MulticastInst& config = this->session_->link()->config(); 00040 ACE_Time_Value interval(config.syn_interval_); 00041 00042 // Apply exponential backoff based on number of retries: 00043 if (this->retries_ > 0) { 00044 interval *= std::pow(config.syn_backoff_, double(this->retries_)); 00045 } 00046 ++this->retries_; 00047 00048 return interval; 00049 }
ACE_Time_Value OpenDDS::DCPS::SynWatchdog::next_timeout | ( | ) | [protected, virtual] |
Reimplemented from OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 60 of file MulticastSession.cpp.
References OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::MulticastSession::link(), session_, and OpenDDS::DCPS::MulticastInst::syn_timeout_.
00061 { 00062 return this->session_->link()->config().syn_timeout_; 00063 }
void OpenDDS::DCPS::SynWatchdog::on_interval | ( | const void * | arg | ) | [protected, virtual] |
Implements OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 52 of file MulticastSession.cpp.
References OpenDDS::DCPS::MulticastSession::send_syn(), and session_.
00053 { 00054 // Initiate handshake by sending a MULTICAST_SYN control 00055 // sample to the assigned remote peer: 00056 this->session_->send_syn(); 00057 }
void OpenDDS::DCPS::SynWatchdog::on_timeout | ( | const void * | arg | ) | [protected, virtual] |
Reimplemented from OpenDDS::DCPS::DataLinkWatchdog.
Definition at line 66 of file MulticastSession.cpp.
References ACE_TEXT(), OpenDDS::DCPS::MulticastDataLink::config(), OpenDDS::DCPS::MulticastSession::link(), LM_WARNING, OpenDDS::DCPS::MulticastDataLink::local_peer(), OpenDDS::DCPS::TransportInst::name(), OpenDDS::DCPS::MulticastSession::remote_peer(), and session_.
00067 { 00068 // There is no recourse if a link is unable to handshake; 00069 // log an error and return: 00070 ACE_ERROR((LM_WARNING, 00071 ACE_TEXT("(%P|%t) WARNING: ") 00072 ACE_TEXT("SynWatchdog[transport=%C]::on_timeout: ") 00073 ACE_TEXT("timed out waiting on remote peer: %#08x%08x local: %#08x%08x\n"), 00074 this->session_->link()->config().name().c_str(), 00075 (unsigned int)(this->session_->remote_peer() >> 32), 00076 (unsigned int) this->session_->remote_peer(), 00077 (unsigned int)(this->session_->link()->local_peer() >> 32), 00078 (unsigned int) this->session_->link()->local_peer())); 00079 }
bool OpenDDS::DCPS::SynWatchdog::reactor_is_shut_down | ( | ) | const [virtual] |
Implements OpenDDS::DCPS::ReactorInterceptor.
Definition at line 31 of file MulticastSession.cpp.
References OpenDDS::DCPS::TransportImpl::is_shut_down(), OpenDDS::DCPS::MulticastSession::link(), session_, and OpenDDS::DCPS::MulticastDataLink::transport().
00032 { 00033 return session_->link()->transport().is_shut_down(); 00034 }
size_t OpenDDS::DCPS::SynWatchdog::retries_ [private] |
Definition at line 55 of file MulticastSession.h.
Referenced by next_interval().
Definition at line 54 of file MulticastSession.h.
Referenced by next_interval(), next_timeout(), on_interval(), on_timeout(), and reactor_is_shut_down().