summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/OutgoingAsync.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2008-01-09 21:27:15 +0100
committerBenoit Foucher <benoit@zeroc.com>2008-01-09 21:27:15 +0100
commit5b2cdfebdd59ca3f99eb306e0ccf775fc0a81b83 (patch)
tree3414c09ed68bbbda6d446a76c552e065c9e91108 /cpp/src/Ice/OutgoingAsync.cpp
parentAdded info on mcpp (diff)
downloadice-5b2cdfebdd59ca3f99eb306e0ccf775fc0a81b83.tar.bz2
ice-5b2cdfebdd59ca3f99eb306e0ccf775fc0a81b83.tar.xz
ice-5b2cdfebdd59ca3f99eb306e0ccf775fc0a81b83.zip
- Fixed bug 1619, part of 2632.
Diffstat (limited to 'cpp/src/Ice/OutgoingAsync.cpp')
-rw-r--r--cpp/src/Ice/OutgoingAsync.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp
index f215964e4d9..51887688b6a 100644
--- a/cpp/src/Ice/OutgoingAsync.cpp
+++ b/cpp/src/Ice/OutgoingAsync.cpp
@@ -241,7 +241,6 @@ IceInternal::OutgoingAsync::__finished(BasicStream& is)
case replyOK:
case replyUserException:
{
- __is->startReadEncaps();
break;
}
@@ -521,6 +520,21 @@ IceInternal::OutgoingAsync::__send()
}
void
+IceInternal::OutgoingAsync::__throwUserException()
+{
+ try
+ {
+ __is->startReadEncaps();
+ __is->throwException();
+ }
+ catch(const Ice::UserException&)
+ {
+ __is->endReadEncaps();
+ throw;
+ }
+}
+
+void
IceInternal::OutgoingAsync::handleException(const LocalExceptionWrapper& ex)
{
if(_mode == Nonmutating || _mode == Idempotent)
@@ -637,8 +651,10 @@ Ice::AMI_Object_ice_invoke::__response(bool ok) // ok == true means no user exce
vector<Byte> outParams;
try
{
+ __is->startReadEncaps();
Int sz = __is->getReadEncapsSize();
__is->readBlob(outParams, sz);
+ __is->endReadEncaps();
}
catch(const LocalException& ex)
{
@@ -673,9 +689,11 @@ Ice::AMI_Array_Object_ice_invoke::__response(bool ok) // ok == true means no use
pair<const Byte*, const Byte*> outParams;
try
{
+ __is->startReadEncaps();
Int sz = __is->getReadEncapsSize();
__is->readBlob(outParams.first, sz);
outParams.second = outParams.first + sz;
+ __is->endReadEncaps();
}
catch(const LocalException& ex)
{