Class AbstractHttp2ConnectionHandlerBuilder<T extends Http2ConnectionHandler,​B extends AbstractHttp2ConnectionHandlerBuilder<T,​B>>

    • Constructor Detail

      • AbstractHttp2ConnectionHandlerBuilder

        public AbstractHttp2ConnectionHandlerBuilder()
    • Method Detail

      • initialSettings

        protected Http2Settings initialSettings()
        Sets the Http2Settings to use for the initial connection settings exchange.
      • initialSettings

        protected B initialSettings​(Http2Settings settings)
        Sets the Http2Settings to use for the initial connection settings exchange.
      • frameListener

        protected B frameListener​(Http2FrameListener frameListener)
        Sets the listener of inbound frames. This listener will only be set if the decoder's listener is null.
      • gracefulShutdownTimeoutMillis

        protected long gracefulShutdownTimeoutMillis()
        Returns the graceful shutdown timeout of the Http2Connection in milliseconds. Returns -1 if the timeout is indefinite.
      • gracefulShutdownTimeoutMillis

        protected B gracefulShutdownTimeoutMillis​(long gracefulShutdownTimeoutMillis)
        Sets the graceful shutdown timeout of the Http2Connection in milliseconds.
      • isServer

        protected boolean isServer()
        Returns if build() will to create a Http2Connection in server mode (true) or client mode (false).
      • server

        protected B server​(boolean isServer)
        Sets if build() will to create a Http2Connection in server mode (true) or client mode (false).
      • maxReservedStreams

        protected int maxReservedStreams()
        Get the maximum number of streams which can be in the reserved state at any given time.

        By default this value will be ignored on the server for local endpoint. This is because the RFC provides no way to explicitly communicate a limit to how many states can be in the reserved state, and instead relies on the peer to send RST_STREAM frames when they will be rejected.

      • maxReservedStreams

        protected B maxReservedStreams​(int maxReservedStreams)
        Set the maximum number of streams which can be in the reserved state at any given time.
      • isValidateHeaders

        protected boolean isValidateHeaders()
        Returns if HTTP headers should be validated according to RFC 7540, 8.1.2.6.
      • validateHeaders

        protected B validateHeaders​(boolean validateHeaders)
        Sets if HTTP headers should be validated according to RFC 7540, 8.1.2.6.
      • frameLogger

        protected Http2FrameLogger frameLogger()
        Returns the logger that is used for the encoder and decoder.
        Returns:
        Http2FrameLogger if set, or null if not set.
      • frameLogger

        protected B frameLogger​(Http2FrameLogger frameLogger)
        Sets the logger that is used for the encoder and decoder.
      • encoderEnforceMaxConcurrentStreams

        protected boolean encoderEnforceMaxConcurrentStreams()
        Returns if the encoder should queue frames if the maximum number of concurrent streams would otherwise be exceeded.
      • encoderEnforceMaxConcurrentStreams

        protected B encoderEnforceMaxConcurrentStreams​(boolean encoderEnforceMaxConcurrentStreams)
        Sets if the encoder should queue frames if the maximum number of concurrent streams would otherwise be exceeded.
      • encoderEnforceMaxQueuedControlFrames

        protected int encoderEnforceMaxQueuedControlFrames()
        Returns the maximum number of queued control frames that are allowed before the connection is closed. This allows to protected against various attacks that can lead to high CPU / memory usage if the remote-peer floods us with frames that would have us produce control frames, but stops to read from the underlying socket. 0 means no protection is in place.
      • encoderEnforceMaxQueuedControlFrames

        protected B encoderEnforceMaxQueuedControlFrames​(int maxQueuedControlFrames)
        Sets the maximum number of queued control frames that are allowed before the connection is closed. This allows to protected against various attacks that can lead to high CPU / memory usage if the remote-peer floods us with frames that would have us produce control frames, but stops to read from the underlying socket. 0 means no protection should be applied.
      • encoderIgnoreMaxHeaderListSize

        protected B encoderIgnoreMaxHeaderListSize​(boolean ignoreMaxHeaderListSize)
        Sets if the SETTINGS_MAX_HEADER_LIST_SIZE should be ignored when encoding headers.
        Parameters:
        ignoreMaxHeaderListSize - true to ignore SETTINGS_MAX_HEADER_LIST_SIZE.
        Returns:
        this.
      • initialHuffmanDecodeCapacity

        @Deprecated
        protected B initialHuffmanDecodeCapacity​(int initialHuffmanDecodeCapacity)
        Deprecated.
        Huffman decoding no longer depends on having a decode capacity.
        Does nothing, do not call.
      • decoderEnforceMaxConsecutiveEmptyDataFrames

        protected int decoderEnforceMaxConsecutiveEmptyDataFrames()
        Returns the maximum number of consecutive empty DATA frames (without end_of_stream flag) that are allowed before the connection is closed. This allows to protected against the remote peer flooding us with such frames and so use up a lot of CPU. There is no valid use-case for empty DATA frames without end_of_stream flag. 0 means no protection is in place.
      • decoderEnforceMaxConsecutiveEmptyDataFrames

        protected B decoderEnforceMaxConsecutiveEmptyDataFrames​(int maxConsecutiveEmptyFrames)
        Sets the maximum number of consecutive empty DATA frames (without end_of_stream flag) that are allowed before the connection is closed. This allows to protected against the remote peer flooding us with such frames and so use up a lot of CPU. There is no valid use-case for empty DATA frames without end_of_stream flag. 0 means no protection should be applied.
      • autoAckSettingsFrame

        protected B autoAckSettingsFrame​(boolean autoAckSettings)
        Determine if settings frame should automatically be acknowledged and applied.
        Returns:
        this.
      • isAutoAckSettingsFrame

        protected boolean isAutoAckSettingsFrame()
        Determine if the SETTINGS frames should be automatically acknowledged and applied.
        Returns:
        true if the SETTINGS frames should be automatically acknowledged and applied.
      • autoAckPingFrame

        protected B autoAckPingFrame​(boolean autoAckPingFrame)
        Determine if PING frame should automatically be acknowledged or not.
        Returns:
        this.
      • isAutoAckPingFrame

        protected boolean isAutoAckPingFrame()
        Determine if the PING frames should be automatically acknowledged or not.
        Returns:
        true if the PING frames should be automatically acknowledged.
      • decoupleCloseAndGoAway

        protected B decoupleCloseAndGoAway​(boolean decoupleCloseAndGoAway)
        Determine if the Channel.close() should be coupled with goaway and graceful close.
        Parameters:
        decoupleCloseAndGoAway - true to make Channel.close() directly close the underlying transport, and not attempt graceful closure via GOAWAY.
        Returns:
        this.
      • decoupleCloseAndGoAway

        protected boolean decoupleCloseAndGoAway()
        Determine if the Channel.close() should be coupled with goaway and graceful close.
      • flushPreface

        protected B flushPreface​(boolean flushPreface)
        Determine if the Preface should be automatically flushed when the Channel becomes active or not.

        Client may choose to opt-out from this automatic behavior and manage flush manually if it's ready to send request frames immediately after the preface. It may help to avoid unnecessary latency.

        Parameters:
        flushPreface - true to automatically flush, false otherwise.
        Returns:
        this.
        See Also:
        HTTP/2 Connection Preface
      • flushPreface

        protected boolean flushPreface()
        Determine if the Preface should be automatically flushed when the Channel becomes active or not.

        Client may choose to opt-out from this automatic behavior and manage flush manually if it's ready to send request frames immediately after the preface. It may help to avoid unnecessary latency.

        Returns:
        true if automatically flushed.
        See Also:
        HTTP/2 Connection Preface
      • self

        protected final B self()
        Returns this.