OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler Class Reference

Inheritance diagram for OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 HeldDataDeliveryHandler (RtpsUdpDataLink *link)
int handle_exception (ACE_HANDLE)
void notify_delivery (const RepoId &readerId, WriterInfo &info)
virtual
ACE_Event_Handler::Reference_Count 
add_reference ()
virtual
ACE_Event_Handler::Reference_Count 
remove_reference ()

Private Types

typedef std::pair
< ReceivedDataSample, RepoId
HeldDataEntry

Private Member Functions

typedef OPENDDS_VECTOR (HeldDataEntry) HeldData

Private Attributes

RtpsUdpDataLinklink_
HeldData held_data_

Detailed Description

Definition at line 512 of file RtpsUdpDataLink.h.


Member Typedef Documentation

Definition at line 527 of file RtpsUdpDataLink.h.


Constructor & Destructor Documentation

OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::HeldDataDeliveryHandler ( RtpsUdpDataLink link  )  [inline]

Definition at line 514 of file RtpsUdpDataLink.h.

00515       : link_(link) {
00516       }


Member Function Documentation

ACE_Event_Handler::Reference_Count OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::add_reference ( void   )  [virtual]

Reimplemented from OpenDDS::DCPS::RcEventHandler.

Definition at line 2847 of file RtpsUdpDataLink.cpp.

References OpenDDS::DCPS::RcEventHandler::add_reference(), and link_.

02848 {
02849   return link_->add_reference();
02850 }

Here is the call graph for this function:

int OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::handle_exception ( ACE_HANDLE   )  [virtual]

Reimplemented from ACE_Event_Handler.

Definition at line 2811 of file RtpsUdpDataLink.cpp.

References OpenDDS::DCPS::DataLink::data_received(), held_data_, link_, OpenDDS::DCPS::RtpsUdpDataLink::reactor_task_, and ACE_Thread::self().

02812 {
02813   ACE_ASSERT(link_->reactor_task_->get_reactor_owner() == ACE_Thread::self());
02814 
02815   HeldData::iterator itr;
02816   for (itr = held_data_.begin(); itr != held_data_.end(); ++itr) {
02817     link_->data_received(itr->first, itr->second);
02818   }
02819   held_data_.clear();
02820   return 0;
02821 }

Here is the call graph for this function:

void OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::notify_delivery ( const RepoId readerId,
WriterInfo info 
)

Definition at line 2823 of file RtpsUdpDataLink.cpp.

References ACE_TEXT(), OpenDDS::DCPS::DisjointSequence::cumulative_ack(), held_data_, link_, LM_DEBUG, OpenDDS::DCPS::OPENDDS_MAP(), OPENDDS_STRING, OpenDDS::DCPS::RtpsUdpDataLink::reactor_task_, OpenDDS::DCPS::RtpsUdpDataLink::WriterInfo::recvd_, ACE_Thread::self(), and OpenDDS::DCPS::Transport_debug_level.

Referenced by OpenDDS::DCPS::RtpsUdpDataLink::deliver_held_data().

02824 {
02825   ACE_ASSERT(link_->reactor_task_->get_reactor_owner() == ACE_Thread::self());
02826 
02827   const SequenceNumber ca = info.recvd_.cumulative_ack();
02828   typedef OPENDDS_MAP(SequenceNumber, ReceivedDataSample)::iterator iter;
02829   const iter end = info.held_.upper_bound(ca);
02830 
02831   for (iter it = info.held_.begin(); it != end; /*increment in loop body*/) {
02832     if (Transport_debug_level > 5) {
02833       GuidConverter reader(readerId);
02834       ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%P|%t) RtpsUdpDataLink::HeldDataDeliveryHandler::notify_delivery -")
02835                            ACE_TEXT(" deliver sequence: %q to %C\n"),
02836                            it->second.header_.sequence_.getValue(),
02837                            OPENDDS_STRING(reader).c_str()));
02838     }
02839     // The head_data_ is not protected by a mutex because it is always accessed from the reactor task thread.
02840     held_data_.push_back(HeldDataEntry(it->second, readerId));
02841     info.held_.erase(it++);
02842   }
02843   link_->reactor_task_->get_reactor()->notify(this);
02844 }

Here is the call graph for this function:

Here is the caller graph for this function:

typedef OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::OPENDDS_VECTOR ( HeldDataEntry   )  [private]
ACE_Event_Handler::Reference_Count OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::remove_reference ( void   )  [virtual]

Reimplemented from OpenDDS::DCPS::RcEventHandler.

Definition at line 2853 of file RtpsUdpDataLink.cpp.

References link_, and OpenDDS::DCPS::RcEventHandler::remove_reference().

02854 {
02855   return link_->remove_reference();
02856 }

Here is the call graph for this function:


Member Data Documentation

Definition at line 529 of file RtpsUdpDataLink.h.

Referenced by handle_exception(), and notify_delivery().


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