diff options
Diffstat (limited to 'TAO/tao/GIOP_Message_Lite.i')
-rw-r--r-- | TAO/tao/GIOP_Message_Lite.i | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/TAO/tao/GIOP_Message_Lite.i b/TAO/tao/GIOP_Message_Lite.i index 7fbff4b3806..e64e37395cd 100644 --- a/TAO/tao/GIOP_Message_Lite.i +++ b/TAO/tao/GIOP_Message_Lite.i @@ -2,17 +2,38 @@ ACE_INLINE +TAO_GIOP_Message_Lite::TAO_GIOP_Message_Lite (TAO_ORB_Core *orb_core) + :cdr_buffer_alloc_ (orb_core->resource_factory ()->output_cdr_buffer_allocator ()), + cdr_dblock_alloc_ (orb_core->resource_factory ()->output_cdr_dblock_allocator ()) +{ +#if defined (ACE_HAS_PURIFY) + (void) ACE_OS::memset (this->repbuf_, + '\0', + sizeof this->repbuf_); +#endif /* ACE_HAS_PURIFY */ + ACE_NEW (this->output_, + TAO_OutputCDR (this->repbuf_, + sizeof this->repbuf_, + TAO_ENCAP_BYTE_ORDER, + this->cdr_buffer_alloc_, + this->cdr_dblock_alloc_, + orb_core->orb_params ()->cdr_memcpy_tradeoff (), + orb_core->to_iso8859 (), + orb_core->to_unicode ())); +} + +ACE_INLINE TAO_GIOP_Message_Lite::~TAO_GIOP_Message_Lite (void) { - // Explicitly call the destructor of the output CDR first. They need + // Explicitly call the destructor of the output CDR first. They need // the allocators during destruction. delete this->output_; - + // Then call the destructor of our allocators if (this->cdr_dblock_alloc_ != 0) this->cdr_dblock_alloc_->remove (); // delete this->cdr_dblock_alloc_; - + if (this->cdr_buffer_alloc_ != 0) this->cdr_buffer_alloc_->remove (); // delete this->cdr_buffer_alloc_; @@ -41,3 +62,5 @@ TAO_GIOP_Message_Lite::parse_header (TAO_GIOP_Message_State *state) return 0; } + + |