summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp
diff options
context:
space:
mode:
authorbala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-07 16:15:54 +0000
committerbala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-07 16:15:54 +0000
commitc092c0177a15f27eb61df0c2a4f708c54e89ff2d (patch)
treef74b76e5b73c1c81d1191d855ce63839c12160be /TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp
parent139c4e1e182b6d11ad6e9d4c7e69f99e771d99d4 (diff)
downloadATCD-c092c0177a15f27eb61df0c2a4f708c54e89ff2d.tar.gz
ChangeLogTag:Thu Aug 7 11:14:56 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/FaultTolerance/FT_ClientRequest_Interceptor.cpp177
1 files changed, 97 insertions, 80 deletions
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
{