summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2003-02-06 20:39:02 +0000
committerMarc Laukien <marc@zeroc.com>2003-02-06 20:39:02 +0000
commit8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb (patch)
tree8fd580420dad30c88fc38c5e8940b9e68ffed297 /java/src
parentdo not use Ice version in service shared library name (diff)
downloadice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.tar.bz2
ice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.tar.xz
ice-8c47a19fe0a38c6c9a6e97b7859df7f9b5a8b6fb.zip
encaps fixes
Diffstat (limited to 'java/src')
-rw-r--r--java/src/IceInternal/BasicStream.java15
-rw-r--r--java/src/IceInternal/Incoming.java8
-rw-r--r--java/src/IceInternal/IncomingAsync.java4
-rw-r--r--java/src/IceInternal/IncomingBase.java11
-rw-r--r--java/src/IceInternal/OutgoingAsync.java3
5 files changed, 33 insertions, 8 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 20a4ea56bbe..50b96d75c22 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -244,6 +244,21 @@ public class BasicStream
public void
endReadEncaps()
{
+ checkReadEncaps();
+ final ReadEncaps curr = _readEncapsStack;
+ assert(curr != null);
+ _readEncapsStack = curr.next;
+ curr.next = _readEncapsCache;
+ _readEncapsCache = curr;
+ if(_readEncapsCache.objectsRead != null)
+ {
+ _readEncapsCache.objectsRead.clear();
+ }
+ }
+
+ public void
+ skipReadEncaps()
+ {
final ReadEncaps curr = _readEncapsStack;
assert(curr != null);
final int start = curr.start;
diff --git a/java/src/IceInternal/Incoming.java b/java/src/IceInternal/Incoming.java
index cd3f0a2ba0e..c3b618368b1 100644
--- a/java/src/IceInternal/Incoming.java
+++ b/java/src/IceInternal/Incoming.java
@@ -205,7 +205,7 @@ final public class Incoming extends IncomingBase
_os.writeString(ex.operation);
}
- __finishInvoke();
+ __finishInvoke(false);
return;
}
catch(Ice.LocalException ex)
@@ -220,7 +220,7 @@ final public class Incoming extends IncomingBase
_os.writeString(ex.toString());
}
- __finishInvoke();
+ __finishInvoke(false);
return;
}
/* Not possible in Java - UserExceptions are checked exceptions
@@ -241,7 +241,7 @@ final public class Incoming extends IncomingBase
_os.writeString(ex.toString());
}
- __finishInvoke();
+ __finishInvoke(false);
return;
}
@@ -277,7 +277,7 @@ final public class Incoming extends IncomingBase
}
}
- __finishInvoke();
+ __finishInvoke(status == DispatchStatus.DispatchOK || status == DispatchStatus.DispatchUserException);
}
public BasicStream
diff --git a/java/src/IceInternal/IncomingAsync.java b/java/src/IceInternal/IncomingAsync.java
index 6fceb838899..7c91d2d3187 100644
--- a/java/src/IceInternal/IncomingAsync.java
+++ b/java/src/IceInternal/IncomingAsync.java
@@ -58,7 +58,7 @@ public class IncomingAsync extends IncomingBase
_os.pos(save);
}
- __finishInvoke();
+ __finishInvoke(true);
}
final protected void
@@ -149,7 +149,7 @@ public class IncomingAsync extends IncomingBase
}
}
- __finishInvoke();
+ __finishInvoke(false);
}
final protected BasicStream
diff --git a/java/src/IceInternal/IncomingBase.java b/java/src/IceInternal/IncomingBase.java
index d90363c92a9..b5f37ffcbcf 100644
--- a/java/src/IceInternal/IncomingBase.java
+++ b/java/src/IceInternal/IncomingBase.java
@@ -63,14 +63,21 @@ public class IncomingBase
}
final protected void
- __finishInvoke()
+ __finishInvoke(boolean success)
{
if(_locator != null && _servant != null)
{
_locator.finished(_current, _servant, _cookie.value);
}
- _is.endReadEncaps();
+ if(success)
+ {
+ _is.endReadEncaps();
+ }
+ else
+ {
+ _is.skipReadEncaps();
+ }
//
// Send a response if necessary. If we don't need to send a
diff --git a/java/src/IceInternal/OutgoingAsync.java b/java/src/IceInternal/OutgoingAsync.java
index d99e6b80fb1..93a5691a4c8 100644
--- a/java/src/IceInternal/OutgoingAsync.java
+++ b/java/src/IceInternal/OutgoingAsync.java
@@ -93,7 +93,10 @@ public abstract class OutgoingAsync
{
try
{
+ _os.endWriteEncaps();
+
_connection.sendAsyncRequest(this);
+
if(_connection.timeout() >= 0)
{
_absoluteTimeoutMillis = System.currentTimeMillis() + _connection.timeout() * 1000;