Class Http2AsyncUpgradeHandler

    • Field Detail

      • log

        protected static final Log log
      • PING

        protected static final byte[] PING
      • PING_ACK

        protected static final byte[] PING_ACK
      • SETTINGS_ACK

        protected static final byte[] SETTINGS_ACK
      • GOAWAY

        protected static final byte[] GOAWAY
      • connectionId

        protected final java.lang.String connectionId
      • localSettings

        protected final org.apache.coyote.http2.ConnectionSettingsLocal localSettings
        Local settings are settings defined by Tomcat and sent to the client that the client must use when communicating with Tomcat.
      • activeRemoteStreamCount

        protected final java.util.concurrent.atomic.AtomicInteger activeRemoteStreamCount
    • Constructor Detail

    • Method Detail

      • getParser

        protected org.apache.coyote.http2.Http2Parser getParser​(java.lang.String connectionId)
      • getPingManager

        protected org.apache.coyote.http2.Http2UpgradeHandler.PingManager getPingManager()
      • hasAsyncIO

        public boolean hasAsyncIO()
      • processConnection

        protected void processConnection​(WebConnection webConnection,
                                         org.apache.coyote.http2.Stream stream)
      • writeSettings

        protected void writeSettings()
        Write the initial settings frame and any necessary supporting frames. If the initial settings increase the initial window size, it will also be necessary to send a WINDOW_UPDATE frame to increase the size of the flow control window for the connection (stream 0).
      • writeGoAwayFrame

        protected void writeGoAwayFrame​(int maxStreamId,
                                        long errorCode,
                                        byte[] debugMsg)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • getHeaderFrameBuffers

        protected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffers getHeaderFrameBuffers​(int initialPayloadSize)
      • settingsEnd

        public void settingsEnd​(boolean ack)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • processSendfile

        protected SendfileState processSendfile​(org.apache.coyote.http2.SendfileData sendfile)
        Process send file (if supported) for the given stream. The appropriate request attributes should be set before calling this method.
        Parameters:
        sendfile - The stream and associated data to process
        Returns:
        The result of the send file processing
      • processStreamOnContainerThread

        protected void processStreamOnContainerThread​(org.apache.coyote.http2.Stream stream)
      • setConnectionTimeoutForStreamCount

        protected void setConnectionTimeoutForStreamCount​(int streamCount)
      • createWindowUpdateForSettings

        protected byte[] createWindowUpdateForSettings()
        Returns:
        The WINDOW_UPDATE frame if one is required or an empty array if no WINDOW_UPDATE is required.
      • doWriteHeaders

        protected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffers doWriteHeaders​(org.apache.coyote.http2.Stream stream,
                                                                                                int pushedStreamId,
                                                                                                MimeHeaders mimeHeaders,
                                                                                                boolean endOfStream,
                                                                                                int payloadSize)
                                                                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • getHpackEncoder

        protected org.apache.coyote.http2.HpackEncoder getHpackEncoder()
      • handleAppInitiatedIOException

        protected void handleAppInitiatedIOException​(java.io.IOException ioe)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • processWrites

        protected void processWrites()
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • incrementWindowSize

        protected void incrementWindowSize​(int increment)
                                    throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • getConnectionId

        protected final java.lang.String getConnectionId()
      • getWeight

        protected final int getWeight()
      • fill

        public boolean fill​(boolean block,
                            byte[] data,
                            int offset,
                            int length)
                     throws java.io.IOException
        Throws:
        java.io.IOException
      • getMaxFrameSize

        public int getMaxFrameSize()
      • startRequestBodyFrame

        public java.nio.ByteBuffer startRequestBodyFrame​(int streamId,
                                                         int payloadSize,
                                                         boolean endOfStream)
                                                  throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • endRequestBodyFrame

        public void endRequestBodyFrame​(int streamId,
                                        int dataLength)
                                 throws org.apache.coyote.http2.Http2Exception,
                                        java.io.IOException
        Throws:
        org.apache.coyote.http2.Http2Exception
        java.io.IOException
      • receivedEndOfStream

        public void receivedEndOfStream​(int streamId)
                                 throws org.apache.coyote.http2.ConnectionException
        Throws:
        org.apache.coyote.http2.ConnectionException
      • onSwallowedDataFramePayload

        public void onSwallowedDataFramePayload​(int streamId,
                                                int swallowedDataBytesCount)
                                         throws java.io.IOException
        Throws:
        java.io.IOException
      • headersStart

        public org.apache.coyote.http2.HpackDecoder.HeaderEmitter headersStart​(int streamId,
                                                                               boolean headersEndStream)
                                                                        throws org.apache.coyote.http2.Http2Exception,
                                                                               java.io.IOException
        Throws:
        org.apache.coyote.http2.Http2Exception
        java.io.IOException
      • reprioritise

        public void reprioritise​(int streamId,
                                 int parentStreamId,
                                 boolean exclusive,
                                 int weight)
                          throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • headersContinue

        public void headersContinue​(int payloadSize,
                                    boolean endOfHeaders)
      • headersEnd

        public void headersEnd​(int streamId)
                        throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • reset

        public void reset​(int streamId,
                          long errorCode)
                   throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • setting

        public void setting​(org.apache.coyote.http2.Setting setting,
                            long value)
                     throws org.apache.coyote.http2.ConnectionException
        Throws:
        org.apache.coyote.http2.ConnectionException
      • pingReceive

        public void pingReceive​(byte[] payload,
                                boolean ack)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • goaway

        public void goaway​(int lastStreamId,
                           long errorCode,
                           java.lang.String debugData)
      • incrementWindowSize

        public void incrementWindowSize​(int streamId,
                                        int increment)
                                 throws org.apache.coyote.http2.Http2Exception
        Throws:
        org.apache.coyote.http2.Http2Exception
      • onSwallowedUnknownFrame

        public void onSwallowedUnknownFrame​(int streamId,
                                            int frameTypeId,
                                            int flags,
                                            int size)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • fill

        public default boolean fill​(boolean block,
                                    byte[] data)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • fill

        public default boolean fill​(boolean block,
                                    java.nio.ByteBuffer data,
                                    int len)
                             throws java.io.IOException
        Throws:
        java.io.IOException