summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2003-01-25 17:06:53 +0000
committerMark Spruiell <mes@zeroc.com>2003-01-25 17:06:53 +0000
commit4aa5ae4bd02c6319adc1e09d9988c3156efd5606 (patch)
treef4e8c09fbe577c6219b01e966f26092fab3cbe9d /cpp/src
parentraise NonRepeatable when exception occurs during reply unmarshalling (diff)
downloadice-4aa5ae4bd02c6319adc1e09d9988c3156efd5606.tar.bz2
ice-4aa5ae4bd02c6319adc1e09d9988c3156efd5606.tar.xz
ice-4aa5ae4bd02c6319adc1e09d9988c3156efd5606.zip
trap LocalException during reply unmarshalling
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/Proxy.cpp49
1 files changed, 42 insertions, 7 deletions
diff --git a/cpp/src/Ice/Proxy.cpp b/cpp/src/Ice/Proxy.cpp
index c7452e43341..cfc8aee2ed7 100644
--- a/cpp/src/Ice/Proxy.cpp
+++ b/cpp/src/Ice/Proxy.cpp
@@ -792,7 +792,14 @@ IceDelegateM::Ice::Object::ice_isA(const string& __id, const Context& __context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__);
}
bool __ret;
- __is->read(__ret);
+ try
+ {
+ __is->read(__ret);
+ }
+ catch(const ::Ice::LocalException& __ex)
+ {
+ throw ::IceInternal::NonRepeatable(__ex);
+ }
return __ret;
}
@@ -818,7 +825,14 @@ IceDelegateM::Ice::Object::ice_ids(const Context& __context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__);
}
vector<string> __ret;
- __is->read(__ret);
+ try
+ {
+ __is->read(__ret);
+ }
+ catch(const ::Ice::LocalException& __ex)
+ {
+ throw ::IceInternal::NonRepeatable(__ex);
+ }
return __ret;
}
@@ -833,7 +847,14 @@ IceDelegateM::Ice::Object::ice_id(const Context& __context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__);
}
string __ret;
- __is->read(__ret);
+ try
+ {
+ __is->read(__ret);
+ }
+ catch(const ::Ice::LocalException& __ex)
+ {
+ throw ::IceInternal::NonRepeatable(__ex);
+ }
return __ret;
}
@@ -848,7 +869,14 @@ IceDelegateM::Ice::Object::ice_facets(const Context& __context)
throw ::Ice::UnknownUserException(__FILE__, __LINE__);
}
FacetPath __ret;
- __is->read(__ret);
+ try
+ {
+ __is->read(__ret);
+ }
+ catch(const ::Ice::LocalException& __ex)
+ {
+ throw ::IceInternal::NonRepeatable(__ex);
+ }
return __ret;
}
@@ -865,9 +893,16 @@ IceDelegateM::Ice::Object::ice_invoke(const string& operation,
bool ok = __out.invoke();
if(__reference->mode == Reference::ModeTwoway)
{
- BasicStream* __is = __out.is();
- Int sz = __is->getReadEncapsSize();
- __is->readBlob(outParams, sz);
+ try
+ {
+ BasicStream* __is = __out.is();
+ Int sz = __is->getReadEncapsSize();
+ __is->readBlob(outParams, sz);
+ }
+ catch(const ::Ice::LocalException& __ex)
+ {
+ throw ::IceInternal::NonRepeatable(__ex);
+ }
}
return ok;
}