summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-03-27 11:54:03 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-03-27 11:54:03 +0200
commited5cf1060888038078b7c015acc9684b0f752cea (patch)
treeb79a945d5f78c18fd04695b0e4b508706f4cbfdb /container-search
parent45298453ec4c78b68a2c42782655451f72aa560d (diff)
Provide initial buffer instead of initial size.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/BasicPacket.java17
-rw-r--r--container-search/src/main/java/com/yahoo/fs4/mplex/FS4Connection.java2
-rw-r--r--container-search/src/test/java/com/yahoo/fs4/test/QueryTestCase.java1
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