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 );
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, Message_Flags = DONT_DELETE);
char *end (void) const;
size_t size (void) const;
int size (size_t length);
ACE_Data_Block *clone ( 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_Lock *locking_strategy (void);
ACE_Lock *locking_strategy (ACE_Lock *);
void dump (void) const;
int reference_count (void) const;
private:
ACE_Data_Block *release_i (void);
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_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
);
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, Message_Flags = DONT_DELETE);
char *end (void) const;
size_t size (void) const;
int size (size_t length);
ACE_Data_Block *clone (
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_Lock *locking_strategy (void);
ACE_Lock *locking_strategy (ACE_Lock *);
void dump (void) const;
int reference_count (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_Data_Block &operator= (const ACE_Data_Block &);
ACE_Data_Block (const ACE_Data_Block &);