ACE_Message_Block
s.
#include <ace/Message_Block.h>
class ACE_Data_Block {
public:
ACE_Data_Block (void);
ACE_Data_Block ( size_t size, ACE_Message_Block::ACE_Message_Type msg_type, const char *msg_data, ACE_Allocator *allocator_strategy, ACE_Lock *locking_strategy, ACE_Message_Block::Message_Flags flags, ACE_Allocator *data_block_allocator );
virtual ~ACE_Data_Block (void);
ACE_Message_Block::ACE_Message_Type msg_type (void) const;
void msg_type (ACE_Message_Block::ACE_Message_Type type);
char *base (void) const;
void base ( char *data, size_t size, ACE_Message_Block::Message_Flags mflags = ACE_Message_Block::DONT_DELETE );
char *end (void) const;
size_t size (void) const;
int size (size_t length);
virtual ACE_Data_Block *clone ( ACE_Message_Block::Message_Flags mask = 0 ) const;
virtual ACE_Data_Block *clone_nocopy ( ACE_Message_Block::Message_Flags mask = 0 ) const;
ACE_Data_Block *duplicate (void);
ACE_Data_Block *release (ACE_Lock *lock = 0);
ACE_Message_Block::Message_Flags set_flags ( ACE_Message_Block::Message_Flags more_flags );
ACE_Message_Block::Message_Flags clr_flags ( ACE_Message_Block::Message_Flags less_flags );
ACE_Message_Block::Message_Flags flags (void) const;
ACE_Allocator *allocator_strategy (void) const;
ACE_Lock *locking_strategy (void);
ACE_Lock *locking_strategy (ACE_Lock *);
void dump (void) const;
int reference_count (void) const;
ACE_Allocator *data_block_allocator (void) const;
protected:
ACE_Data_Block *release_i (void);
friend class ACE_Message_Block;
ACE_Data_Block *release_no_delete (ACE_Lock *lock);
ACE_Message_Block::ACE_Message_Type type_;
size_t cur_size_;
size_t max_size_;
ACE_Message_Block::Message_Flags flags_;
char *base_;
ACE_Allocator *allocator_strategy_;
ACE_Lock *locking_strategy_;
int reference_count_;
ACE_Allocator *data_block_allocator_;
private:
ACE_Data_Block &operator= (const ACE_Data_Block &);
ACE_Data_Block (const ACE_Data_Block &);
};
locking_strategy_
(which
protects the reference count from race conditions in
concurrent programs) and the allocation_strategy_
(which
determines what memory pool is used to allocate the memory).
ACE_Data_Block (void);
ACE_Data_Block (
size_t size,
ACE_Message_Block::ACE_Message_Type msg_type,
const char *msg_data,
ACE_Allocator *allocator_strategy,
ACE_Lock *locking_strategy,
ACE_Message_Block::Message_Flags flags,
ACE_Allocator *data_block_allocator
);
virtual ~ACE_Data_Block (void);
ACE_Message_Block::ACE_Message_Type msg_type (void) const;
void msg_type (ACE_Message_Block::ACE_Message_Type type);
char *base (void) const;
void base (
char *data,
size_t size,
ACE_Message_Block::Message_Flags mflags = ACE_Message_Block::DONT_DELETE
);
char *end (void) const;
size_t size (void) const;
int size (size_t length);
virtual ACE_Data_Block *clone (
ACE_Message_Block::Message_Flags mask = 0
) const;
virtual ACE_Data_Block *clone_nocopy (
ACE_Message_Block::Message_Flags mask = 0
) const;
ACE_Data_Block *duplicate (void);
ACE_Data_Block *release (ACE_Lock *lock = 0);
this
and mb
and return 0. Behavior is undefined if reference
count 0.
ACE_Message_Block::Message_Flags set_flags (
ACE_Message_Block::Message_Flags more_flags
);
more_flags
into the existing message flags and
return the new value.
ACE_Message_Block::Message_Flags clr_flags (
ACE_Message_Block::Message_Flags less_flags
);
less_flags
and return
the new value.
ACE_Message_Block::Message_Flags flags (void) const;
ACE_Allocator *allocator_strategy (void) const;
ACE_Lock *locking_strategy (void);
ACE_Lock *locking_strategy (ACE_Lock *);
void dump (void) const;
int reference_count (void) const;
ACE_Allocator *data_block_allocator (void) const;
ACE_Allocator *allocator_strategy_;
ACE_Data_Block
. Note
that this pointer is shared by all owners of this
ACE_Data_Block
.
ACE_Lock *locking_strategy_;
ACE_Data_Block
. This is used to protect regions of code that
access shared ACE_Data_Block
state. Note that this lock is
shared by all owners of the ACE_Data_Block
's data.
int reference_count_;
ACE_Data_Block
, which is used to avoid
deep copies (i.e., clone
). Note that this pointer value is
shared by all owners of the Data_Block
's data, i.e., all the
ACE_Message_Block
s.
ACE_Allocator *data_block_allocator_;
ACE_Data_Block &operator= (const ACE_Data_Block &);
ACE_Data_Block (const ACE_Data_Block &);