#include <Message_Block.h>
Inheritance diagram for ACE_Data_Block:
Public Member Functions | |
ACE_Data_Block (void) | |
Default "do-nothing" constructor. | |
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) | |
Initialize. | |
virtual | ~ACE_Data_Block (void) |
Delete all the resources held in the message. | |
ACE_Message_Block::ACE_Message_Type | msg_type (void) const |
Get type of the message. | |
void | msg_type (ACE_Message_Block::ACE_Message_Type type) |
Set type of the message. | |
char * | base (void) const |
Get message data pointer. | |
void | base (char *data, size_t size, ACE_Message_Block::Message_Flags mflags=ACE_Message_Block::DONT_DELETE) |
Set message data pointer (doesn't reallocate). | |
char * | end (void) const |
Return a pointer to 1 past the end of the allocated data in a message. | |
char * | mark (void) const |
size_t | size (void) const |
int | size (size_t length) |
size_t | capacity (void) const |
Get the total amount of allocated space. | |
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) |
Return a "shallow" copy that increments our reference count by 1. | |
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 |
Get the current message flags. | |
ACE_Allocator * | allocator_strategy (void) const |
Obtain the allocator strategy. | |
ACE_Lock * | locking_strategy (void) |
Get the locking strategy. | |
ACE_Lock * | locking_strategy (ACE_Lock *) |
Set a new locking strategy and return the hold one. | |
void | dump (void) const |
Dump the state of an object. | |
int | reference_count (void) const |
Get the current reference count. | |
ACE_Allocator * | data_block_allocator (void) const |
Get the allocator used to create this object. | |
Protected Member Functions | |
ACE_Data_Block * | release_i (void) |
Internal release implementation. | |
ACE_Data_Block * | release_no_delete (ACE_Lock *lock) |
Protected Attributes | |
ACE_Message_Block::ACE_Message_Type | type_ |
Type of message. | |
size_t | cur_size_ |
Current size of message block. | |
size_t | max_size_ |
Total size of buffer. | |
ACE_Message_Block::Message_Flags | flags_ |
Misc flags (e.g., DONT_DELETE and USER_FLAGS). | |
char * | base_ |
Pointer To beginning of message payload. | |
ACE_Allocator * | allocator_strategy_ |
ACE_Lock * | locking_strategy_ |
int | reference_count_ |
ACE_Allocator * | data_block_allocator_ |
The allocator use to destroy ourselves. | |
Private Member Functions | |
ACE_Data_Block & | operator= (const ACE_Data_Block &) |
ACE_Data_Block (const ACE_Data_Block &) | |
Friends | |
class | ACE_Message_Block |
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).
|
Default "do-nothing" constructor.
|
|
Initialize.
|
|
Delete all the resources held in the message.
|
|
|
|
Obtain the allocator strategy.
|
|
Set message data pointer (doesn't reallocate).
|
|
Get message data pointer.
|
|
Get the total amount of allocated space.
|
|
Return an exact "deep copy" of the message, i.e., create fresh new copies of all the Data_Blocks and continuations. Notice that Data_Blocks can act as "Prototypes", i.e. derived classes can override this method and create instances of themselves. |
|
As clone above, but it does not copy the contents of the buffer, i.e., create a new Data_Block of the same dynamic type, with the same allocator, locking_strategy, and with the same amount of storage available but the buffer is unitialized. Reimplemented in ACE_Locked_Data_Block< ACE_LOCK >. |
|
Clear the message flag bits specified in <less_flags> and return the new value. |
|
Get the allocator used to create this object.
|
|
Dump the state of an object.
|
|
Return a "shallow" copy that increments our reference count by 1.
|
|
Return a pointer to 1 past the end of the allocated data in a message.
|
|
Get the current message flags.
|
|
Set a new locking strategy and return the hold one.
|
|
Get the locking strategy.
|
|
Return a pointer to 1 past the end of the allotted data in a message. The allotted data may be less than allocated data if <size()> is passed an argument less than <capacity()>. |
|
Set type of the message.
|
|
Get type of the message.
|
|
|
|
Get the current reference count.
|
|
Decrease the shared reference count by 1. If the reference count is > 0 then return this; else if reference count == 0 then delete <this> and <mb> and return 0. Behavior is undefined if reference count < 0. |
|
Internal release implementation.
|
|
|
|
Bitwise-or the <more_flags> into the existing message flags and return the new value. |
|
Set the total amount of space in the message. Returns 0 if successful, else -1. |
|
Get the total amount of allotted space in the message. The amount of allotted space may be less than allocated space. |
|
Decrease the reference count, but don't delete the object. Returns 0 if the object should be removed. If <lock> is equal to the locking strategy then we assume that the lock is beign held by the current thread; this is used to release all the data blocks in a chain while holding a single lock. |
|
Pointer to the allocator defined for this <ace_data_block>. Note that this pointer is shared by all owners of this <ace_data_block>. |
|
Pointer To beginning of message payload.
|
|
Current size of message block.
|
|
The allocator use to destroy ourselves.
|
|
Misc flags (e.g., DONT_DELETE and USER_FLAGS).
|
|
Pointer to the locking strategy defined for this <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. |
|
Total size of buffer.
|
|
Reference count for this <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. |
|
Type of message.
|