Skip to content

Commit 2caf809

Browse files
committed
Make it possible to set empty buffer to ArrayBufferInput be empty
This change adds support to give null to ArrayBufferInput.reset method. This lets applications control lifecycle of MessageBuffer (such as releasing it to a buffer pool) before calling ArrayBufferInput.close().
1 parent d6fde0f commit 2caf809

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

msgpack-core/src/main/java/org/msgpack/core/buffer/ArrayBufferInput.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,25 @@ public ArrayBufferInput(byte[] arr)
4040

4141
public ArrayBufferInput(byte[] arr, int offset, int length)
4242
{
43-
this(MessageBuffer.wrap(checkNotNull(arr, "input array is null")).slice(offset, length));
43+
this(MessageBuffer.wrap(checkNotNull(arr, "input array is null"), offset, length));
4444
}
4545

4646
/**
47-
* Reset buffer. This method doesn't close the old resource.
47+
* Reset buffer. This method returns the old buffer.
4848
*
49-
* @param buf new buffer
50-
* @return the old resource
49+
* @param buf new buffer. This can be null to make this input empty.
50+
* @return the old buffer.
5151
*/
5252
public MessageBuffer reset(MessageBuffer buf)
5353
{
5454
MessageBuffer old = this.buffer;
5555
this.buffer = buf;
56-
this.isRead = false;
56+
if (buf == null) {
57+
this.isRead = true;
58+
}
59+
else {
60+
this.isRead = false;
61+
}
5762
return old;
5863
}
5964

@@ -64,7 +69,7 @@ public void reset(byte[] arr)
6469

6570
public void reset(byte[] arr, int offset, int len)
6671
{
67-
reset(MessageBuffer.wrap(checkNotNull(arr, "input array is null")).slice(offset, len));
72+
reset(MessageBuffer.wrap(checkNotNull(arr, "input array is null"), offset, len));
6873
}
6974

7075
@Override
@@ -83,6 +88,6 @@ public void close()
8388
throws IOException
8489
{
8590
buffer = null;
86-
isRead = false;
91+
isRead = true;
8792
}
8893
}

0 commit comments

Comments
 (0)