summaryrefslogtreecommitdiff
path: root/java/src/Ice/ObjectImpl.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2007-05-14 21:17:57 +0000
committerBernard Normier <bernard@zeroc.com>2007-05-14 21:17:57 +0000
commitfd470410eafeacaa25a675673ef05c5cb20db1ba (patch)
tree3d352ebd214909c4fa8a1536f26f918f6d48094e /java/src/Ice/ObjectImpl.java
parentBug 1998 (diff)
downloadice-fd470410eafeacaa25a675673ef05c5cb20db1ba.tar.bz2
ice-fd470410eafeacaa25a675673ef05c5cb20db1ba.tar.xz
ice-fd470410eafeacaa25a675673ef05c5cb20db1ba.zip
Java dispatch interceptor (see bug #2126)
Diffstat (limited to 'java/src/Ice/ObjectImpl.java')
-rw-r--r--java/src/Ice/ObjectImpl.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/java/src/Ice/ObjectImpl.java b/java/src/Ice/ObjectImpl.java
index a7db871c016..970efadc15a 100644
--- a/java/src/Ice/ObjectImpl.java
+++ b/java/src/Ice/ObjectImpl.java
@@ -156,6 +156,35 @@ public abstract class ObjectImpl implements Object, java.lang.Cloneable
};
public IceInternal.DispatchStatus
+ ice_dispatch(Request request, DispatchInterceptorAsyncCallback cb)
+ {
+ if(request.isCollocated())
+ {
+ return __collocDispatch((IceInternal.Direct)request);
+ }
+ else
+ {
+ IceInternal.Incoming in = (IceInternal.Incoming)request;
+ if(cb != null)
+ {
+ in.push(cb);
+ }
+ try
+ {
+ in.startOver(); // may raise ResponseSentException
+ return __dispatch(in, in.getCurrent());
+ }
+ finally
+ {
+ if(cb != null)
+ {
+ in.pop();
+ }
+ }
+ }
+ }
+
+ public IceInternal.DispatchStatus
__dispatch(IceInternal.Incoming in, Current current)
{
int pos = java.util.Arrays.binarySearch(__all, current.operation);
@@ -187,6 +216,13 @@ public abstract class ObjectImpl implements Object, java.lang.Cloneable
assert(false);
return IceInternal.DispatchStatus.DispatchOperationNotExist;
}
+
+ public IceInternal.DispatchStatus
+ __collocDispatch(IceInternal.Direct request)
+ {
+ return request.run(this);
+ }
+
public void
__write(IceInternal.BasicStream __os)