You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2014/07/14 22:43:20 UTC

git commit: THRIFT-2612 Java TCompactProtocol.readBinary zero copying Client: Java Patch: Jon Hoffman

Repository: thrift
Updated Branches:
  refs/heads/master 3974aaba6 -> 9a93fe07f


THRIFT-2612 Java TCompactProtocol.readBinary zero copying
Client: Java
Patch: Jon Hoffman


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/9a93fe07
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/9a93fe07
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/9a93fe07

Branch: refs/heads/master
Commit: 9a93fe07ffd591222e22a7e35cb42549b3d4fe5e
Parents: 3974aab
Author: Jens Geyer <je...@apache.org>
Authored: Mon Jul 14 22:39:46 2014 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Mon Jul 14 22:39:46 2014 +0200

----------------------------------------------------------------------
 lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/9a93fe07/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java
----------------------------------------------------------------------
diff --git a/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java b/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java
index 75300b8..0a653a1 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);