diff options
Diffstat (limited to 'ace/Message_Block.cpp')
-rw-r--r-- | ace/Message_Block.cpp | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/ace/Message_Block.cpp b/ace/Message_Block.cpp deleted file mode 100644 index c8266dae728..00000000000 --- a/ace/Message_Block.cpp +++ /dev/null @@ -1,249 +0,0 @@ -// Message_Block.cpp -// $Id$ - -#define ACE_BUILD_DLL -#include "ace/Log_Msg.h" -#include "ace/Message_Block.h" - -#if !defined (__ACE_INLINE__) -#include "ace/Message_Block.i" -#endif /* __ACE_INLINE__ */ - -ACE_ALLOC_HOOK_DEFINE(ACE_Message_Block) - -int -ACE_Message_Block::copy (const char *buf, size_t n) -{ - ACE_TRACE ("ACE_Message_Block::copy"); - // Note that for this to work correct, end() *must* be >= wr_ptr(). - size_t len = size_t (this->end () - this->wr_ptr ()); - - if (len < n) - return -1; - else - { - (void) ACE_OS::memcpy (this->wr_ptr (), buf, n); - this->wr_ptr (n); - return 0; - } -} - -void -ACE_Message_Block::dump (void) const -{ - ACE_TRACE ("ACE_Message_Block::dump"); - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - ACE_DEBUG ((LM_DEBUG, - "-----( Message Block )-----\n" - "type = %d\n" - "priority = %d\n" - "max_size = %d\n" - "cur_size = %d\n" - "flag = %x\n" - "next = %u\n" - "base = %u\n" - "rd_ptr = %u\n" - "wr_ptr = %u\n" - "---------------------------\n", - this->type_, this->priority_, this->max_size_, this->cur_size_, - this->flags_, this->next_, this->base_, this->rd_ptr_, - this->wr_ptr_)); - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -ACE_Message_Block::ACE_Message_Block (void) - : flags_ (0), - base_ (0), - cur_size_ (0), - max_size_ (0), - rd_ptr_ (0), - wr_ptr_ (0), - type_ (MB_NORMAL), - priority_ (0), - cont_ (0), - next_ (0), - prev_ (0), - allocator_ (0) -{ - ACE_TRACE ("ACE_Message_Block::ACE_Message_Block"); -} - -ACE_Message_Block::ACE_Message_Block (size_t sz, - ACE_Message_Type msg_type, - ACE_Message_Block *msg_cont, - const char *msg_data, - ACE_Allocator *alloc) -{ - ACE_TRACE ("ACE_Message_Block::ACE_Message_Block"); - if (this->init (sz, msg_type, msg_cont, msg_data, alloc) == -1) - ACE_ERROR ((LM_ERROR, "ACE_Message_Block")); -} - -ACE_Message_Block::~ACE_Message_Block (void) -{ - ACE_TRACE ("ACE_Message_Block::~ACE_Message_Block"); - if (ACE_BIT_DISABLED (this->flags_, ACE_Message_Block::DONT_DELETE)) - { - if (this->allocator_) - this->allocator_->free ((void *) this->base_); - else - delete [] this->base_; - } - if (this->cont_) - delete this->cont_; - this->prev_ = 0; - this->next_ = 0; -} - -ACE_Message_Block::ACE_Message_Block (const char *data, - size_t size) - : flags_ (ACE_Message_Block::DONT_DELETE), - base_ ((char *) data), - cur_size_ (size), - max_size_ (size), - rd_ptr_ (0), - wr_ptr_ (0), - type_ (MB_NORMAL), - priority_ (0), - cont_ (0), - next_ (0), - prev_ (0), - allocator_ (0) -{ - ACE_TRACE ("ACE_Message_Block::ACE_Message_Block"); -} - -int -ACE_Message_Block::size (size_t length) -{ - ACE_TRACE ("ACE_Message_Block::size"); - if (length < this->max_size_) - this->cur_size_ = length; - else - { - int r_delta, w_delta; - char *buf; - - if (this->allocator_ == 0) - ACE_NEW_RETURN (buf, char[length], -1); - else // Use the allocator! - { - buf = (char *) this->allocator_->malloc (length); - if (buf == 0) - { - errno = ENOMEM; - return -1; - } - } - - if (ACE_BIT_DISABLED (this->flags_, ACE_Message_Block::DONT_DELETE)) - { - if (this->allocator_) - this->allocator_->free ((void *) this->base_); - else - delete [] this->base_; - } - else - // We now assume ownership. - ACE_CLR_BITS (this->flags_, ACE_Message_Block::DONT_DELETE); - - ACE_OS::memcpy (buf, this->base_, this->cur_size_); - r_delta = this->rd_ptr_ - this->base_; - w_delta = this->wr_ptr_ - this->base_; - this->max_size_ = length; - this->cur_size_ = length; - - this->base_ = buf; - - this->rd_ptr_ = this->base_ + r_delta; - this->wr_ptr_ = this->base_ + w_delta; - } - return 0; -} - -int -ACE_Message_Block::init (const char *data, - size_t size) -{ - ACE_TRACE ("ACE_Message_Block::init"); - this->base_ = (char *) data; - this->cur_size_ = size; - this->max_size_ = size; - ACE_SET_BITS (this->flags_, ACE_Message_Block::DONT_DELETE); - return 0; -} - -int -ACE_Message_Block::init (size_t sz, - ACE_Message_Type msg_type, - ACE_Message_Block *msg_cont, - const char *msg_data, - ACE_Allocator *allocator) -{ - ACE_TRACE ("ACE_Message_Block::init"); - this->flags_ = 0; - - if (msg_data == 0) - { - if (allocator == 0) - { - this->allocator_ = 0; - ACE_NEW_RETURN (this->base_, char[sz], -1); - } - else // Use the allocator! - { - this->allocator_ = allocator; - this->base_ = (char *) allocator->malloc (sz); - if (this->base_ == 0) - { - errno = ENOMEM; - return -1; - } - } - } - else - { - this->base_ = (char *) msg_data; - ACE_SET_BITS (this->flags_, ACE_Message_Block::DONT_DELETE); - } - - this->cur_size_ = sz; - this->max_size_ = sz; - this->rd_ptr_ = this->base_; - this->wr_ptr_ = this->base_; - this->priority_ = 0; - this->type_ = msg_type; - this->cont_ = msg_cont; - this->next_ = 0; - this->prev_ = 0; - return 0; -} - -ACE_Message_Block * -ACE_Message_Block::clone (Message_Flags mask) const -{ - // You always want to clear this one to prevent memory leaks but you - // might add some others later. - const Message_Flags always_clear = ACE_Message_Block::DONT_DELETE; - - ACE_TRACE ("ACE_Message_Block::clone"); - ACE_Message_Block *nb; - - ACE_NEW_RETURN (nb, - ACE_Message_Block (this->max_size_, this->type_, - 0, 0, this->allocator_), - 0); - - ACE_OS::memcpy (nb->base_, this->base_, this->max_size_); - - nb->rd_ptr (this->rd_ptr_ - this->base_); - nb->wr_ptr (this->wr_ptr_ - this->base_); - - // Set new flags minus the mask... - nb->set_flags (this->flags ()); - nb->clr_flags (mask | always_clear); - - if (this->cont_ != 0) - nb->cont_ = this->cont_->clone (mask); - return nb; -} |