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

#include <CopyChainVisitor.h>

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

Public Member Functions

 CopyChainVisitor (BasicQueue< TransportQueueElement > &target, MessageBlockAllocator *mb_allocator, DataBlockAllocator *db_allocator, bool duplicate=false)
 
virtual ~CopyChainVisitor ()
 
virtual int visit_element (TransportQueueElement *element)
 
int status () const
 Access the status. More...
 
- 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

BasicQueue< TransportQueueElement > & target_
 Target queue to fill with copied elements. More...
 
MessageBlockAllocatormb_allocator_
 Allocator to create copied elements. More...
 
DataBlockAllocatordb_allocator_
 
int status_
 Status of visitation. More...
 
bool duplicate_
 

Detailed Description

Definition at line 26 of file CopyChainVisitor.h.

Constructor & Destructor Documentation

◆ CopyChainVisitor()

ACE_INLINE OpenDDS::DCPS::CopyChainVisitor::CopyChainVisitor ( BasicQueue< TransportQueueElement > &  target,
MessageBlockAllocator mb_allocator,
DataBlockAllocator db_allocator,
bool  duplicate = false 
)

Definition at line 11 of file CopyChainVisitor.inl.

References ACE_INLINE, and DBG_ENTRY_LVL.

16  : target_(target)
17  , mb_allocator_(mb_allocator)
18  , db_allocator_(db_allocator)
19  , status_(0)
20  , duplicate_(duplicate)
21 {
22  DBG_ENTRY_LVL("CopyChainVisitor", "CopyChainVisitor", 6);
23 }
DataBlockAllocator * db_allocator_
BasicQueue< TransportQueueElement > & target_
Target queue to fill with copied elements.
int status_
Status of visitation.
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68
MessageBlockAllocator * mb_allocator_
Allocator to create copied elements.

◆ ~CopyChainVisitor()

OpenDDS::DCPS::CopyChainVisitor::~CopyChainVisitor ( )
virtual

Definition at line 16 of file CopyChainVisitor.cpp.

References DBG_ENTRY_LVL.

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

Member Function Documentation

◆ status()

ACE_INLINE int OpenDDS::DCPS::CopyChainVisitor::status ( void  ) const

Access the status.

Definition at line 27 of file CopyChainVisitor.inl.

References status_.

28 {
29  return status_;
30 }
int status_
Status of visitation.

◆ visit_element()

int OpenDDS::DCPS::CopyChainVisitor::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 CopyChainVisitor.cpp.

References db_allocator_, DBG_ENTRY_LVL, duplicate_, OpenDDS::DCPS::TransportQueueElement::duplicate_msg(), mb_allocator_, OpenDDS::DCPS::TransportQueueElement::msg(), OpenDDS::DCPS::TransportQueueElement::publication_id(), OpenDDS::DCPS::BasicQueue< T >::put(), and target_.

23 {
24  DBG_ENTRY_LVL("CopyChainVisitor", "visit_element", 6);
25 
26  TransportRetainedElement* copiedElement = 0;
27  if (duplicate_) {
28  // Create a new copy of the current element.
29  copiedElement = new
30  TransportRetainedElement(
31  element->duplicate_msg(),
32  element->publication_id()
33  );
34  } else {
35  // Create a new copy of the current element.
36  copiedElement = new
37  TransportRetainedElement(
38  element->msg(),
39  element->publication_id(),
42  );
43  }
44 
45  // Add the copy to the target.
46  target_.put(copiedElement);
47 
48  // Visit entire queue.
49  return 1;
50 }
DataBlockAllocator * db_allocator_
BasicQueue< TransportQueueElement > & target_
Target queue to fill with copied elements.
#define DBG_ENTRY_LVL(CNAME, MNAME, DBG_LVL)
Definition: EntryExit.h:68
MessageBlockAllocator * mb_allocator_
Allocator to create copied elements.
int put(T *elem)
Put a pointer to an element (T*) on to the queue.
Definition: BasicQueue_T.h:36

Member Data Documentation

◆ db_allocator_

DataBlockAllocator* OpenDDS::DCPS::CopyChainVisitor::db_allocator_
private

Definition at line 49 of file CopyChainVisitor.h.

Referenced by visit_element().

◆ duplicate_

bool OpenDDS::DCPS::CopyChainVisitor::duplicate_
private

Definition at line 53 of file CopyChainVisitor.h.

Referenced by visit_element().

◆ mb_allocator_

MessageBlockAllocator* OpenDDS::DCPS::CopyChainVisitor::mb_allocator_
private

Allocator to create copied elements.

Definition at line 48 of file CopyChainVisitor.h.

Referenced by visit_element().

◆ status_

int OpenDDS::DCPS::CopyChainVisitor::status_
private

Status of visitation.

Definition at line 52 of file CopyChainVisitor.h.

Referenced by status().

◆ target_

BasicQueue<TransportQueueElement>& OpenDDS::DCPS::CopyChainVisitor::target_
private

Target queue to fill with copied elements.

Definition at line 45 of file CopyChainVisitor.h.

Referenced by visit_element().


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