summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/IncomingBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/IncomingBase.java')
-rw-r--r--java/src/IceInternal/IncomingBase.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/java/src/IceInternal/IncomingBase.java b/java/src/IceInternal/IncomingBase.java
index f3d89f3b71d..6d1ec52dde6 100644
--- a/java/src/IceInternal/IncomingBase.java
+++ b/java/src/IceInternal/IncomingBase.java
@@ -62,6 +62,9 @@ public class IncomingBase
_instance = other._instance;
//other._instance = null; // Don't reset _instance.
+ _observer = other._observer;
+ other._observer = null;
+
_servant = other._servant;
other._servant = null;
@@ -155,6 +158,10 @@ public class IncomingBase
public void
__writeUserException(Ice.UserException ex, Ice.FormatType format)
{
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
BasicStream __os = __startWriteParams(format);
__os.writeUserException(ex);
__endWriteParams(false);
@@ -209,6 +216,8 @@ public class IncomingBase
_cookie.value = null;
}
+ _observer = null;
+
if(_os != null)
{
_os.reset();
@@ -259,6 +268,11 @@ public class IncomingBase
{
assert(_connection != null);
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
//
// The operation may have already marshaled a reply; we must overwrite that reply.
//
@@ -276,6 +290,11 @@ public class IncomingBase
_connection.sendNoResponse();
}
+ if(_observer != null)
+ {
+ _observer.detach();
+ _observer = null;
+ }
_connection = null;
}
catch(java.lang.Exception ex)
@@ -315,6 +334,11 @@ public class IncomingBase
{
__warning(ex);
}
+
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
if(_response)
{
@@ -366,6 +390,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -385,6 +414,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -404,6 +438,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -423,6 +462,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -448,6 +492,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.ice_name());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -473,6 +522,11 @@ public class IncomingBase
__warning(ex);
}
+ if(_observer != null)
+ {
+ _observer.failed(ex.getClass().getName());
+ }
+
if(_response)
{
_os.resize(Protocol.headerSize + 4, false); // Reply status position.
@@ -491,6 +545,11 @@ public class IncomingBase
}
}
+ if(_observer != null)
+ {
+ _observer.detach();
+ _observer = null;
+ }
_connection = null;
}
@@ -499,6 +558,7 @@ public class IncomingBase
protected Ice.Object _servant;
protected Ice.ServantLocator _locator;
protected Ice.LocalObjectHolder _cookie;
+ protected Ice.Instrumentation.Observer _observer;
protected boolean _response;
protected byte _compress;