diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-03-27 11:54:03 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-03-27 11:54:03 +0200 |
commit | ed5cf1060888038078b7c015acc9684b0f752cea (patch) | |
tree | b79a945d5f78c18fd04695b0e4b508706f4cbfdb /container-search | |
parent | 45298453ec4c78b68a2c42782655451f72aa560d (diff) |
Provide initial buffer instead of initial size.
Diffstat (limited to 'container-search')
3 files changed, 6 insertions, 14 deletions
diff --git a/container-search/src/main/java/com/yahoo/fs4/BasicPacket.java b/container-search/src/main/java/com/yahoo/fs4/BasicPacket.java index ceb3ca31527..7b2d3742fbf 100644 --- a/container-search/src/main/java/com/yahoo/fs4/BasicPacket.java +++ b/container-search/src/main/java/com/yahoo/fs4/BasicPacket.java @@ -220,13 +220,7 @@ public abstract class BasicPacket { * * If this packet does not use a channel ID, the ID will be ignored. */ - public final ByteBuffer allocateAndEncode(int channelId) { - return allocateAndEncode(channelId, DEFAULT_WRITE_BUFFER_SIZE); - } - - private ByteBuffer allocateAndEncode(int channelId, int initialSize) { - int size = initialSize; - ByteBuffer buffer = ByteBuffer.allocate(size); + private ByteBuffer allocateAndEncode(int channelId, ByteBuffer buffer) { while (true) { try { if (hasChannelId()) { @@ -238,8 +232,7 @@ public abstract class BasicPacket { break; } catch (BufferTooSmallException e) { - size *= 2; - buffer = ByteBuffer.allocate(size); + buffer = ByteBuffer.allocate(buffer.capacity()); } } return buffer; @@ -250,11 +243,11 @@ public abstract class BasicPacket { * remove internal reference to it. */ public final ByteBuffer grantEncodingBuffer(int channelId) { - return allocateAndEncode(channelId); + return allocateAndEncode(channelId, ByteBuffer.allocate(DEFAULT_WRITE_BUFFER_SIZE)); } - public final ByteBuffer grantEncodingBuffer(int channelId, int initialSize) { - return allocateAndEncode(channelId, initialSize); + public final ByteBuffer grantEncodingBuffer(int channelId, ByteBuffer buffer) { + return allocateAndEncode(channelId, buffer); } /** Returns the code of this package */ diff --git a/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Connection.java b/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Connection.java index 69267f4a6b2..599fe0a7cf9 100644 --- a/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Connection.java +++ b/container-search/src/main/java/com/yahoo/fs4/mplex/FS4Connection.java @@ -69,7 +69,7 @@ public class FS4Connection implements Connection * Packet sending interface. */ public void sendPacket (BasicPacket packet, Integer channelId) throws IOException { - ByteBuffer buffer = packet.grantEncodingBuffer(channelId.intValue(), maxInitialSize); + ByteBuffer buffer = packet.grantEncodingBuffer(channelId.intValue(), ByteBuffer.allocate(maxInitialSize)); ByteBuffer viewForPacketListener = buffer.slice(); synchronized (this) { if (!(valid && channel.isOpen())) { diff --git a/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java b/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java index fc39c1d8fe0..3444a1b2eba 100644 --- a/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java +++ b/container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java @@ -258,7 +258,6 @@ public class QueryTestCase { assertEqualArrays(correctBuffer,encoded); - packet.allocateAndEncode(0x07070707); buffer = packet.grantEncodingBuffer(0x09090909); correctBuffer = new byte[] {0,0,0,46,0,0,0,-38,9,9,9,9, // Header 0,0,0,6, // Features |