diff options
author | bala <balanatarajan@users.noreply.github.com> | 2003-08-07 16:15:54 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2003-08-07 16:15:54 +0000 |
commit | af5a774ce5de7c4c090c53a3f88a08a112a84d12 (patch) | |
tree | f74b76e5b73c1c81d1191d855ce63839c12160be | |
parent | 995e6e7e984ddda323abfd8593414b2e5fd30d70 (diff) | |
download | ATCD-af5a774ce5de7c4c090c53a3f88a08a112a84d12.tar.gz |
ChangeLogTag:Thu Aug 7 11:14:56 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 6 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp | 177 |
2 files changed, 103 insertions, 80 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index ef0b70df4f4..52be6920395 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,9 @@ +Thu Aug 7 11:14:56 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> + + * orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp: + Fixed a couple of problems with the checkin "Wed Aug 6 22:10:51 + 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>". + Wed Aug 6 22:10:51 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu> * orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp: diff --git a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp index 47d0f29393b..d630c479e8a 100644 --- a/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp +++ b/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp @@ -180,60 +180,68 @@ TAO_FT_ClientRequest_Interceptor::group_version_context ( } ACE_CATCH (CORBA::BAD_PARAM, ex) { - IOP::TaggedComponent_var tp = - ri->get_effective_component (IOP::TAG_FT_GROUP - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_TRY_EX (YET_AGAIN) + { + IOP::TaggedComponent_var tp = + ri->get_effective_component (IOP::TAG_FT_GROUP + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); - // Grab the object group version - // @@ NOTE: This involves an allocation and a dellocation. This is - // really bad. - TAO_InputCDR cdr (ACE_reinterpret_cast (const char*, - tp->component_data.get_buffer () + // Grab the object group version + // @@ NOTE: This involves an allocation and a dellocation. This is + // really bad. + TAO_InputCDR cdr (ACE_reinterpret_cast (const char*, + tp->component_data.get_buffer () ), - tp->component_data.length ()); - CORBA::Boolean byte_order; + tp->component_data.length ()); + CORBA::Boolean byte_order; - if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) - return; + if ((cdr >> ACE_InputCDR::to_boolean (byte_order)) == 0) + return; - cdr.reset_byte_order (ACE_static_cast (int,byte_order)); + cdr.reset_byte_order (ACE_static_cast (int,byte_order)); - FT::TagFTGroupTaggedComponent fgtc; + FT::TagFTGroupTaggedComponent fgtc; - if ((cdr >> fgtc) == 0) - ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, - CORBA::COMPLETED_NO)); + if ((cdr >> fgtc) == 0) + ACE_THROW (CORBA::BAD_PARAM (CORBA::OMGVMCID | 28, + CORBA::COMPLETED_NO)); - IOP::ServiceContext sc; - sc.context_id = IOP::FT_GROUP_VERSION; + IOP::ServiceContext sc; + sc.context_id = IOP::FT_GROUP_VERSION; + + TAO_OutputCDR ocdr; + if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) + ACE_THROW (CORBA::MARSHAL ()); - TAO_OutputCDR ocdr; - if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) - ACE_THROW (CORBA::MARSHAL ()); + if (!(ocdr << fgtc)) + ACE_THROW (CORBA::MARSHAL ()); - if (!(ocdr << fgtc)) - ACE_THROW (CORBA::MARSHAL ()); + CORBA::ULong length = + ACE_static_cast (CORBA::ULong, ocdr.total_length ()); + sc.context_data.length (length); + CORBA::Octet *buf = sc.context_data.get_buffer (); - CORBA::ULong length = - ACE_static_cast (CORBA::ULong, ocdr.total_length ()); - sc.context_data.length (length); - CORBA::Octet *buf = sc.context_data.get_buffer (); + for (const ACE_Message_Block *i = ocdr.begin (); + i != 0; + i = i->cont ()) + { + ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); + buf += i->length (); + } - for (const ACE_Message_Block *i = ocdr.begin (); - i != 0; - i = i->cont ()) + // Add this context to the service context list. + ri->add_request_service_context (sc, + 0 + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); + } + ACE_CATCHANY { - ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); - buf += i->length (); + return; } - - // Add this context to the service context list. - ri->add_request_service_context (sc, - 0 - ACE_ENV_ARG_PARAMETER); + ACE_ENDTRY; ACE_CHECK; - } ACE_CATCHANY { @@ -266,51 +274,60 @@ TAO_FT_ClientRequest_Interceptor::request_service_context ( IOP::ServiceContext sc; sc.context_id = IOP::FT_REQUEST; - CORBA::Policy_var policy = - ri->get_request_policy (FT::REQUEST_DURATION_POLICY - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - // @@ NOTE: This needs fixing if something useful needs to - // happen. - FT::FTRequestServiceContext ftrsc; - ftrsc.client_id = CORBA::string_dup (this->uuid_->to_string ()->c_str ()); - ftrsc.expiration_time = - this->request_expiration_time (policy.in () - ACE_ENV_ARG_PARAMETER); - - ftrsc.retention_id = - ri->request_id (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + ACE_TRY_EX (YET_AGAIN) + { + CORBA::Policy_var policy = + ri->get_request_policy (FT::REQUEST_DURATION_POLICY + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); + + // @@ NOTE: This needs fixing if something useful needs to + // happen. + FT::FTRequestServiceContext ftrsc; + ftrsc.client_id = + CORBA::string_dup (this->uuid_->to_string ()->c_str ()); + ftrsc.expiration_time = + this->request_expiration_time (policy.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); + + ftrsc.retention_id = + ri->request_id (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); // @@ NOTE we need to generate a UUID here - TAO_OutputCDR ocdr; - if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) - ACE_THROW (CORBA::MARSHAL ()); - - if (!(ocdr << ftrsc)) - ACE_THROW (CORBA::MARSHAL ()); - - // Make a *copy* of the CDR stream... - CORBA::ULong length = - ACE_static_cast (CORBA::ULong, ocdr.total_length ()); - sc.context_data.length (length); - CORBA::Octet *buf = sc.context_data.get_buffer (); - - for (const ACE_Message_Block *i = ocdr.begin (); - i != 0; - i = i->cont ()) + TAO_OutputCDR ocdr; + if (!(ocdr << ACE_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))) + ACE_THROW (CORBA::MARSHAL ()); + + if (!(ocdr << ftrsc)) + ACE_THROW (CORBA::MARSHAL ()); + + // Make a *copy* of the CDR stream... + CORBA::ULong length = + ACE_static_cast (CORBA::ULong, ocdr.total_length ()); + sc.context_data.length (length); + CORBA::Octet *buf = sc.context_data.get_buffer (); + + for (const ACE_Message_Block *i = ocdr.begin (); + i != 0; + i = i->cont ()) + { + ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); + buf += i->length (); + } + + // Add this context to the service context list. + ri->add_request_service_context (sc, + 0 + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK_EX (YET_AGAIN); + } + ACE_CATCHANY { - ACE_OS::memcpy (buf, i->rd_ptr (), i->length ()); - buf += i->length (); } - - // Add this context to the service context list. - ri->add_request_service_context (sc, - 0 - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + ACE_ENDTRY; } ACE_CATCHANY { |