From: Jens Geyer Date: Mon, 14 Jul 2014 20:39:46 +0000 (+0200) Subject: THRIFT-2612 Java TCompactProtocol.readBinary zero copying X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=9a93fe07ffd591222e22a7e35cb42549b3d4fe5e;p=common%2Fthrift.git THRIFT-2612 Java TCompactProtocol.readBinary zero copying Client: Java Patch: Jon Hoffman --- 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);