summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Incoming.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2012-10-10 16:00:58 +0200
committerBenoit Foucher <benoit@zeroc.com>2012-10-10 16:00:58 +0200
commit8bcfc9e4a8a1de3d72e30ffc6f3c9d72a8d3f0e4 (patch)
tree1cdcd88fccb57f88d2b47cd1757b4d43bc05be4b /cpp/src/Ice/Incoming.cpp
parentAdded IceGridGUI IceStorm metrics (diff)
downloadice-8bcfc9e4a8a1de3d72e30ffc6f3c9d72a8d3f0e4.tar.bz2
ice-8bcfc9e4a8a1de3d72e30ffc6f3c9d72a8d3f0e4.tar.xz
ice-8bcfc9e4a8a1de3d72e30ffc6f3c9d72a8d3f0e4.zip
Improved tracing of failures, user exceptions are now tracked
with a userException member.
Diffstat (limited to 'cpp/src/Ice/Incoming.cpp')
-rw-r--r--cpp/src/Ice/Incoming.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index f31d3b19e88..9c0fc36f509 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -107,6 +107,11 @@ IncomingBase::__startWriteParams(FormatType format)
void
IncomingBase::__endWriteParams(bool ok)
{
+ if(!ok)
+ {
+ _observer.userException();
+ }
+
if(_response)
{
*(_os.b.begin() + headerSize + 4) = ok ? replyOK : replyUserException; // Reply status position.
@@ -129,6 +134,11 @@ IncomingBase::__writeEmptyParams()
void
IncomingBase::__writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
{
+ if(!ok)
+ {
+ _observer.userException();
+ }
+
if(_response)
{
assert(_os.b.size() == headerSize + 4); // Reply status position.
@@ -148,11 +158,6 @@ IncomingBase::__writeParamEncaps(const Byte* v, Ice::Int sz, bool ok)
void
IncomingBase::__writeUserException(const Ice::UserException& ex, Ice::FormatType format)
{
- if(_observer)
- {
- _observer.failed(ex.ice_name());
- }
-
::IceInternal::BasicStream* __os = __startWriteParams(format);
__os->write(ex);
__endWriteParams(false);
@@ -215,7 +220,7 @@ IceInternal::IncomingBase::__servantLocatorFinished()
if(_observer)
{
- _observer.failed(ex.ice_name());
+ _observer.userException();
}
//
@@ -613,7 +618,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager, BasicStre
if(_observer)
{
- _observer.failed(ex.ice_name());
+ _observer.userException();
}
if(_response)