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

    • Field Detail

      • gracefulShutdownTimeoutMillis

        private long gracefulShutdownTimeoutMillis
      • decoupleCloseAndGoAway

        private boolean decoupleCloseAndGoAway
      • isServer

        private java.lang.Boolean isServer
      • maxReservedStreams

        private java.lang.Integer maxReservedStreams
      • validateHeaders

        private java.lang.Boolean validateHeaders
      • encoderEnforceMaxConcurrentStreams

        private java.lang.Boolean encoderEnforceMaxConcurrentStreams
      • encoderIgnoreMaxHeaderListSize

        private java.lang.Boolean encoderIgnoreMaxHeaderListSize
      • autoAckSettingsFrame

        private boolean autoAckSettingsFrame
      • autoAckPingFrame

        private boolean autoAckPingFrame
      • maxQueuedControlFrames

        private int maxQueuedControlFrames
      • maxConsecutiveEmptyFrames

        private int maxConsecutiveEmptyFrames
    • 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 ChannelOutboundInvoker.close() should be coupled with goaway and graceful close.
        Parameters:
        decoupleCloseAndGoAway - true to make ChannelOutboundInvoker.close() directly close the underlying transport, and not attempt graceful closure via GOAWAY.
        Returns:
        this.
      • decoupleCloseAndGoAway

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

        private T buildFromConnection​(Http2Connection connection)
      • self

        protected final B self()
        Returns this.
      • enforceNonCodecConstraints

        private void enforceNonCodecConstraints​(java.lang.String rejected)
      • enforceConstraint

        private static void enforceConstraint​(java.lang.String methodName,
                                              java.lang.String rejectorName,
                                              java.lang.Object value)