org.apache.thrift.server

## Class TNonblockingServer.FrameBuffer

- java.lang.Object
- - org.apache.thrift.server.TNonblockingServer.FrameBuffer

- Enclosing class:
    TNonblockingServer

      protected class TNonblockingServer.FrameBuffer
      extends java.lang.Object

  Class that implements a sort of state machine around the interaction with a client and an invoker. It manages reading the frame size and frame data, getting it handed off as wrapped transports, and then the writing of response data back to the client. In the process it manages flipping the read and write bits on the selection key for its client.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `TNonblockingTransport` | `trans_`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TNonblockingServer.FrameBuffer(TNonblockingTransport trans, java.nio.channels.SelectionKey selectionKey)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `changeSelectInterests()` Give this FrameBuffer a chance to set its interest to write, once data has come in.
    `void` | `close()` Shut the connection down.
    `void` | `invoke()` Actually invoke the method signified by this FrameBuffer.
    `boolean` | `isFrameFullyRead()` Check if this FrameBuffer has a full frame read.
    `boolean` | `read()` Give this FrameBuffer a chance to read.
    `void` | `responseReady()` After the processor has processed the invocation, whatever thread is managing invocations should call this method on this FrameBuffer so we know it's time to start trying to write again.
    `boolean` | `write()` Give this FrameBuffer a chance to write its output to the final client.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### trans_

          public final TNonblockingTransport trans_

  - ### Constructor Detail

    - #### TNonblockingServer.FrameBuffer

          public TNonblockingServer.FrameBuffer(TNonblockingTransport trans,
                                        java.nio.channels.SelectionKey selectionKey)

  - ### Method Detail

    - #### read

          public boolean read()

      Give this FrameBuffer a chance to read. The selector loop should have received a read event for this FrameBuffer.
      Returns:
        true if the connection should live on, false if it should be closed

    - #### write

          public boolean write()

      Give this FrameBuffer a chance to write its output to the final client.

    - #### changeSelectInterests

          public void changeSelectInterests()

      Give this FrameBuffer a chance to set its interest to write, once data has come in.

    - #### close

          public void close()

      Shut the connection down.

    - #### isFrameFullyRead

          public boolean isFrameFullyRead()

      Check if this FrameBuffer has a full frame read.

    - #### responseReady

          public void responseReady()

      After the processor has processed the invocation, whatever thread is managing invocations should call this method on this FrameBuffer so we know it's time to start trying to write again. Also, if it turns out that there actually isn't any data in the response buffer, we'll skip trying to write and instead go back to reading.

    - #### invoke

          public void invoke()

      Actually invoke the method signified by this FrameBuffer.