summaryrefslogtreecommitdiff
path: root/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
diff options
context:
space:
mode:
Diffstat (limited to 'lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java')
-rw-r--r--lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java b/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
index fc46f7c6f..e8444fefb 100644
--- a/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
+++ b/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java
@@ -23,6 +23,7 @@ import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import org.apache.thrift.TException;
+import org.apache.thrift.partial.TFieldData;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;
@@ -486,4 +487,53 @@ public class TBinaryProtocol extends TProtocol {
default: throw new TTransportException(TTransportException.UNKNOWN, "unrecognized type code");
}
}
+ // -----------------------------------------------------------------
+ // Additional methods to improve performance.
+
+ @Override
+ public int readFieldBeginData() throws TException {
+ byte type = this.readByte();
+ if (type == TType.STOP) {
+ return TFieldData.encode(type);
+ }
+
+ short id = this.readI16();
+ return TFieldData.encode(type, id);
+ }
+
+ @Override
+ protected void skipBool() throws TException {
+ this.skipBytes(1);
+ }
+
+ @Override
+ protected void skipByte() throws TException {
+ this.skipBytes(1);
+ }
+
+ @Override
+ protected void skipI16() throws TException {
+ this.skipBytes(2);
+ }
+
+ @Override
+ protected void skipI32() throws TException {
+ this.skipBytes(4);
+ }
+
+ @Override
+ protected void skipI64() throws TException {
+ this.skipBytes(8);
+ }
+
+ @Override
+ protected void skipDouble() throws TException {
+ this.skipBytes(8);
+ }
+
+ @Override
+ protected void skipBinary() throws TException {
+ int size = readI32();
+ this.skipBytes(size);
+ }
}