summaryrefslogtreecommitdiff
path: root/TAO/tao/ZIOP
diff options
context:
space:
mode:
authormsmit <msmit@remedy.nl>2009-03-05 07:41:07 +0000
committermsmit <msmit@remedy.nl>2009-03-05 07:41:07 +0000
commite7cfbeb6d5b7efb3c8194822743889eb8cc87ffb (patch)
tree0f4a8bf789ea1a972242c44e624a1a7368bcccf2 /TAO/tao/ZIOP
parent90b96e68a1108ac985ae8bdfc76006735c23a1dc (diff)
downloadATCD-e7cfbeb6d5b7efb3c8194822743889eb8cc87ffb.tar.gz
Thu Mar 5 07:36:08 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 Reverted last changes. Resolved memory leak and assert error during release of an ACE_Data_Block. * tao/Transport.cpp No need to set read write pointer correctly. ZIOP is responsible for that. * tests/ZIOP/client.cpp Enabled all tests again * tests/Bug_3553_Regression/Bug_3553_Regression_client.cpp * tests/Bug_3553_Regression/Bug_3553_Regression_server.cpp Reverted last changes. Compiler errors should be resolved.
Diffstat (limited to 'TAO/tao/ZIOP')
-rw-r--r--TAO/tao/ZIOP/ZIOP.cpp21
-rw-r--r--TAO/tao/ZIOP/ZIOP.h2
2 files changed, 11 insertions, 12 deletions
diff --git a/TAO/tao/ZIOP/ZIOP.cpp b/TAO/tao/ZIOP/ZIOP.cpp
index 73d18fc3b0e..c38a538ce42 100644
--- a/TAO/tao/ZIOP/ZIOP.cpp
+++ b/TAO/tao/ZIOP/ZIOP.cpp
@@ -124,12 +124,10 @@ TAO_ZIOP_Loader::decompress (Compression::Compressor_ptr compressor,
return true;
}
-ACE_Data_Block *
-TAO_ZIOP_Loader::decompress (ACE_Data_Block& db, TAO_Queued_Data& qd,
+bool
+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();
@@ -143,8 +141,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.duplicate (),
+
+ TAO_InputCDR cdr ((*db),
qd.msg_block ()->self_flags (),
begin + TAO_GIOP_MESSAGE_HEADER_LEN,
wr,
@@ -169,7 +167,7 @@ TAO_ZIOP_Loader::decompress (ACE_Data_Block& db, TAO_Queued_Data& qd,
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(false),
(size_t)data.original_length) != 0)
ACE_ERROR_RETURN((LM_ERROR,
ACE_TEXT ("TAO - (%P|%t) - ")
@@ -179,16 +177,17 @@ TAO_ZIOP_Loader::decompress (ACE_Data_Block& db, TAO_Queued_Data& qd,
//change it into a GIOP message..
mb.base ()[0] = 0x47;
ACE_CDR::mb_align (&mb);
- db_ret = mb.data_block ();
- return db_ret->duplicate ();
+ *db = mb.data_block ()->duplicate ();
+ ACE_Data_Block *db_org = qd.msg_block ()->replace_data_block (mb.data_block ());
+ return true;
}
}
else
{
- return 0;
+ return false;
}
- return db_ret;
+ return true;
}
CORBA::ULong
diff --git a/TAO/tao/ZIOP/ZIOP.h b/TAO/tao/ZIOP/ZIOP.h
index 418782b1c6a..f8639f3789e 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 ACE_Data_Block * decompress (ACE_Data_Block& db, TAO_Queued_Data& qd, TAO_ORB_Core& orb_core);
+ virtual bool 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);