Interface Http2RemoteFlowController.FlowControlled

All Known Implementing Classes:
DefaultHttp2ConnectionEncoder.FlowControlledBase, DefaultHttp2ConnectionEncoder.FlowControlledData, DefaultHttp2ConnectionEncoder.FlowControlledHeaders
Enclosing interface:
Http2RemoteFlowController

public static interface Http2RemoteFlowController.FlowControlled
Implementations of this interface are used to progressively write chunks of the underlying payload to the stream. A payload is considered to be fully written if write(io.netty.channel.ChannelHandlerContext, int) has been called at least once and it's size() is now zero.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Called to indicate that an error occurred before this object could be completely written.
    boolean
    Merge the contents of the next message into this message so they can be written out as one unit.
    int
    The size of the payload in terms of bytes applied to the flow-control window.
    void
    write(ChannelHandlerContext ctx, int allowedBytes)
    Writes up to allowedBytes of the encapsulated payload to the stream.
    void
    Called after this object has been successfully written.
  • Method Details

    • size

      int size()
      The size of the payload in terms of bytes applied to the flow-control window. Some payloads like HEADER frames have no cost against flow control and would return 0 for this value even though they produce a non-zero number of bytes on the wire. Other frames like DATA frames have both their payload and padding count against flow-control.
    • error

      void error(ChannelHandlerContext ctx, Throwable cause)
      Called to indicate that an error occurred before this object could be completely written.

      The Http2RemoteFlowController will make exactly one call to either this method or writeComplete().

      Parameters:
      ctx - The context to use if any communication needs to occur as a result of the error. This may be null if an exception occurs when the connection has not been established yet.
      cause - of the error.
    • writeComplete

      void writeComplete()
      Called after this object has been successfully written.

      The Http2RemoteFlowController will make exactly one call to either this method or error(ChannelHandlerContext, Throwable).

    • write

      void write(ChannelHandlerContext ctx, int allowedBytes)
      Writes up to allowedBytes of the encapsulated payload to the stream. Note that a value of 0 may be passed which will allow payloads with flow-control size == 0 to be written. The flow-controller may call this method multiple times with different values until the payload is fully written, i.e it's size after the write is 0.

      When an exception is thrown the Http2RemoteFlowController will make a call to error(ChannelHandlerContext, Throwable).

      Parameters:
      ctx - The context to use for writing.
      allowedBytes - an upper bound on the number of bytes the payload can write at this time.
    • merge

      Merge the contents of the next message into this message so they can be written out as one unit. This allows many small messages to be written as a single DATA frame.
      Returns:
      true if next was successfully merged and does not need to be enqueued, false otherwise.