Package org.apache.coyote.http2
Class Http2AsyncUpgradeHandler
java.lang.Object
org.apache.coyote.http2.Http2AsyncUpgradeHandler
- All Implemented Interfaces:
- HttpUpgradeHandler,- InternalHttpUpgradeHandler
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected classprotected class
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final AtomicIntegerprotected final Stringprotected static final intprotected static final intprotected static final byte[]protected static final org.apache.coyote.http2.HeaderSinkprotected final org.apache.coyote.http2.ConnectionSettingsLocalLocal settings are settings defined by Tomcat and sent to the client that the client must use when communicating with Tomcat.protected static final Logprotected static final byte[]protected static final byte[]protected final Http2Protocolprotected static final byte[]protected static final StringManagerprotected final SocketWrapperBase<?>protected final UserDataHelperprotected final Conditionprotected final Lock
- 
Constructor SummaryConstructorsConstructorDescriptionHttp2AsyncUpgradeHandler(Http2Protocol protocol, Adapter adapter, Request coyoteRequest, SocketWrapperBase<?> socketWrapper) 
- 
Method SummaryModifier and TypeMethodDescriptionprotected byte[]protected voidvoiddestroy()This method is called after the upgraded connection has been closed.protected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffersdoWriteHeaders(org.apache.coyote.http2.Stream stream, int pushedStreamId, MimeHeaders mimeHeaders, boolean endOfStream, int payloadSize) voidendRequestBodyFrame(int streamId, int dataLength) default booleanfill(boolean block, byte[] data) booleanfill(boolean block, byte[] data, int offset, int length) default booleanfill(boolean block, ByteBuffer data, int len) protected final Stringprotected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffersgetHeaderFrameBuffers(int initialPayloadSize) protected org.apache.coyote.http2.HpackEncoderintprotected org.apache.coyote.http2.Http2Parserprotected org.apache.coyote.http2.Http2UpgradeHandler.PingManagervoidprotected voidbooleanvoidheadersContinue(int payloadSize, boolean endOfHeaders) voidheadersEnd(int streamId, boolean endOfStream) org.apache.coyote.http2.HpackDecoder.HeaderEmitterheadersStart(int streamId, boolean headersEndStream) voidincreaseOverheadCount(org.apache.coyote.http2.FrameType frameType) protected voidincrementWindowSize(int increment) voidincrementWindowSize(int streamId, int increment) voidinit(WebConnection webConnection) This method is called once the request/response pair whereHttpServletRequest.upgrade(Class)is called has completed processing and is the point where control of the connection passes from the container to theHttpUpgradeHandler.voidonSwallowedDataFramePayload(int streamId, int swallowedDataBytesCount) voidonSwallowedUnknownFrame(int streamId, int frameTypeId, int flags, int size) voidpause()voidpingReceive(byte[] payload, boolean ack) voidpriorityUpdate(int prioritizedStreamID, Priority p) protected voidprocessConnection(WebConnection webConnection, org.apache.coyote.http2.Stream stream) protected SendfileStateprocessSendfile(org.apache.coyote.http2.SendfileData sendfile) Process send file (if supported) for the given stream.protected voidprocessStreamOnContainerThread(org.apache.coyote.http2.Stream stream) protected voidvoidreceivedEndOfStream(int streamId) voidreprioritise(int streamId, int parentStreamId, boolean exclusive, int weight) Deprecated.Unused.voidreset(int streamId, long errorCode) protected voidsentEndOfStream(org.apache.coyote.http2.Stream stream) protected voidsetConnectionTimeoutForStreamCount(int streamCount) voidsetSocketWrapper(SocketWrapperBase<?> wrapper) voidsetSslSupport(SSLSupport sslSupport) voidsetting(org.apache.coyote.http2.Setting setting, long value) voidsettingsEnd(boolean ack) startRequestBodyFrame(int streamId, int payloadSize, boolean endOfStream) voidtimeoutAsync(long now) upgradeDispatch(SocketEvent status) protected voidwriteGoAwayFrame(int maxStreamId, long errorCode, byte[] debugMsg) protected voidWrite the initial settings frame and any necessary supporting frames.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.coyote.http11.upgrade.InternalHttpUpgradeHandlergetUpgradeInfo
- 
Field Details- 
log
- 
sm
- 
FLAG_END_OF_STREAMprotected static final int FLAG_END_OF_STREAM- See Also:
 
- 
FLAG_END_OF_HEADERSprotected static final int FLAG_END_OF_HEADERS- See Also:
 
- 
PINGprotected static final byte[] PING
- 
PING_ACKprotected static final byte[] PING_ACK
- 
SETTINGS_ACKprotected static final byte[] SETTINGS_ACK
- 
GOAWAYprotected static final byte[] GOAWAY
- 
HEADER_SINKprotected static final org.apache.coyote.http2.HeaderSink HEADER_SINK
- 
connectionId
- 
protocol
- 
socketWrapper
- 
localSettingsprotected final org.apache.coyote.http2.ConnectionSettingsLocal localSettingsLocal settings are settings defined by Tomcat and sent to the client that the client must use when communicating with Tomcat.
- 
activeRemoteStreamCount
- 
userDataHelper
- 
windowAllocationLock
- 
windowAllocationAvailable
 
- 
- 
Constructor Details- 
Http2AsyncUpgradeHandlerpublic Http2AsyncUpgradeHandler(Http2Protocol protocol, Adapter adapter, Request coyoteRequest, SocketWrapperBase<?> socketWrapper) 
 
- 
- 
Method Details- 
getParser
- 
getPingManagerprotected org.apache.coyote.http2.Http2UpgradeHandler.PingManager getPingManager()
- 
hasAsyncIOpublic boolean hasAsyncIO()
- 
processConnectionprotected void processConnection(WebConnection webConnection, org.apache.coyote.http2.Stream stream) 
- 
writeSettingsprotected 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).
- 
writeGoAwayFrameprotected void writeGoAwayFrame(int maxStreamId, long errorCode, byte[] debugMsg) throws IOException - Throws:
- IOException
 
- 
getHeaderFrameBuffersprotected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffers getHeaderFrameBuffers(int initialPayloadSize) 
- 
settingsEnd- Throws:
- IOException
 
- 
processSendfileProcess 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
 
- 
initDescription copied from interface:jakarta.servlet.http.HttpUpgradeHandlerThis method is called once the request/response pair whereHttpServletRequest.upgrade(Class)is called has completed processing and is the point where control of the connection passes from the container to theHttpUpgradeHandler.- Specified by:
- initin interface- HttpUpgradeHandler
- Parameters:
- webConnection- The connection that has been upgraded
 
- 
processStreamOnContainerThreadprotected void processStreamOnContainerThread(org.apache.coyote.http2.Stream stream) 
- 
decrementActiveRemoteStreamCountprotected void decrementActiveRemoteStreamCount()
- 
setSocketWrapper- Specified by:
- setSocketWrapperin interface- InternalHttpUpgradeHandler
 
- 
setSslSupport- Specified by:
- setSslSupportin interface- InternalHttpUpgradeHandler
 
- 
upgradeDispatch- Specified by:
- upgradeDispatchin interface- InternalHttpUpgradeHandler
 
- 
setConnectionTimeoutForStreamCountprotected void setConnectionTimeoutForStreamCount(int streamCount) 
- 
timeoutAsyncpublic void timeoutAsync(long now) - Specified by:
- timeoutAsyncin interface- InternalHttpUpgradeHandler
 
- 
pausepublic void pause()- Specified by:
- pausein interface- InternalHttpUpgradeHandler
 
- 
destroypublic void destroy()Description copied from interface:jakarta.servlet.http.HttpUpgradeHandlerThis method is called after the upgraded connection has been closed.- Specified by:
- destroyin interface- HttpUpgradeHandler
 
- 
createWindowUpdateForSettingsprotected byte[] createWindowUpdateForSettings()- Returns:
- The WINDOW_UPDATE frame if one is required or an empty array if no WINDOW_UPDATE is required.
 
- 
doWriteHeadersprotected org.apache.coyote.http2.Http2UpgradeHandler.HeaderFrameBuffers doWriteHeaders(org.apache.coyote.http2.Stream stream, int pushedStreamId, MimeHeaders mimeHeaders, boolean endOfStream, int payloadSize) throws IOException - Throws:
- IOException
 
- 
getHpackEncoderprotected org.apache.coyote.http2.HpackEncoder getHpackEncoder()
- 
sentEndOfStreamprotected void sentEndOfStream(org.apache.coyote.http2.Stream stream) 
- 
handleAppInitiatedIOException- Throws:
- IOException
 
- 
processWrites- Throws:
- IOException
 
- 
incrementWindowSizeprotected void incrementWindowSize(int increment) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
getConnectionId
- 
increaseOverheadCountpublic void increaseOverheadCount(org.apache.coyote.http2.FrameType frameType) 
- 
fill- Throws:
- IOException
 
- 
getMaxFrameSizepublic int getMaxFrameSize()
- 
getHpackDecoder
- 
startRequestBodyFramepublic ByteBuffer startRequestBodyFrame(int streamId, int payloadSize, boolean endOfStream) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
endRequestBodyFramepublic void endRequestBodyFrame(int streamId, int dataLength) throws org.apache.coyote.http2.Http2Exception, IOException - Throws:
- org.apache.coyote.http2.Http2Exception
- IOException
 
- 
onSwallowedDataFramePayloadpublic void onSwallowedDataFramePayload(int streamId, int swallowedDataBytesCount) throws IOException - Throws:
- IOException
 
- 
headersStartpublic org.apache.coyote.http2.HpackDecoder.HeaderEmitter headersStart(int streamId, boolean headersEndStream) throws org.apache.coyote.http2.Http2Exception, IOException - Throws:
- org.apache.coyote.http2.Http2Exception
- IOException
 
- 
reprioritise@Deprecated public void reprioritise(int streamId, int parentStreamId, boolean exclusive, int weight) throws org.apache.coyote.http2.Http2Exception Deprecated.Unused. Will be removed in Tomcat 11 onwards.Unused - NO-OP.- Parameters:
- streamId- Unused
- parentStreamId- Unused
- exclusive- Unused
- weight- Unused
- Throws:
- org.apache.coyote.http2.Http2Exception- Never thrown
 
- 
headersContinuepublic void headersContinue(int payloadSize, boolean endOfHeaders) 
- 
headersEndpublic void headersEnd(int streamId, boolean endOfStream) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
receivedEndOfStreampublic void receivedEndOfStream(int streamId) throws org.apache.coyote.http2.ConnectionException - Throws:
- org.apache.coyote.http2.ConnectionException
 
- 
resetpublic void reset(int streamId, long errorCode) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
settingpublic void setting(org.apache.coyote.http2.Setting setting, long value) throws org.apache.coyote.http2.ConnectionException - Throws:
- org.apache.coyote.http2.ConnectionException
 
- 
pingReceive- Throws:
- IOException
 
- 
goaway
- 
incrementWindowSizepublic void incrementWindowSize(int streamId, int increment) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
priorityUpdatepublic void priorityUpdate(int prioritizedStreamID, Priority p) throws org.apache.coyote.http2.Http2Exception - Throws:
- org.apache.coyote.http2.Http2Exception
 
- 
onSwallowedUnknownFramepublic void onSwallowedUnknownFrame(int streamId, int frameTypeId, int flags, int size) throws IOException - Throws:
- IOException
 
- 
getServletConnection
- 
fill- Throws:
- IOException
 
- 
fill- Throws:
- IOException
 
 
-