diff options
author | msmit <msmit@remedy.nl> | 2009-03-02 15:12:34 +0000 |
---|---|---|
committer | msmit <msmit@remedy.nl> | 2009-03-02 15:12:34 +0000 |
commit | ad1516f1ed5e65b12eaaa583803071d299f780bd (patch) | |
tree | 3677d8385455a06f3525a897390a0b57b093fb72 /TAO/tao/ZIOP | |
parent | 658c4c8e37b9a2b9072f019fa9ace1927739b5bb (diff) | |
download | ATCD-ad1516f1ed5e65b12eaaa583803071d299f780bd.tar.gz |
Mon Mar 2 15:09:21 UTC 2009 Marcel Smit <msmit@remedy.nl>
* tao/GIOP_Message_Base.cpp:
* tao/GIOP_Message_Base.h:
* tao/ZIOP/ZIOP.cpp:
* tao/ZIOP/ZIOP.h:
* tao/ZIOP_Adapter.h:
Changed decompress interface to handle incoming
and outgoing message blocks and errors better.
* tests/ZIOP/client.cpp:
Temporary blocked some tests.
Diffstat (limited to 'TAO/tao/ZIOP')
-rw-r--r-- | TAO/tao/ZIOP/ZIOP.cpp | 32 | ||||
-rw-r--r-- | TAO/tao/ZIOP/ZIOP.h | 2 |
2 files changed, 16 insertions, 18 deletions
diff --git a/TAO/tao/ZIOP/ZIOP.cpp b/TAO/tao/ZIOP/ZIOP.cpp index 910811b7fc9..73d18fc3b0e 100644 --- a/TAO/tao/ZIOP/ZIOP.cpp +++ b/TAO/tao/ZIOP/ZIOP.cpp @@ -124,10 +124,12 @@ TAO_ZIOP_Loader::decompress (Compression::Compressor_ptr compressor, return true; } -bool -TAO_ZIOP_Loader::decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, +ACE_Data_Block * +TAO_ZIOP_Loader::decompress (ACE_Data_Block& db, TAO_Queued_Data& qd, TAO_ORB_Core& orb_core) { + ACE_Data_Block *db_ret = &db; + CORBA::Object_var compression_manager = orb_core.resolve_compression_manager(); @@ -141,8 +143,8 @@ TAO_ZIOP_Loader::decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, size_t begin = qd.msg_block ()-> rd_ptr() - qd.msg_block ()->base (); char * initial_rd_ptr = qd.msg_block ()-> rd_ptr(); size_t const wr = qd.msg_block ()->wr_ptr () - qd.msg_block ()->base (); - - TAO_InputCDR cdr (*db, + + TAO_InputCDR cdr (db.duplicate (), qd.msg_block ()->self_flags (), begin + TAO_GIOP_MESSAGE_HEADER_LEN, wr, @@ -161,17 +163,13 @@ TAO_ZIOP_Loader::decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, if (decompress(compressor.in(), data.data, myout)) { - ACE_Message_Block *mb = new ACE_Message_Block(); - - mb->size ((size_t)(data.original_length + + ACE_Message_Block mb ((size_t)(data.original_length + TAO_GIOP_MESSAGE_HEADER_LEN)); - qd.msg_block ()->rd_ptr (initial_rd_ptr); - - mb->copy(qd.msg_block ()->base () + begin, + mb.copy(qd.msg_block ()->base () + begin, TAO_GIOP_MESSAGE_HEADER_LEN); - if (mb->copy((char*)myout.get_buffer(true), + if (mb.copy((char*)myout.get_buffer(true), (size_t)data.original_length) != 0) ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT ("TAO - (%P|%t) - ") @@ -179,18 +177,18 @@ TAO_ZIOP_Loader::decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, ACE_TEXT ("Buffer too small\n")), false); //change it into a GIOP message.. - mb->base ()[0] = 0x47; - ACE_CDR::mb_align (mb); - *db = mb->data_block (); - return true; + mb.base ()[0] = 0x47; + ACE_CDR::mb_align (&mb); + db_ret = mb.data_block (); + return db_ret->duplicate (); } } else { - return false; + return 0; } - return true; + return db_ret; } CORBA::ULong diff --git a/TAO/tao/ZIOP/ZIOP.h b/TAO/tao/ZIOP/ZIOP.h index f8639f3789e..418782b1c6a 100644 --- a/TAO/tao/ZIOP/ZIOP.h +++ b/TAO/tao/ZIOP/ZIOP.h @@ -47,7 +47,7 @@ public: /// Destructor virtual ~TAO_ZIOP_Loader (void); - virtual bool decompress (ACE_Data_Block **db, TAO_Queued_Data& qd, TAO_ORB_Core& orb_core); + virtual ACE_Data_Block * decompress (ACE_Data_Block& db, TAO_Queued_Data& qd, TAO_ORB_Core& orb_core); // Compress the @a stream. Starting point of the compression is rd_ptr() virtual bool marshal_data (TAO_OutputCDR& cdr, TAO_Stub& stub); |