Interface Http2RemoteFlowController

All Superinterfaces:
Http2FlowController
All Known Implementing Classes:
DefaultHttp2RemoteFlowController

@UnstableApi public interface Http2RemoteFlowController extends Http2FlowController
A Http2FlowController for controlling the flow of outbound DATA frames to the remote endpoint.
  • Method Details

    • channelHandlerContext

      ChannelHandlerContext channelHandlerContext()
      Get the ChannelHandlerContext for which to apply flow control on.

      This is intended for us by Http2RemoteFlowController.FlowControlled implementations only. Use with caution.

      Returns:
      The ChannelHandlerContext for which to apply flow control on.
    • addFlowControlled

      void addFlowControlled(Http2Stream stream, Http2RemoteFlowController.FlowControlled payload)
      Queues a payload for transmission to the remote endpoint. There is no guarantee as to when the data will be written or how it will be assigned to frames. before sending.

      Writes do not actually occur until writePendingBytes() is called.

      Parameters:
      stream - the subject stream. Must not be the connection stream object.
      payload - payload to write subject to flow-control accounting and ordering rules.
    • hasFlowControlled

      boolean hasFlowControlled(Http2Stream stream)
      Determine if stream has any Http2RemoteFlowController.FlowControlled frames currently queued.
      Parameters:
      stream - the stream to check if it has flow controlled frames.
      Returns:
      true if stream has any Http2RemoteFlowController.FlowControlled frames currently queued.
    • writePendingBytes

      void writePendingBytes() throws Http2Exception
      Write all data pending in the flow controller up to the flow-control limits.
      Throws:
      Http2Exception - throws if a protocol-related error occurred.
    • listener

      void listener(Http2RemoteFlowController.Listener listener)
      Set the active listener on the flow-controller.
      Parameters:
      listener - to notify when the a write occurs, can be null.
    • isWritable

      boolean isWritable(Http2Stream stream)
      Determine if the stream has bytes remaining for use in the flow control window.

      Note that this method respects channel writability. The channel must be writable for this method to return true.

      Parameters:
      stream - The stream to test.
      Returns:
      true if the stream has bytes remaining for use in the flow control window and the channel is writable, false otherwise.
    • channelWritabilityChanged

      void channelWritabilityChanged() throws Http2Exception
      Notification that the writability of channelHandlerContext() has changed.
      Throws:
      Http2Exception - If any writes occur as a result of this call and encounter errors.
    • updateDependencyTree

      void updateDependencyTree(int childStreamId, int parentStreamId, short weight, boolean exclusive)
      Explicitly update the dependency tree. This method is called independently of stream state changes.
      Parameters:
      childStreamId - The stream identifier associated with the child stream.
      parentStreamId - The stream identifier associated with the parent stream. May be 0, to make childStreamId and immediate child of the connection.
      weight - The weight which is used relative to other child streams for parentStreamId. This value must be between 1 and 256 (inclusive).
      exclusive - If childStreamId should be the exclusive dependency of parentStreamId.