summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Outgoing.cpp
diff options
context:
space:
mode:
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),