diff options
Diffstat (limited to 'java/src/IceInternal/IncomingBase.java')
-rw-r--r-- | java/src/IceInternal/IncomingBase.java | 60 |
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; |