NAME

ACE_Data_Block - Stores the data payload that is accessed via one or more ACE_Message_Blocks.

SYNOPSIS

#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 &); };

DESCRIPTION

This data structure is reference counted to maximize sharing. It also contains the 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).

Initialization and termination methods.

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;

Message size is the total amount of space alloted.

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);

Message flag accessors and mutators.

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;

The locking strategy prevents race conditions.

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;

Strategies.

ACE_Allocator *allocator_strategy_;

ACE_Lock *locking_strategy_;

int reference_count_;

ACE_Allocator *data_block_allocator_;

Disallow these operations.

ACE_Data_Block &operator= (const ACE_Data_Block &);

ACE_Data_Block (const ACE_Data_Block &);

AUTHOR

Doug Schmidt

LIBRARY

ace