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

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

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;

Message size is the total amount of space alloted.

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

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;

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;

Strategies.

ACE_Allocator *allocator_strategy_;

ACE_Lock *locking_strategy_;

int reference_count_;

Disallow these operations.

ACE_Data_Block &operator= (const ACE_Data_Block &);

ACE_Data_Block (const ACE_Data_Block &);

AUTHOR

Doug Schmidt

LIBRARY

ace