summaryrefslogtreecommitdiff
path: root/java/src/Ice/Blobject.java
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2002-02-13 23:27:04 +0000
committerMark Spruiell <mes@zeroc.com>2002-02-13 23:27:04 +0000
commit2a261a5de6548cb08f72f9afcb287feadfdda4dd (patch)
tree7a6517ce40845e54f162689f2b538c3e43cfc4cb /java/src/Ice/Blobject.java
parentThreadPool bug fixes, cleanup (diff)
downloadice-2a261a5de6548cb08f72f9afcb287feadfdda4dd.tar.bz2
ice-2a261a5de6548cb08f72f9afcb287feadfdda4dd.tar.xz
ice-2a261a5de6548cb08f72f9afcb287feadfdda4dd.zip
align with stable_32 in C++
Diffstat (limited to 'java/src/Ice/Blobject.java')
-rw-r--r--java/src/Ice/Blobject.java20
1 files changed, 14 insertions, 6 deletions
diff --git a/java/src/Ice/Blobject.java b/java/src/Ice/Blobject.java
index 53904e5c4b6..ee6531e2ac7 100644
--- a/java/src/Ice/Blobject.java
+++ b/java/src/Ice/Blobject.java
@@ -12,18 +12,26 @@ package Ice;
public abstract class Blobject extends Ice.Object
{
- public abstract byte[]
- ice_invoke(byte[] inParams, Current current);
+ // Returns true if ok, false if user exception.
+ public abstract boolean
+ ice_invoke(byte[] inParams, ByteSeqHolder outParams, Current current);
public IceInternal.DispatchStatus
__dispatch(IceInternal.Incoming in, Current current)
{
byte[] inParams;
- byte[] outParams;
+ ByteSeqHolder outParams = new ByteSeqHolder();
int sz = in.is().getReadEncapsSize();
inParams = in.is().readBlob(sz);
- outParams = ice_invoke(inParams, current);
- in.os().writeBlob(outParams);
- return IceInternal.DispatchStatus.DispatchOK;
+ boolean ok = ice_invoke(inParams, outParams, current);
+ in.os().writeBlob(outParams.value);
+ if (ok)
+ {
+ return IceInternal.DispatchStatus.DispatchOK;
+ }
+ else
+ {
+ return IceInternal.DispatchStatus.DispatchUserException;
+ }
}
}