[
https://issues.apache.org/jira/browse/THRIFT-3432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15043607#comment-15043607
]
ASF GitHub Bot commented on THRIFT-3432:
----------------------------------------
Github user nsuke commented on a diff in the pull request:
https://github.com/apache/thrift/pull/705#discussion_r46765197
--- Diff: lib/java/src/org/apache/thrift/transport/TByteBuffer.java ---
@@ -0,0 +1,88 @@
+package org.apache.thrift.transport;
+
+import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
+import java.nio.ByteBuffer;
+
+/**
+ * ByteBuffer-backed implementation of TTransport.
+ */
+public class TByteBuffer extends TTransport {
+ private ByteBuffer byteBuffer;
+
+ /**
+ * Creates a new TByteBuffer wrapping a given NIO ByteBuffer.
+ */
+ public TByteBuffer(ByteBuffer byteBuffer) {
+ this.byteBuffer = byteBuffer;
+ }
+
+ /**
+ * Resets the underlying NIO ByteBuffer.
+ */
+ public void reset(ByteBuffer byteBuffer) {
+ this.byteBuffer = byteBuffer;
+ }
+
+ @Override
+ public boolean isOpen() {
+ return byteBuffer != null;
+ }
+
+ @Override
+ public void open() {
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public int read(byte[] buf, int off, int len) throws TTransportException
{
+ final int n = Math.min(byteBuffer.remaining(), len);
+ if (n > 0) {
+ try {
+ byteBuffer.get(buf, off, len);
+ }
+ catch (BufferUnderflowException e) {
--- End diff --
Would you fix style of `catch`s like this ?
} catch {
> Add a TByteBuffer transport to the Java library
> -----------------------------------------------
>
> Key: THRIFT-3432
> URL: https://issues.apache.org/jira/browse/THRIFT-3432
> Project: Thrift
> Issue Type: Improvement
> Components: Java - Library
> Affects Versions: 0.9.3
> Reporter: Tom Lee
> Priority: Minor
>
> A bounded alternative to TMemoryBuffer that uses java.nio.ByteBuffer under
> the hood.
> This is useful both to set sane constraints on maximum message size in a
> transport-agnostic manner but also because direct buffers can be used to
> serialize Thrift off-heap, avoiding allocations (thus reducing GC frequency
> and potentially live set size)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)