org.apache.thrift.transport
Class TFastFramedTransport

java.lang.Object
  extended by org.apache.thrift.transport.TTransport
      extended by org.apache.thrift.transport.TFastFramedTransport

public class TFastFramedTransport
extends TTransport

This transport is wire compatible with 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.


Nested Class Summary
static class TFastFramedTransport.Factory
           
 
Field Summary
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 Integer.MAX_VALUE.
 
Constructor Summary
TFastFramedTransport(TTransport underlying)
          Create a new TFastFramedTransport.
TFastFramedTransport(TTransport underlying, int initialBufferCapacity)
          Create a new TFastFramedTransport.
TFastFramedTransport(TTransport underlying, int initialBufferCapacity, int maxLength)
           
 
Method Summary
 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 att offset off.
 void write(byte[] buf, int off, int len)
          Writes up to len bytes from the buffer.
 
Methods inherited from class org.apache.thrift.transport.TTransport
peek, readAll, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_BUF_CAPACITY

public static final int DEFAULT_BUF_CAPACITY
How big should the default read and write buffers be?

See Also:
Constant Field Values

DEFAULT_MAX_LENGTH

public static final int DEFAULT_MAX_LENGTH
How big is the largest allowable frame? Defaults to Integer.MAX_VALUE.

See Also:
Constant Field Values
Constructor Detail

TFastFramedTransport

public TFastFramedTransport(TTransport underlying)
Create a new TFastFramedTransport. Use the defaults for initial buffer size and max frame length.

Parameters:
underlying - Transport that real reads and writes will go through to.

TFastFramedTransport

public TFastFramedTransport(TTransport underlying,
                            int initialBufferCapacity)
Create a new TFastFramedTransport. Use the specified initial buffer capacity and the default max frame length.

Parameters:
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.

TFastFramedTransport

public TFastFramedTransport(TTransport underlying,
                            int initialBufferCapacity,
                            int maxLength)
Parameters:
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.
Method Detail

close

public void close()
Description copied from class: TTransport
Closes the transport.

Specified by:
close in class TTransport

isOpen

public boolean isOpen()
Description copied from class: TTransport
Queries whether the transport is open.

Specified by:
isOpen in class TTransport
Returns:
True if the transport is open.

open

public void open()
          throws TTransportException
Description copied from class: TTransport
Opens the transport for reading/writing.

Specified by:
open in class TTransport
Throws:
TTransportException - if the transport could not be opened

read

public int read(byte[] buf,
                int off,
                int len)
         throws TTransportException
Description copied from class: TTransport
Reads up to len bytes into buffer buf, starting att offset off.

Specified by:
read in class TTransport
Parameters:
buf - Array to read into
off - Index to start reading at
len - Maximum number of bytes to read
Returns:
The number of bytes actually read
Throws:
TTransportException - if there was an error reading data

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws TTransportException
Description copied from class: TTransport
Writes up to len bytes from the buffer.

Specified by:
write in class TTransport
Parameters:
buf - The output data buffer
off - The offset to start writing from
len - The number of bytes to write
Throws:
TTransportException - if there was an error writing data

consumeBuffer

public void consumeBuffer(int len)
Description copied from class: TTransport
Consume len bytes from the underlying buffer.

Overrides:
consumeBuffer in class TTransport

flush

public void flush()
           throws TTransportException
Description copied from class: TTransport
Flush any pending data out of a transport buffer.

Overrides:
flush in class TTransport
Throws:
TTransportException - if there was an error writing out data.

getBuffer

public byte[] getBuffer()
Description copied from class: TTransport
Access the protocol's underlying buffer directly. If this is not a buffered transport, return null.

Overrides:
getBuffer in class TTransport
Returns:

getBufferPosition

public int getBufferPosition()
Description copied from class: TTransport
Return the index within the underlying buffer that specifies the next spot that should be read from.

Overrides:
getBufferPosition in class TTransport
Returns:

getBytesRemainingInBuffer

public int getBytesRemainingInBuffer()
Description copied from class: TTransport
Get the number of bytes remaining in the underlying buffer. Returns -1 if this is a non-buffered transport.

Overrides:
getBytesRemainingInBuffer in class TTransport
Returns: