Package org.apache.coyote.http11.upgrade
Class UpgradeProcessorBase
- java.lang.Object
-
- org.apache.coyote.AbstractProcessorLight
-
- org.apache.coyote.http11.upgrade.UpgradeProcessorBase
-
- All Implemented Interfaces:
WebConnection
,java.lang.AutoCloseable
,Processor
- Direct Known Subclasses:
UpgradeProcessorExternal
,UpgradeProcessorInternal
public abstract class UpgradeProcessorBase extends AbstractProcessorLight implements WebConnection
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
INFINITE_TIMEOUT
-
Constructor Summary
Constructors Constructor Description UpgradeProcessorBase(UpgradeToken upgradeToken)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AbstractEndpoint.Handler.SocketState
asyncPostProcess()
boolean
checkAsyncTimeoutGeneration()
Check to see if the async generation (each cycle of async increments the generation of the AsyncStateMachine) is the same as the generation when the most recent async timeout was triggered.java.nio.ByteBuffer
getLeftoverInput()
Allows retrieving additional input during the upgrade process.Request
getRequest()
UpgradeToken
getUpgradeToken()
Generate an upgrade token.boolean
isAsync()
boolean
isUpgrade()
void
recycle()
Recycle the processor, ready for the next request which may be on the same connection or a different connection.AbstractEndpoint.Handler.SocketState
service(SocketWrapperBase<?> socketWrapper)
Service a 'standard' HTTP request.void
timeoutAsync(long now)
Check this processor to see if the timeout has expired and process a timeout if that is that case.-
Methods inherited from class org.apache.coyote.AbstractProcessorLight
addDispatch, clearDispatches, dispatch, getIteratorAndClearDispatches, getLog, logAccess, process
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.coyote.Processor
pause, setSslSupport
-
Methods inherited from interface jakarta.servlet.http.WebConnection
getInputStream, getOutputStream
-
-
-
-
Field Detail
-
INFINITE_TIMEOUT
protected static final int INFINITE_TIMEOUT
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
UpgradeProcessorBase
public UpgradeProcessorBase(UpgradeToken upgradeToken)
-
-
Method Detail
-
isUpgrade
public final boolean isUpgrade()
-
getUpgradeToken
public UpgradeToken getUpgradeToken()
Description copied from interface:Processor
Generate an upgrade token.- Specified by:
getUpgradeToken
in interfaceProcessor
- Returns:
- An upgrade token encapsulating the information required to process the upgrade request
-
recycle
public final void recycle()
Description copied from interface:Processor
Recycle the processor, ready for the next request which may be on the same connection or a different connection.
-
service
public final AbstractEndpoint.Handler.SocketState service(SocketWrapperBase<?> socketWrapper) throws java.io.IOException
Description copied from class:AbstractProcessorLight
Service a 'standard' HTTP request. This method is called for both new requests and for requests that have partially read the HTTP request line or HTTP headers. Once the headers have been fully read this method is not called again until there is a new HTTP request to process. Note that the request type may change during processing which may result in one or more calls toAbstractProcessorLight.dispatch(SocketEvent)
. Requests may be pipe-lined.- Specified by:
service
in classAbstractProcessorLight
- Parameters:
socketWrapper
- The connection to process- Returns:
- The state the caller should put the socket in when this method returns
- Throws:
java.io.IOException
- If an I/O error occurs during the processing of the request
-
asyncPostProcess
public final AbstractEndpoint.Handler.SocketState asyncPostProcess()
- Specified by:
asyncPostProcess
in classAbstractProcessorLight
-
getRequest
public final Request getRequest()
- Specified by:
getRequest
in interfaceProcessor
- Returns:
- The request associated with this processor.
-
getLeftoverInput
public java.nio.ByteBuffer getLeftoverInput()
Description copied from interface:Processor
Allows retrieving additional input during the upgrade process.- Specified by:
getLeftoverInput
in interfaceProcessor
- Returns:
- leftover bytes
-
checkAsyncTimeoutGeneration
public boolean checkAsyncTimeoutGeneration()
Description copied from interface:Processor
Check to see if the async generation (each cycle of async increments the generation of the AsyncStateMachine) is the same as the generation when the most recent async timeout was triggered. This is intended to be used to avoid unnecessary processing.- Specified by:
checkAsyncTimeoutGeneration
in interfaceProcessor
- Returns:
true
If the async generation has not changed since the async timeout was triggered
-
timeoutAsync
public void timeoutAsync(long now)
Description copied from interface:Processor
Check this processor to see if the timeout has expired and process a timeout if that is that case.Note: The name of this method originated with the Servlet 3.0 asynchronous processing but evolved over time to represent a timeout that is triggered independently of the socket read/write timeouts.
- Specified by:
timeoutAsync
in interfaceProcessor
- Parameters:
now
- The time (as returned bySystem.currentTimeMillis()
to use as the current time to determine whether the timeout has expired. If negative, the timeout will always be treated as ifq it has expired.
-
-