public class TFastFramedTransport extends TLayeredTransport
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?
|
| 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()
Only clears the read buffer!
|
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.
|
checkReadBytesAvailable, getConfiguration, getInnerTransport, updateKnownMessageSizepublic static final int DEFAULT_BUF_CAPACITY
public TFastFramedTransport(TTransport underlying) throws TTransportException
TFastFramedTransport. Use the defaults
for initial buffer size and max frame length.underlying - Transport that real reads and writes will go through to.TTransportExceptionpublic TFastFramedTransport(TTransport underlying, int initialBufferCapacity) throws TTransportException
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.TTransportExceptionpublic TFastFramedTransport(TTransport underlying, int initialBufferCapacity, int maxLength) throws TTransportException
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.TTransportExceptionpublic 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 TTransportlen - the number of bytes to consume from the underlying buffer.public void clear()
throws TTransportException
TTransportExceptionpublic 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