From 9a93fe07ffd591222e22a7e35cb42549b3d4fe5e Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Mon, 14 Jul 2014 22:39:46 +0200 Subject: [PATCH] THRIFT-2612 Java TCompactProtocol.readBinary zero copying Client: Java Patch: Jon Hoffman --- .../src/org/apache/thrift/protocol/TCompactProtocol.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java b/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java index 75300b84..0a653a1b 100644 --- a/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +++ b/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java @@ -698,6 +698,12 @@ public class TCompactProtocol extends TProtocol { checkStringReadLength(length); if (length == 0) return ByteBuffer.wrap(new byte[0]); + if (trans_.getBytesRemainingInBuffer() >= length) { + ByteBuffer bb = ByteBuffer.wrap(trans_.getBuffer(), trans_.getBufferPosition(), length); + trans_.consumeBuffer(length); + return bb; + } + byte[] buf = new byte[length]; trans_.readAll(buf, 0, length); return ByteBuffer.wrap(buf); -- 2.17.1