diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2006-04-20 12:40:50 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2006-04-20 12:40:50 +0000 |
commit | 1939a15774cacdf268c47b0bd7eb851ca4f149ab (patch) | |
tree | 8eaa757e26eff9e7ac20b3083429ff45aa4faefb /TAO/tao/CDR.cpp | |
parent | 2f8a860d14adb56c57241b6e76a665e3835b1d04 (diff) | |
download | ATCD-1939a15774cacdf268c47b0bd7eb851ca4f149ab.tar.gz |
ChangeLogTag: Thu Apr 20 11:50:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO/tao/CDR.cpp')
-rw-r--r-- | TAO/tao/CDR.cpp | 131 |
1 files changed, 98 insertions, 33 deletions
diff --git a/TAO/tao/CDR.cpp b/TAO/tao/CDR.cpp index e738a4843ad..31efb9b0ea6 100644 --- a/TAO/tao/CDR.cpp +++ b/TAO/tao/CDR.cpp @@ -5,6 +5,7 @@ #include "tao/ORB_Core.h" #include "tao/Environment.h" #include "tao/SystemException.h" +#include "tao/GIOP_Fragmentation_Strategy.h" #if !defined (__ACE_INLINE__) # include "tao/CDR.i" @@ -25,7 +26,9 @@ static const char *TAO_CDR_Timeprobe_Description[] = "OutputCDR::ctor[2] - enter", "OutputCDR::ctor[2] - leave", "OutputCDR::ctor[3] - enter", - "OutputCDR::ctor[3] - leave" + "OutputCDR::ctor[3] - leave", + "OutputCDR::ctor[4] - enter", + "OutputCDR::ctor[4] - leave" }; enum @@ -35,7 +38,9 @@ enum TAO_OUTPUT_CDR_CTOR2_ENTER, TAO_OUTPUT_CDR_CTOR2_LEAVE, TAO_OUTPUT_CDR_CTOR3_ENTER, - TAO_OUTPUT_CDR_CTOR3_LEAVE + TAO_OUTPUT_CDR_CTOR3_LEAVE, + TAO_OUTPUT_CDR_CTOR4_ENTER, + TAO_OUTPUT_CDR_CTOR4_LEAVE }; // Setup Timeprobes @@ -54,14 +59,20 @@ TAO_OutputCDR::TAO_OutputCDR (size_t size, size_t memcpy_tradeoff, ACE_CDR::Octet major_version, ACE_CDR::Octet minor_version) - : ACE_OutputCDR (size, - byte_order, - buffer_allocator, - data_block_allocator, - message_block_allocator, - memcpy_tradeoff, - major_version, - minor_version) + : ACE_OutputCDR (size, + byte_order, + buffer_allocator, + data_block_allocator, + message_block_allocator, + memcpy_tradeoff, + major_version, + minor_version) + , fragmentation_strategy_ (0) + , more_fragments_ (false) + , request_id_ (0) + , stub_ (0) + , message_semantics_ (-1) + , timeout_ (0) { ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR1_ENTER); } @@ -75,33 +86,73 @@ TAO_OutputCDR::TAO_OutputCDR (char *data, size_t memcpy_tradeoff, ACE_CDR::Octet major_version, ACE_CDR::Octet minor_version) - : ACE_OutputCDR (data, - size, - byte_order, - buffer_allocator, - data_block_allocator, - message_block_allocator, - memcpy_tradeoff, - major_version, - minor_version) + : ACE_OutputCDR (data, + size, + byte_order, + buffer_allocator, + data_block_allocator, + message_block_allocator, + memcpy_tradeoff, + major_version, + minor_version) + , fragmentation_strategy_ (0) + , more_fragments_ (false) + , request_id_ (0) + , stub_ (0) + , message_semantics_ (-1) + , timeout_ (0) { ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR2_ENTER); } -TAO_OutputCDR::TAO_OutputCDR (ACE_Message_Block *data, +TAO_OutputCDR::TAO_OutputCDR (char *data, + size_t size, int byte_order, + ACE_Allocator* buffer_allocator, + ACE_Allocator* data_block_allocator, + ACE_Allocator* message_block_allocator, size_t memcpy_tradeoff, + TAO_GIOP_Fragmentation_Strategy * fs, ACE_CDR::Octet major_version, ACE_CDR::Octet minor_version) - : ACE_OutputCDR (data, - byte_order, - memcpy_tradeoff, - major_version, - minor_version) + : ACE_OutputCDR (data, + size, + byte_order, + buffer_allocator, + data_block_allocator, + message_block_allocator, + memcpy_tradeoff, + major_version, + minor_version) + , fragmentation_strategy_ (fs) + , more_fragments_ (false) + , request_id_ (0) + , stub_ (0) + , message_semantics_ (-1) + , timeout_ (0) { ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR3_ENTER); } +TAO_OutputCDR::TAO_OutputCDR (ACE_Message_Block *data, + int byte_order, + size_t memcpy_tradeoff, + ACE_CDR::Octet major_version, + ACE_CDR::Octet minor_version) + : ACE_OutputCDR (data, + byte_order, + memcpy_tradeoff, + major_version, + minor_version) + , fragmentation_strategy_ (0) + , more_fragments_ (false) + , request_id_ (0) + , stub_ (0) + , message_semantics_ (-1) + , timeout_ (0) +{ + ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR4_ENTER); +} void TAO_OutputCDR::throw_stub_exception (int error_num ACE_ENV_ARG_DECL) @@ -112,15 +163,16 @@ TAO_OutputCDR::throw_stub_exception (int error_num ACE_ENV_ARG_DECL) break; case EINVAL : // wchar from a GIOP 1.0 ACE_THROW (CORBA::MARSHAL (CORBA::OMGVMCID | 5, CORBA::COMPLETED_NO)); - ACE_NOTREACHED(break); + ACE_NOTREACHED (break); #if (ERANGE != EINVAL) case ERANGE : // untranslatable character - ACE_THROW (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1, CORBA::COMPLETED_NO)); - ACE_NOTREACHED(break); + ACE_THROW (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1, + CORBA::COMPLETED_NO)); + ACE_NOTREACHED (break); #endif case EACCES : // wchar but no codeset - ACE_THROW(CORBA::INV_OBJREF (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO)); - ACE_NOTREACHED(break); + ACE_THROW (CORBA::INV_OBJREF (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO)); + ACE_NOTREACHED (break); default : ACE_THROW (CORBA::MARSHAL ()); } @@ -136,18 +188,18 @@ TAO_OutputCDR::throw_skel_exception (int error_num ACE_ENV_ARG_DECL) case EINVAL : // wchar from a GIOP 1.0 ACE_THROW (CORBA::MARSHAL (CORBA::OMGVMCID | 5, CORBA::COMPLETED_YES)); - ACE_NOTREACHED(break); + ACE_NOTREACHED (break); case EACCES : // wchar but no codeset ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 23, CORBA::COMPLETED_YES)); - ACE_NOTREACHED(break); + ACE_NOTREACHED (break); #if (ERANGE != EINVAL) case ERANGE : // untranslatable character ACE_THROW (CORBA::DATA_CONVERSION (CORBA::OMGVMCID | 1, CORBA::COMPLETED_YES)); - ACE_NOTREACHED(break); + ACE_NOTREACHED (break); #endif default : @@ -156,6 +208,19 @@ TAO_OutputCDR::throw_skel_exception (int error_num ACE_ENV_ARG_DECL) } } +bool +TAO_OutputCDR::fragment_stream (ACE_CDR::ULong pending_alignment, + ACE_CDR::ULong pending_length) +{ + if (this->fragmentation_strategy_) + { + return (this->fragmentation_strategy_->fragment (*this, + pending_alignment, + pending_length) == 0); + } + + return true; // Success. +} // **************************************************************** |