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 | |
RtpsUdpDataLink * | link_ |
HeldData | held_data_ |
Definition at line 512 of file RtpsUdpDataLink.h.
typedef std::pair<ReceivedDataSample, RepoId> OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::HeldDataEntry [private] |
Definition at line 527 of file RtpsUdpDataLink.h.
OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::HeldDataDeliveryHandler | ( | RtpsUdpDataLink * | link | ) | [inline] |
Definition at line 514 of file RtpsUdpDataLink.h.
00515 : link_(link) { 00516 }
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 }
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 }
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 }
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 }
HeldData OpenDDS::DCPS::RtpsUdpDataLink::HeldDataDeliveryHandler::held_data_ [private] |
Definition at line 529 of file RtpsUdpDataLink.h.
Referenced by handle_exception(), and notify_delivery().
Definition at line 526 of file RtpsUdpDataLink.h.
Referenced by add_reference(), handle_exception(), notify_delivery(), and remove_reference().