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

#include <MessageBlock.h>

Collaboration diagram for OpenDDS::DCPS::MessageBlock:
Collaboration graph
[legend]

Public Member Functions

 MessageBlock (const ACE_Message_Block &amb)
 construct a MessageBlock that references the existing amb's ACE_Data_Block More...
 
 MessageBlock (size_t size)
 construct a MessageBlock with 'size' bytes allocated but not used (wr_ptr_ is 0) More...
 
 MessageBlock (const char *data, size_t size)
 construct a MessageBlock that points to external data, doesn't allocate or copy More...
 
 ~MessageBlock ()
 
 MessageBlock (const MessageBlock &rhs)
 
MessageBlockoperator= (const MessageBlock &rhs)
 
void swap (MessageBlock &rhs)
 
ACE_Data_Blockduplicate_data () const
 
char * base () const
 
char * rd_ptr () const
 
void read (size_t diff)
 
void unread (size_t diff)
 
char * wr_ptr () const
 
void write (size_t diff)
 
void unwrite (size_t diff)
 
size_t len () const
 

Private Attributes

ACE_Data_Blockdata_
 
size_t rd_ptr_
 
size_t wr_ptr_
 

Detailed Description

Definition at line 19 of file MessageBlock.h.

Constructor & Destructor Documentation

◆ MessageBlock() [1/4]

OpenDDS::DCPS::MessageBlock::MessageBlock ( const ACE_Message_Block amb)
explicit

construct a MessageBlock that references the existing amb's ACE_Data_Block

Definition at line 43 of file MessageBlock.cpp.

Referenced by operator=().

44  : data_(amb.data_block()->duplicate())
45  , rd_ptr_(amb.rd_ptr() - amb.base())
46  , wr_ptr_(amb.wr_ptr() - amb.base())
47 {}
char * rd_ptr(void) const
ACE_Data_Block * data_
Definition: MessageBlock.h:56
ACE_Data_Block * data_block(void) const
char * wr_ptr(void) const
char * base(void) const
ACE_Data_Block * duplicate(void)

◆ MessageBlock() [2/4]

OpenDDS::DCPS::MessageBlock::MessageBlock ( size_t  size)
explicit

construct a MessageBlock with 'size' bytes allocated but not used (wr_ptr_ is 0)

Definition at line 19 of file MessageBlock.cpp.

References ACE_NEW_MALLOC, data_, ACE_Allocator::instance(), ACE_Allocator::malloc(), and ACE_Message_Block::MB_DATA.

20  : data_()
21  , rd_ptr_()
22  , wr_ptr_()
23 {
24  ACE_Allocator* const alloc = ACE_Allocator::instance();
26  (ACE_Data_Block*) alloc->malloc(sizeof(ACE_Data_Block)),
27  ACE_Data_Block(size, ACE_Message_Block::MB_DATA, 0, alloc, 0,
28  0, alloc));
29 }
#define ACE_NEW_MALLOC(POINTER, ALLOCATOR, CONSTRUCTOR)
ACE_Data_Block * data_
Definition: MessageBlock.h:56
static ACE_Allocator * instance(void)
virtual void * malloc(size_type nbytes)=0

◆ MessageBlock() [3/4]

OpenDDS::DCPS::MessageBlock::MessageBlock ( const char *  data,
size_t  size 
)

construct a MessageBlock that points to external data, doesn't allocate or copy

Definition at line 31 of file MessageBlock.cpp.

References ACE_NEW_MALLOC, data_, ACE_Message_Block::DONT_DELETE, ACE_Allocator::instance(), ACE_Allocator::malloc(), and ACE_Message_Block::MB_DATA.

32  : data_()
33  , rd_ptr_()
34  , wr_ptr_(size)
35 {
36  ACE_Allocator* const alloc = ACE_Allocator::instance();
38  (ACE_Data_Block*) alloc->malloc(sizeof(ACE_Data_Block)),
39  ACE_Data_Block(size, ACE_Message_Block::MB_DATA, data, alloc, 0,
41 }
#define ACE_NEW_MALLOC(POINTER, ALLOCATOR, CONSTRUCTOR)
ACE_Data_Block * data_
Definition: MessageBlock.h:56
static ACE_Allocator * instance(void)
virtual void * malloc(size_type nbytes)=0

◆ ~MessageBlock()

OpenDDS::DCPS::MessageBlock::~MessageBlock ( )

Definition at line 55 of file MessageBlock.cpp.

References data_, and ACE_Data_Block::release().

56 {
57  if (data_) {
58  data_->release();
59  }
60 }
ACE_Data_Block * release(ACE_Lock *lock=0)
ACE_Data_Block * data_
Definition: MessageBlock.h:56

◆ MessageBlock() [4/4]

OpenDDS::DCPS::MessageBlock::MessageBlock ( const MessageBlock rhs)

Definition at line 49 of file MessageBlock.cpp.

50  : data_(rhs.data_->duplicate())
51  , rd_ptr_(rhs.rd_ptr_)
52  , wr_ptr_(rhs.wr_ptr_)
53 {}
ACE_Data_Block * data_
Definition: MessageBlock.h:56

Member Function Documentation

◆ base()

char* OpenDDS::DCPS::MessageBlock::base ( void  ) const
inline

Definition at line 43 of file MessageBlock.h.

43 { return data_->base(); }
ACE_Data_Block * data_
Definition: MessageBlock.h:56
char * base(void) const

◆ duplicate_data()

ACE_Data_Block* OpenDDS::DCPS::MessageBlock::duplicate_data ( ) const
inline

Definition at line 41 of file MessageBlock.h.

References ACE_Data_Block::duplicate().

Referenced by OpenDDS::DCPS::ReceivedDataSample::data().

41 { return data_->duplicate(); }
ACE_Data_Block * data_
Definition: MessageBlock.h:56
ACE_Data_Block * duplicate(void)

◆ len()

size_t OpenDDS::DCPS::MessageBlock::len ( void  ) const
inline

◆ operator=()

MessageBlock & OpenDDS::DCPS::MessageBlock::operator= ( const MessageBlock rhs)

Definition at line 71 of file MessageBlock.cpp.

References copy(), data_, MessageBlock(), rd_ptr_, swap(), and wr_ptr_.

72 {
73  if (&rhs != this) {
74  MessageBlock copy(rhs);
75  swap(copy);
76  }
77  return *this;
78 }
void swap(MessageBlock &rhs)
MessageBlock(const ACE_Message_Block &amb)
construct a MessageBlock that references the existing amb&#39;s ACE_Data_Block
T * copy(T const &st)

◆ rd_ptr()

char* OpenDDS::DCPS::MessageBlock::rd_ptr ( void  ) const
inline

◆ read()

void OpenDDS::DCPS::MessageBlock::read ( size_t  diff)
inline

Definition at line 46 of file MessageBlock.h.

46 { rd_ptr_ += diff; }

◆ swap()

void OpenDDS::DCPS::MessageBlock::swap ( MessageBlock rhs)

Definition at line 63 of file MessageBlock.cpp.

References data_, rd_ptr_, OpenDDS::DCPS::swap(), and wr_ptr_.

Referenced by operator=(), and OpenDDS::DCPS::swap().

64 {
65  std::swap(data_, rhs.data_);
66  std::swap(rd_ptr_, rhs.rd_ptr_);
67  std::swap(wr_ptr_, rhs.wr_ptr_);
68 }
ACE_Data_Block * data_
Definition: MessageBlock.h:56
void swap(MessageBlock &lhs, MessageBlock &rhs)

◆ unread()

void OpenDDS::DCPS::MessageBlock::unread ( size_t  diff)
inline

Definition at line 47 of file MessageBlock.h.

47 { rd_ptr_ -= diff; }

◆ unwrite()

void OpenDDS::DCPS::MessageBlock::unwrite ( size_t  diff)
inline

Definition at line 51 of file MessageBlock.h.

51 { wr_ptr_ -= diff; }

◆ wr_ptr()

char* OpenDDS::DCPS::MessageBlock::wr_ptr ( void  ) const
inline

Definition at line 49 of file MessageBlock.h.

Referenced by OpenDDS::DCPS::ReceivedDataSample::data().

49 { return base() + wr_ptr_; }

◆ write()

void OpenDDS::DCPS::MessageBlock::write ( size_t  diff)
inline

Definition at line 50 of file MessageBlock.h.

50 { wr_ptr_ += diff; }

Member Data Documentation

◆ data_

ACE_Data_Block* OpenDDS::DCPS::MessageBlock::data_
private

Definition at line 56 of file MessageBlock.h.

Referenced by MessageBlock(), operator=(), swap(), and ~MessageBlock().

◆ rd_ptr_

size_t OpenDDS::DCPS::MessageBlock::rd_ptr_
private

Definition at line 57 of file MessageBlock.h.

Referenced by operator=(), and swap().

◆ wr_ptr_

size_t OpenDDS::DCPS::MessageBlock::wr_ptr_
private

Definition at line 58 of file MessageBlock.h.

Referenced by operator=(), and swap().


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