public class TFastFramedTransport extends TTransport
TFramedTransport, but makes
use of reusable, expanding read and write buffers in order to avoid
allocating new byte[]s all the time. Since the buffers only expand, you
should probably only use this transport if your messages are not too variably
large, unless the persistent memory cost is not an issue.
This implementation is NOT threadsafe.| Modifier and Type | Class and Description |
|---|---|
static class |
TFastFramedTransport.Factory |
| Modifier and Type | Field and Description |
|---|---|
static int |
DEFAULT_BUF_CAPACITY
How big should the default read and write buffers be?
|
static int |
DEFAULT_MAX_LENGTH
How big is the largest allowable frame? Defaults to 16MB.
|
| Constructor and Description |
|---|
TFastFramedTransport(TTransport underlying)
Create a new
TFastFramedTransport. |
TFastFramedTransport(TTransport underlying,
int initialBufferCapacity)
Create a new
TFastFramedTransport. |
TFastFramedTransport(TTransport underlying,
int initialBufferCapacity,
int maxLength) |
| Modifier and Type | Method and Description |
|---|---|
void |
clear() |
void |
close()
Closes the transport.
|
void |
consumeBuffer(int len)
Consume len bytes from the underlying buffer.
|
void |
flush()
Flush any pending data out of a transport buffer.
|
byte[] |
getBuffer()
Access the protocol's underlying buffer directly.
|
int |
getBufferPosition()
Return the index within the underlying buffer that specifies the next spot
that should be read from.
|
int |
getBytesRemainingInBuffer()
Get the number of bytes remaining in the underlying buffer.
|
boolean |
isOpen()
Queries whether the transport is open.
|
void |
open()
Opens the transport for reading/writing.
|
int |
read(byte[] buf,
int off,
int len)
Reads up to len bytes into buffer buf, starting at offset off.
|
void |
write(byte[] buf,
int off,
int len)
Writes up to len bytes from the buffer.
|
peek, readAll, writepublic static final int DEFAULT_BUF_CAPACITY
public static final int DEFAULT_MAX_LENGTH
public TFastFramedTransport(TTransport underlying)
TFastFramedTransport. Use the defaults
for initial buffer size and max frame length.underlying - Transport that real reads and writes will go through to.public TFastFramedTransport(TTransport underlying, int initialBufferCapacity)
TFastFramedTransport. Use the specified
initial buffer capacity and the default max frame length.underlying - Transport that real reads and writes will go through to.initialBufferCapacity - The initial size of the read and write buffers.
In practice, it's not critical to set this unless you know in advance that
your messages are going to be very large.public TFastFramedTransport(TTransport underlying, int initialBufferCapacity, int maxLength)
underlying - Transport that real reads and writes will go through to.initialBufferCapacity - The initial size of the read and write buffers.
In practice, it's not critical to set this unless you know in advance that
your messages are going to be very large. (You can pass
TFramedTransportWithReusableBuffer.DEFAULT_BUF_CAPACITY if you're only
using this constructor because you want to set the maxLength.)maxLength - The max frame size you are willing to read. You can use
this parameter to limit how much memory can be allocated.public void close()
TTransportclose in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in class TTransportpublic boolean isOpen()
TTransportisOpen in class TTransportpublic void open()
throws TTransportException
TTransportopen in class TTransportTTransportException - if the transport could not be openedpublic int read(byte[] buf,
int off,
int len)
throws TTransportException
TTransportread in class TTransportbuf - Array to read intooff - Index to start reading atlen - Maximum number of bytes to readTTransportException - if there was an error reading datapublic void write(byte[] buf,
int off,
int len)
throws TTransportException
TTransportwrite in class TTransportbuf - The output data bufferoff - The offset to start writing fromlen - The number of bytes to writeTTransportException - if there was an error writing datapublic void consumeBuffer(int len)
TTransportconsumeBuffer in class TTransportpublic void clear()
public void flush()
throws TTransportException
TTransportflush in class TTransportTTransportException - if there was an error writing out data.public byte[] getBuffer()
TTransportgetBuffer in class TTransportpublic int getBufferPosition()
TTransportgetBufferPosition in class TTransportpublic int getBytesRemainingInBuffer()
TTransportgetBytesRemainingInBuffer in class TTransport