summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/IceInternal/BasicStream.java33
1 files changed, 22 insertions, 11 deletions
diff --git a/java/src/IceInternal/BasicStream.java b/java/src/IceInternal/BasicStream.java
index 279adfda858..e136e209fe1 100644
--- a/java/src/IceInternal/BasicStream.java
+++ b/java/src/IceInternal/BasicStream.java
@@ -76,18 +76,19 @@ public class BasicStream
public void
resize(int total)
{
- // TODO
- /*
if (total > MAX)
{
throw new Ice.MemoryLimitException();
}
- if (total > _buf.capacity())
+ if (total > _capacity)
{
- // TODO - Get new buffer
+ final int cap2 = _capacity << 1;
+ int newCapacity = cap2 > total ? cap2 : total;
+ _buf = _bufferManager.reallocate(_buf, newCapacity);
+ _capacity = _buf.capacity();
}
_buf.limit(total);
- */
+ _limit = total;
}
/* TODO - Remove?
@@ -103,6 +104,12 @@ public class BasicStream
*/
java.nio.ByteBuffer
+ prepareRead()
+ {
+ return _buf;
+ }
+
+ java.nio.ByteBuffer
prepareWrite()
{
_buf.limit(_limit);
@@ -118,6 +125,7 @@ public class BasicStream
enc.start = _buf.position();
enc.encoding = 0;
_encapsStack.add(enc);
+ writeByte(enc.encoding);
}
public void
@@ -900,13 +908,16 @@ public class BasicStream
private void
expand(int size)
{
- _limit += size;
- if (_limit > _capacity)
+ if (_buf.position() == _limit)
{
- final int cap2 = _capacity << 1;
- int newCapacity = cap2 > _limit ? cap2 : _limit;
- _buf = _bufferManager.reallocate(_buf, newCapacity);
- _capacity = _buf.capacity();
+ _limit += size;
+ if (_limit > _capacity)
+ {
+ final int cap2 = _capacity << 1;
+ int newCapacity = cap2 > _limit ? cap2 : _limit;
+ _buf = _bufferManager.reallocate(_buf, newCapacity);
+ _capacity = _buf.capacity();
+ }
}
}