OpenDDS::DCPS::SynWatchdog Class Reference

#include <MulticastSession.h>

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

List of all members.

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

MulticastSessionsession_
size_t retries_

Detailed Description

Definition at line 36 of file MulticastSession.h.


Constructor & Destructor Documentation

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.

00053 { }


Member Function Documentation

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:


Member Data Documentation

Definition at line 55 of file MulticastSession.h.

Referenced by next_interval().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1