summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Outgoing.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/Outgoing.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/Outgoing.cpp')
-rw-r--r--cpp/src/Ice/Outgoing.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp
index 24d6263ac2d..8f9b716e52c 100644
--- a/cpp/src/Ice/Outgoing.cpp
+++ b/cpp/src/Ice/Outgoing.cpp
@@ -374,24 +374,12 @@ IceInternal::Outgoing::finished(BasicStream& is)
{
case replyOK:
{
- //
- // Input and output parameters are always sent in an
- // encapsulation, which makes it possible to forward
- // oneway requests as blobs.
- //
- _is.startReadEncaps();
_state = StateOK; // The state must be set last, in case there is an exception.
break;
}
case replyUserException:
{
- //
- // Input and output parameters are always sent in an
- // encapsulation, which makes it possible to forward
- // oneway requests as blobs.
- //
- _is.startReadEncaps();
_state = StateUserException; // The state must be set last, in case there is an exception.
break;
}
@@ -534,6 +522,21 @@ IceInternal::Outgoing::finished(const LocalException& ex)
_monitor.notify();
}
+void
+IceInternal::Outgoing::throwUserException()
+{
+ try
+ {
+ _is.startReadEncaps();
+ _is.throwException();
+ }
+ catch(const Ice::UserException&)
+ {
+ _is.endReadEncaps();
+ throw;
+ }
+}
+
IceInternal::BatchOutgoing::BatchOutgoing(RequestHandler* handler) :
_handler(handler),
_connection(0),