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);