summaryrefslogtreecommitdiff
path: root/java/src/IceInternal/OutgoingAsync.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceInternal/OutgoingAsync.java')
-rw-r--r--java/src/IceInternal/OutgoingAsync.java546
1 files changed, 273 insertions, 273 deletions
diff --git a/java/src/IceInternal/OutgoingAsync.java b/java/src/IceInternal/OutgoingAsync.java
index 47440535c60..d7a9af5d4d7 100644
--- a/java/src/IceInternal/OutgoingAsync.java
+++ b/java/src/IceInternal/OutgoingAsync.java
@@ -21,31 +21,31 @@ public abstract class OutgoingAsync
public final void
__finished(BasicStream is)
{
- synchronized(_monitor)
- {
- int status;
-
- try
- {
- __is.swap(is);
-
- status = (int)__is.readByte();
-
- switch(status)
- {
- case DispatchStatus._DispatchOK:
- case DispatchStatus._DispatchUserException:
- {
- __is.startReadEncaps();
- break;
- }
-
- case DispatchStatus._DispatchObjectNotExist:
- case DispatchStatus._DispatchFacetNotExist:
- case DispatchStatus._DispatchOperationNotExist:
- {
- Ice.Identity id = new Ice.Identity();
- id.__read(__is);
+ synchronized(_monitor)
+ {
+ int status;
+
+ try
+ {
+ __is.swap(is);
+
+ status = (int)__is.readByte();
+
+ switch(status)
+ {
+ case DispatchStatus._DispatchOK:
+ case DispatchStatus._DispatchUserException:
+ {
+ __is.startReadEncaps();
+ break;
+ }
+
+ case DispatchStatus._DispatchObjectNotExist:
+ case DispatchStatus._DispatchFacetNotExist:
+ case DispatchStatus._DispatchOperationNotExist:
+ {
+ Ice.Identity id = new Ice.Identity();
+ id.__read(__is);
//
// For compatibility with the old FacetPath.
@@ -54,20 +54,20 @@ public abstract class OutgoingAsync
String facet;
if(facetPath.length > 0)
{
- if(facetPath.length > 1)
- {
- throw new Ice.MarshalException();
- }
+ if(facetPath.length > 1)
+ {
+ throw new Ice.MarshalException();
+ }
facet = facetPath[0];
}
- else
- {
- facet = "";
- }
+ else
+ {
+ facet = "";
+ }
- String operation = __is.readString();
+ String operation = __is.readString();
- Ice.RequestFailedException ex = null;
+ Ice.RequestFailedException ex = null;
switch(status)
{
case DispatchStatus._DispatchObjectNotExist:
@@ -95,17 +95,17 @@ public abstract class OutgoingAsync
}
}
- ex.id = id;
- ex.facet = facet;
- ex.operation = operation;
- throw ex;
- }
+ ex.id = id;
+ ex.facet = facet;
+ ex.operation = operation;
+ throw ex;
+ }
- case DispatchStatus._DispatchUnknownException:
- case DispatchStatus._DispatchUnknownLocalException:
- case DispatchStatus._DispatchUnknownUserException:
- {
- String unknown = __is.readString();
+ case DispatchStatus._DispatchUnknownException:
+ case DispatchStatus._DispatchUnknownLocalException:
+ case DispatchStatus._DispatchUnknownUserException:
+ {
+ String unknown = __is.readString();
Ice.UnknownException ex = null;
switch(status)
@@ -135,153 +135,153 @@ public abstract class OutgoingAsync
}
}
- ex.unknown = unknown;
- throw ex;
- }
-
- default:
- {
- throw new Ice.UnknownReplyStatusException();
- }
- }
- }
- catch(Ice.LocalException ex)
- {
- __finished(ex);
- return;
- }
-
- assert(status == DispatchStatus._DispatchOK || status == DispatchStatus._DispatchUserException);
-
- try
- {
- __response(status == DispatchStatus._DispatchOK);
- }
- catch(java.lang.Exception ex)
- {
- warning(ex);
- }
- finally
- {
- cleanup();
- }
- }
+ ex.unknown = unknown;
+ throw ex;
+ }
+
+ default:
+ {
+ throw new Ice.UnknownReplyStatusException();
+ }
+ }
+ }
+ catch(Ice.LocalException ex)
+ {
+ __finished(ex);
+ return;
+ }
+
+ assert(status == DispatchStatus._DispatchOK || status == DispatchStatus._DispatchUserException);
+
+ try
+ {
+ __response(status == DispatchStatus._DispatchOK);
+ }
+ catch(java.lang.Exception ex)
+ {
+ warning(ex);
+ }
+ finally
+ {
+ cleanup();
+ }
+ }
}
public final void
__finished(Ice.LocalException exc)
{
- synchronized(_monitor)
- {
- if(__os != null) // Don't retry if cleanup() was already called.
- {
- //
- // A CloseConnectionException indicates graceful
- // server shutdown, and is therefore always repeatable
- // without violating "at-most-once". That's because by
- // sending a close connection message, the server
- // guarantees that all outstanding requests can safely
- // be repeated. Otherwise, we can also retry if the
- // operation mode is Nonmutating or Idempotent.
- //
- // An ObjectNotExistException can always be retried as
- // well without violating "at-most-once".
- //
- if(_mode == Ice.OperationMode.Nonmutating || _mode == Ice.OperationMode.Idempotent ||
- exc instanceof Ice.CloseConnectionException || exc instanceof Ice.ObjectNotExistException)
- {
- try
- {
- _cnt = ((Ice.ObjectPrxHelperBase)_proxy).__handleException(_delegate, exc, _cnt);
- __send();
- return;
- }
- catch(Ice.LocalException ex)
- {
- }
- }
- }
-
- try
- {
- ice_exception(exc);
- }
- catch(java.lang.Exception ex)
- {
- warning(ex);
- }
- finally
- {
- cleanup();
- }
- }
+ synchronized(_monitor)
+ {
+ if(__os != null) // Don't retry if cleanup() was already called.
+ {
+ //
+ // A CloseConnectionException indicates graceful
+ // server shutdown, and is therefore always repeatable
+ // without violating "at-most-once". That's because by
+ // sending a close connection message, the server
+ // guarantees that all outstanding requests can safely
+ // be repeated. Otherwise, we can also retry if the
+ // operation mode is Nonmutating or Idempotent.
+ //
+ // An ObjectNotExistException can always be retried as
+ // well without violating "at-most-once".
+ //
+ if(_mode == Ice.OperationMode.Nonmutating || _mode == Ice.OperationMode.Idempotent ||
+ exc instanceof Ice.CloseConnectionException || exc instanceof Ice.ObjectNotExistException)
+ {
+ try
+ {
+ _cnt = ((Ice.ObjectPrxHelperBase)_proxy).__handleException(_delegate, exc, _cnt);
+ __send();
+ return;
+ }
+ catch(Ice.LocalException ex)
+ {
+ }
+ }
+ }
+
+ try
+ {
+ ice_exception(exc);
+ }
+ catch(java.lang.Exception ex)
+ {
+ warning(ex);
+ }
+ finally
+ {
+ cleanup();
+ }
+ }
}
public final boolean
__timedOut()
{
- //
- // No synchronization necessary, because
- // _absoluteTimeoutMillis is declared volatile. We cannot
- // synchronize here because otherwise there might be deadlocks
- // when Ice.ConnectionI calls back on this object with this
- // function.
- //
- if(_absoluteTimeoutMillis > 0)
- {
- return System.currentTimeMillis() >= _absoluteTimeoutMillis;
- }
- else
- {
- return false;
- }
+ //
+ // No synchronization necessary, because
+ // _absoluteTimeoutMillis is declared volatile. We cannot
+ // synchronize here because otherwise there might be deadlocks
+ // when Ice.ConnectionI calls back on this object with this
+ // function.
+ //
+ if(_absoluteTimeoutMillis > 0)
+ {
+ return System.currentTimeMillis() >= _absoluteTimeoutMillis;
+ }
+ else
+ {
+ return false;
+ }
}
protected final void
__prepare(Ice.ObjectPrx prx, String operation, Ice.OperationMode mode, java.util.Map context)
{
- synchronized(_monitor)
- {
- try
- {
- //
- // We must first wait for other requests to finish.
- //
- while(__os != null)
- {
- try
- {
- _monitor.wait();
- }
- catch(InterruptedException ex)
- {
- }
- }
-
- //
- // Can't call async via a oneway proxy.
- //
- ((Ice.ObjectPrxHelperBase)prx).__checkTwowayOnly(operation);
-
- _proxy = prx;
+ synchronized(_monitor)
+ {
+ try
+ {
+ //
+ // We must first wait for other requests to finish.
+ //
+ while(__os != null)
+ {
+ try
+ {
+ _monitor.wait();
+ }
+ catch(InterruptedException ex)
+ {
+ }
+ }
+
+ //
+ // Can't call async via a oneway proxy.
+ //
+ ((Ice.ObjectPrxHelperBase)prx).__checkTwowayOnly(operation);
+
+ _proxy = prx;
_delegate = null;
- _cnt = 0;
- _mode = mode;
+ _cnt = 0;
+ _mode = mode;
- Reference ref = ((Ice.ObjectPrxHelperBase)_proxy).__reference();
- assert(__is == null);
- __is = new BasicStream(ref.getInstance());
- assert(__os == null);
- __os = new BasicStream(ref.getInstance());
+ Reference ref = ((Ice.ObjectPrxHelperBase)_proxy).__reference();
+ assert(__is == null);
+ __is = new BasicStream(ref.getInstance());
+ assert(__os == null);
+ __os = new BasicStream(ref.getInstance());
- __os.writeBlob(IceInternal.Protocol.requestHdr);
-
- ref.getIdentity().__write(__os);
+ __os.writeBlob(IceInternal.Protocol.requestHdr);
+
+ ref.getIdentity().__write(__os);
//
// For compatibility with the old FacetPath.
//
- String facet = ref.getFacet();
+ String facet = ref.getFacet();
if(facet == null || facet.length() == 0)
{
__os.writeStringSeq(null);
@@ -292,96 +292,96 @@ public abstract class OutgoingAsync
__os.writeStringSeq(facetPath);
}
- __os.writeString(operation);
-
- __os.writeByte((byte)mode.value());
-
- if(context != null)
- {
- //
- // Explicit context
- //
- Ice.ContextHelper.write(__os, context);
- }
- else
- {
- //
- // Implicit context
- //
- Ice.ImplicitContextI implicitContext =
- ref.getInstance().getImplicitContext();
-
- java.util.Map prxContext = ref.getContext();
-
- if(implicitContext == null)
- {
- Ice.ContextHelper.write(__os, prxContext);
- }
- else
- {
- implicitContext.write(prxContext, __os);
- }
- }
-
- __os.startWriteEncaps();
- }
- catch(Ice.LocalException ex)
- {
- cleanup();
- throw ex;
- }
- }
+ __os.writeString(operation);
+
+ __os.writeByte((byte)mode.value());
+
+ if(context != null)
+ {
+ //
+ // Explicit context
+ //
+ Ice.ContextHelper.write(__os, context);
+ }
+ else
+ {
+ //
+ // Implicit context
+ //
+ Ice.ImplicitContextI implicitContext =
+ ref.getInstance().getImplicitContext();
+
+ java.util.Map prxContext = ref.getContext();
+
+ if(implicitContext == null)
+ {
+ Ice.ContextHelper.write(__os, prxContext);
+ }
+ else
+ {
+ implicitContext.write(prxContext, __os);
+ }
+ }
+
+ __os.startWriteEncaps();
+ }
+ catch(Ice.LocalException ex)
+ {
+ cleanup();
+ throw ex;
+ }
+ }
}
protected final void
__send()
{
- synchronized(_monitor)
- {
- try
- {
- while(true)
- {
- Ice.BooleanHolder comp = new Ice.BooleanHolder();
+ synchronized(_monitor)
+ {
+ try
+ {
+ while(true)
+ {
+ Ice.BooleanHolder comp = new Ice.BooleanHolder();
_delegate = ((Ice.ObjectPrxHelperBase)_proxy).__getDelegate();
- Ice.ConnectionI con = _delegate.__getConnection(comp);
- if(con.timeout() >= 0)
- {
- _absoluteTimeoutMillis = System.currentTimeMillis() + con.timeout();
- }
- else
- {
- _absoluteTimeoutMillis = 0;
- }
-
- try
- {
- con.sendAsyncRequest(__os, this, comp.value);
-
- //
- // Don't do anything after sendAsyncRequest() returned
- // without an exception. I such case, there will be
- // callbacks, i.e., calls to the __finished()
- // functions. Since there is no mutex protection, we
- // cannot modify state here and in such callbacks.
- //
- return;
- }
- catch(LocalExceptionWrapper ex)
- {
- ((Ice.ObjectPrxHelperBase)_proxy).__handleExceptionWrapper(_delegate, ex);
- }
- catch(Ice.LocalException ex)
- {
- _cnt = ((Ice.ObjectPrxHelperBase)_proxy).__handleException(_delegate, ex, _cnt);
- }
- }
- }
- catch(Ice.LocalException ex)
- {
- __finished(ex);
- }
- }
+ Ice.ConnectionI con = _delegate.__getConnection(comp);
+ if(con.timeout() >= 0)
+ {
+ _absoluteTimeoutMillis = System.currentTimeMillis() + con.timeout();
+ }
+ else
+ {
+ _absoluteTimeoutMillis = 0;
+ }
+
+ try
+ {
+ con.sendAsyncRequest(__os, this, comp.value);
+
+ //
+ // Don't do anything after sendAsyncRequest() returned
+ // without an exception. I such case, there will be
+ // callbacks, i.e., calls to the __finished()
+ // functions. Since there is no mutex protection, we
+ // cannot modify state here and in such callbacks.
+ //
+ return;
+ }
+ catch(LocalExceptionWrapper ex)
+ {
+ ((Ice.ObjectPrxHelperBase)_proxy).__handleExceptionWrapper(_delegate, ex);
+ }
+ catch(Ice.LocalException ex)
+ {
+ _cnt = ((Ice.ObjectPrxHelperBase)_proxy).__handleException(_delegate, ex, _cnt);
+ }
+ }
+ }
+ catch(Ice.LocalException ex)
+ {
+ __finished(ex);
+ }
+ }
}
protected abstract void __response(boolean ok);
@@ -389,31 +389,31 @@ public abstract class OutgoingAsync
private final void
warning(java.lang.Exception ex)
{
- if(__os != null) // Don't print anything if cleanup() was already called.
- {
- Reference ref = ((Ice.ObjectPrxHelperBase)_proxy).__reference();
- if(ref.getInstance().initializationData().properties.getPropertyAsIntWithDefault(
- "Ice.Warn.AMICallback", 1) > 0)
- {
- java.io.StringWriter sw = new java.io.StringWriter();
- java.io.PrintWriter pw = new java.io.PrintWriter(sw);
- IceUtil.OutputBase out = new IceUtil.OutputBase(pw);
- out.setUseTab(false);
- out.print("exception raised by AMI callback:\n");
- ex.printStackTrace(pw);
- pw.flush();
- ref.getInstance().initializationData().logger.warning(sw.toString());
- }
- }
+ if(__os != null) // Don't print anything if cleanup() was already called.
+ {
+ Reference ref = ((Ice.ObjectPrxHelperBase)_proxy).__reference();
+ if(ref.getInstance().initializationData().properties.getPropertyAsIntWithDefault(
+ "Ice.Warn.AMICallback", 1) > 0)
+ {
+ java.io.StringWriter sw = new java.io.StringWriter();
+ java.io.PrintWriter pw = new java.io.PrintWriter(sw);
+ IceUtil.OutputBase out = new IceUtil.OutputBase(pw);
+ out.setUseTab(false);
+ out.print("exception raised by AMI callback:\n");
+ ex.printStackTrace(pw);
+ pw.flush();
+ ref.getInstance().initializationData().logger.warning(sw.toString());
+ }
+ }
}
private final void
cleanup()
{
- __is = null;
- __os = null;
+ __is = null;
+ __os = null;
- _monitor.notify();
+ _monitor.notify();
}
protected BasicStream __is;