Interface Http2FlowController

All Known Subinterfaces:
Http2LocalFlowController, Http2RemoteFlowController
All Known Implementing Classes:
DefaultHttp2LocalFlowController, DefaultHttp2RemoteFlowController, DelegatingDecompressorFrameListener.ConsumedBytesConverter

@UnstableApi public interface Http2FlowController
Base interface for all HTTP/2 flow controllers.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Set the ChannelHandlerContext for which to apply flow control on.
    void
    incrementWindowSize(Http2Stream stream, int delta)
    Increments the size of the stream's flow control window by the given delta.
    int
    Gets the connection-wide initial flow control window size that is used as the basis for new stream flow control windows.
    void
    initialWindowSize(int newWindowSize)
    Sets the connection-wide initial flow control window and updates all stream windows (but not the connection stream window) by the delta.
    int
    Get the portion of the flow control window for the given stream that is currently available for sending/receiving frames which are subject to flow control.
  • Method Details

    • channelHandlerContext

      void channelHandlerContext(ChannelHandlerContext ctx) throws Http2Exception
      Set the ChannelHandlerContext for which to apply flow control on.

      This must be called to properly initialize the Http2FlowController. Not calling this is considered a programming error.

      Parameters:
      ctx - The ChannelHandlerContext for which to apply flow control on.
      Throws:
      Http2Exception - if any protocol-related error occurred.
    • initialWindowSize

      void initialWindowSize(int newWindowSize) throws Http2Exception
      Sets the connection-wide initial flow control window and updates all stream windows (but not the connection stream window) by the delta.

      Represents the value for SETTINGS_INITIAL_WINDOW_SIZE. This method should only be called by Netty (not users) as a result of a receiving a SETTINGS frame.

      Parameters:
      newWindowSize - the new initial window size.
      Throws:
      Http2Exception - thrown if any protocol-related error occurred.
    • initialWindowSize

      int initialWindowSize()
      Gets the connection-wide initial flow control window size that is used as the basis for new stream flow control windows.

      Represents the value for SETTINGS_INITIAL_WINDOW_SIZE. The initial value returned by this method must be Http2CodecUtil.DEFAULT_WINDOW_SIZE.

    • windowSize

      int windowSize(Http2Stream stream)
      Get the portion of the flow control window for the given stream that is currently available for sending/receiving frames which are subject to flow control. This quantity is measured in number of bytes.
    • incrementWindowSize

      void incrementWindowSize(Http2Stream stream, int delta) throws Http2Exception
      Increments the size of the stream's flow control window by the given delta.

      In the case of a Http2RemoteFlowController this is called upon receipt of a WINDOW_UPDATE frame from the remote endpoint to mirror the changes to the window size.

      For a Http2LocalFlowController this can be called to request the expansion of the window size published by this endpoint. It is up to the implementation, however, as to when a WINDOW_UPDATE is actually sent.

      Parameters:
      stream - The subject stream. Use Http2Connection.connectionStream() for requesting the size of the connection window.
      delta - the change in size of the flow control window.
      Throws:
      Http2Exception - thrown if a protocol-related error occurred.