ACE_Message_Blocks.
#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;char *mark (void) const;size_t size (void) const;int size (size_t length);size_t capacity (void) const;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;
char *mark (void) const;
size() is passed
an argument less than capacity().
size_t size (void) const;
int size (size_t length);
size_t capacity (void) const;
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_Blocks.
ACE_Allocator *data_block_allocator_;
ACE_Data_Block &operator= (const ACE_Data_Block &);
ACE_Data_Block (const ACE_Data_Block &);
schmidt@cs.wustl.edu