Class DelegatingDecompressorFrameListener.ConsumedBytesConverter

java.lang.Object
io.netty.handler.codec.http2.DelegatingDecompressorFrameListener.ConsumedBytesConverter
All Implemented Interfaces:
Http2FlowController, Http2LocalFlowController
Enclosing class:
DelegatingDecompressorFrameListener

private final class DelegatingDecompressorFrameListener.ConsumedBytesConverter extends Object implements Http2LocalFlowController
A decorator around the local flow controller that converts consumed bytes from uncompressed to compressed.
  • Field Details

  • Constructor Details

  • Method Details

    • frameWriter

      public Http2LocalFlowController frameWriter(Http2FrameWriter frameWriter)
      Description copied from interface: Http2LocalFlowController
      Sets the writer to be use for sending WINDOW_UPDATE frames. This must be called before any flow controlled data is received.
      Specified by:
      frameWriter in interface Http2LocalFlowController
      Parameters:
      frameWriter - the HTTP/2 frame writer.
    • channelHandlerContext

      public void channelHandlerContext(ChannelHandlerContext ctx) throws Http2Exception
      Description copied from interface: Http2FlowController
      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.

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

      public void initialWindowSize(int newWindowSize) throws Http2Exception
      Description copied from interface: Http2FlowController
      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.

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

      public int initialWindowSize()
      Description copied from interface: Http2FlowController
      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.

      Specified by:
      initialWindowSize in interface Http2FlowController
    • windowSize

      public int windowSize(Http2Stream stream)
      Description copied from interface: Http2FlowController
      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.
      Specified by:
      windowSize in interface Http2FlowController
    • incrementWindowSize

      public void incrementWindowSize(Http2Stream stream, int delta) throws Http2Exception
      Description copied from interface: Http2FlowController
      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.

      Specified by:
      incrementWindowSize in interface Http2FlowController
      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.
    • receiveFlowControlledFrame

      public void receiveFlowControlledFrame(Http2Stream stream, ByteBuf data, int padding, boolean endOfStream) throws Http2Exception
      Description copied from interface: Http2LocalFlowController
      Receives an inbound DATA frame from the remote endpoint and applies flow control policies to it for both the stream as well as the connection. If any flow control policies have been violated, an exception is raised immediately, otherwise the frame is considered to have "passed" flow control.

      If stream is null or closed, flow control should only be applied to the connection window and the bytes are immediately consumed.

      Specified by:
      receiveFlowControlledFrame in interface Http2LocalFlowController
      Parameters:
      stream - the subject stream for the received frame. The connection stream object must not be used. If stream is null or closed, flow control should only be applied to the connection window and the bytes are immediately consumed.
      data - payload buffer for the frame.
      padding - additional bytes that should be added to obscure the true content size. Must be between 0 and 256 (inclusive).
      endOfStream - Indicates whether this is the last frame to be sent from the remote endpoint for this stream.
      Throws:
      Http2Exception - if any flow control errors are encountered.
    • consumeBytes

      public boolean consumeBytes(Http2Stream stream, int numBytes) throws Http2Exception
      Description copied from interface: Http2LocalFlowController
      Indicates that the application has consumed a number of bytes for the given stream and is therefore ready to receive more data from the remote endpoint. The application must consume any bytes that it receives or the flow control window will collapse. Consuming bytes enables the flow controller to send WINDOW_UPDATE to restore a portion of the flow control window for the stream.

      If stream is null or closed (i.e. Http2Stream.state() method returns Http2Stream.State.CLOSED), calling this method has no effect.

      Specified by:
      consumeBytes in interface Http2LocalFlowController
      Parameters:
      stream - the stream for which window space should be freed. The connection stream object must not be used. If stream is null or closed (i.e. Http2Stream.state() method returns Http2Stream.State.CLOSED), calling this method has no effect.
      numBytes - the number of bytes to be returned to the flow control window.
      Returns:
      true if a WINDOW_UPDATE was sent, false otherwise.
      Throws:
      Http2Exception - if the number of bytes returned exceeds the Http2LocalFlowController.unconsumedBytes(Http2Stream) for the stream.
    • unconsumedBytes

      public int unconsumedBytes(Http2Stream stream)
      Description copied from interface: Http2LocalFlowController
      The number of bytes for the given stream that have been received but not yet consumed by the application.
      Specified by:
      unconsumedBytes in interface Http2LocalFlowController
      Parameters:
      stream - the stream for which window space should be freed.
      Returns:
      the number of unconsumed bytes for the stream.
    • initialWindowSize

      public int initialWindowSize(Http2Stream stream)
      Description copied from interface: Http2LocalFlowController
      Get the initial flow control window size for the given stream. This quantity is measured in number of bytes. Note the unavailable window portion can be calculated by Http2FlowController.initialWindowSize() - Http2FlowController.windowSize(Http2Stream).
      Specified by:
      initialWindowSize in interface Http2LocalFlowController