org.apache.thrift.transport

## Class TFastFramedTransport

- java.lang.Object
- - org.apache.thrift.transport.TTransport
  - - 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

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `TFastFramedTransport.Factory`

  - ### Field Summary

    Fields
    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 Integer.MAX_VALUE.

  - ### Constructor Summary

    Constructors
    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)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.

    - ### 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 at 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: