OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::BuildChainVisitor Class Reference

#include <BuildChainVisitor.h>

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

Public Member Functions

 BuildChainVisitor ()
 
virtual ~BuildChainVisitor ()
 
virtual int visit_element (TransportQueueElement *element)
 
ACE_Message_Blockchain ()
 
- Public Member Functions inherited from OpenDDS::DCPS::BasicQueueVisitor< TransportQueueElement >
 BasicQueueVisitor ()
 
virtual ~BasicQueueVisitor ()
 
virtual int visit_element_remove (TransportQueueElement *element, int &remove)
 
virtual int visit_element_ref (TransportQueueElement *&element)
 

Private Attributes

ACE_Message_Blockhead_
 
ACE_Message_Blocktail_
 

Detailed Description

Definition at line 25 of file BuildChainVisitor.h.

Constructor & Destructor Documentation

◆ BuildChainVisitor()

ACE_INLINE OpenDDS::DCPS::BuildChainVisitor::BuildChainVisitor ( )

Definition at line 11 of file BuildChainVisitor.inl.

References ACE_INLINE, and DBG_ENTRY_LVL.

12  : head_(0),
13  tail_(0)
14 {
15  DBG_ENTRY_LVL("BuildChainVisitor", "BuildChainVisitor", 6);
16 }
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68

◆ ~BuildChainVisitor()

OpenDDS::DCPS::BuildChainVisitor::~BuildChainVisitor ( )
virtual

Definition at line 16 of file BuildChainVisitor.cpp.

References DBG_ENTRY_LVL.

17 {
18  DBG_ENTRY_LVL("BuildChainVisitor", "~BuildChainVisitor", 6);
19 }
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68

Member Function Documentation

◆ chain()

ACE_INLINE ACE_Message_Block * OpenDDS::DCPS::BuildChainVisitor::chain ( )

Accessor to extract the chain, leaving the head_ and tail_ set to 0 as a result.

Definition at line 20 of file BuildChainVisitor.inl.

References DBG_ENTRY_LVL, head_, and tail_.

Referenced by OpenDDS::DCPS::TransportSendStrategy::prepare_packet().

21 {
22  DBG_ENTRY_LVL("BuildChainVisitor", "chain", 6);
23 
24  ACE_Message_Block* head = head_;
25  head_ = tail_ = 0;
26  return head;
27 }
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68

◆ visit_element()

int OpenDDS::DCPS::BuildChainVisitor::visit_element ( TransportQueueElement element)
virtual

This is the visit_element() method that will be called when the visitation method used is BasicQueue<T>::accept_visitor().

Return 0 if visiting should stop, return 1 to continue visiting.

Reimplemented from OpenDDS::DCPS::BasicQueueVisitor< TransportQueueElement >.

Definition at line 22 of file BuildChainVisitor.cpp.

References ACE_Message_Block::cont(), DBG_ENTRY_LVL, ACE_Message_Block::duplicate(), head_, OpenDDS::DCPS::TransportQueueElement::msg(), and tail_.

23 {
24  DBG_ENTRY_LVL("BuildChainVisitor", "visit_element", 6);
25 
26  if (head_ == 0) {
27  // This is the first element that we have visited.
28  head_ = element->msg()->duplicate();
29  tail_ = head_;
30 
31  while (tail_->cont() != 0) {
32  tail_ = tail_->cont();
33  }
34 
35  } else {
36  // This is not the first element that we have visited.
37  tail_->cont(element->msg()->duplicate());
38 
39  while (tail_->cont() != 0) {
40  tail_ = tail_->cont();
41  }
42  }
43 
44  // Visit entire queue.
45  return 1;
46 }
ACE_Message_Block * cont(void) const
virtual ACE_Message_Block * duplicate(void) const
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68

Member Data Documentation

◆ head_

ACE_Message_Block* OpenDDS::DCPS::BuildChainVisitor::head_
private

Definition at line 39 of file BuildChainVisitor.h.

Referenced by chain(), and visit_element().

◆ tail_

ACE_Message_Block* OpenDDS::DCPS::BuildChainVisitor::tail_
private

Definition at line 40 of file BuildChainVisitor.h.

Referenced by chain(), and visit_element().


The documentation for this class was generated from the following files: