public class AsyncStateMachine
extends java.lang.Object
The internal states that are used are:
DISPATCHED - Standard request. Not in Async mode.
STARTING - ServletRequest.startAsync() has been called but the
request in which that call was made has not finished
processing.
STARTED - ServletRequest.startAsync() has been called and the
request in which that call was made has finished
processing.
READ_WRITE_OP - Performing an asynchronous read or write.
MUST_COMPLETE - ServletRequest.startAsync() followed by complete() have
been called during a single Servlet.service() method. The
complete() will be processed as soon as the request
finishes.
COMPLETE_PENDING - ServletRequest.startAsync() has been called and before the
request in which that call was had finished processing,
complete() was called for a non-container thread. The
complete() will be processed as soon as the request
finishes. This is different to MUST_COMPLETE because of
differences required to avoid race conditions during error
handling.
COMPLETING - The call to complete() was made once the request was in
the STARTED state. May or may not be triggered by a
container thread - depends if start(Runnable) was used.
TIMING_OUT - The async request has timed out and is waiting for a call
to complete(). If that isn't made, the error state will
entered.
MUST_DISPATCH - ServletRequest.startAsync() followed by dispatch() have
been called during a single Servlet.service() method. The
dispatch() will be processed as soon as the request
finishes.
DISPATCH_PENDING - ServletRequest.startAsync() has been called and before the
request in which that call was had finished processing,
dispatch() was called for a non-container thread. The
dispatch() will be processed as soon as the request
finishes. This is different to MUST_DISPATCH because of
differences required to avoid race conditions during error
handling.
DISPATCHING - The dispatch is being processed.
MUST_ERROR - ServletRequest.startAsync() has been called followed by an
I/O error on a non-container thread. The main purpose of
this state is to prevent additional async actions
(complete(), dispatch() etc.) on the non-container thread.
The container will perform the necessary error handling,
including ensuring that the AsyncLister.onError() method
is called.
ERROR - Something went wrong.
|-----«-------------------------------«------------------------------|
| |
| error() |
|-----------------»---| | |--«--------MUST_ERROR---------------«------------------------| |
| \|/ \|/\|/ | |
| |----------«-----E R R O R--«-----------------------«-------------------------------| | |
| | complete() /|\/|\\ \-«--------------------------------«-------| | | |
| | | | \ | | | |
| | |-----»-------| | \-----------»----------| | | | |
| | | | |dispatch() | | ^ |
| | | | \|/ ^ | | |
| | | | |--|timeout() | | | | |
| | | post() | | \|/ | post() | | | |
| | | |---------- | --»DISPATCHED«---------- | --------------COMPLETING«-----| | | |
| | | | | /|\/|\ | | | /|\ /|\ | | | |
| | | | |---»- | ---| | |startAsync() | timeout()|--| | | | | |
| | ^ ^ | | | | | | | ^ | |
| | | | | |-- \ -----| | complete() | |post() | | | |
| | | | | | \ | /--»----- | ---COMPLETE_PENDING-»-| ^ | | |
| | | | | | \ | / | | | | |
| | | | | ^ \ | / | complete() | | | |
| \|/ | | | | \ \|/ / post() | /---»-----| | ^ |
| MUST_COMPLETE-«- | - | --«----STARTING--»--------- | ------------| / | | |
| /|\ /|\ | | complete() | \ | | / error() | | ^
| | | | | | \ | | //---»----------| | |
| | | ^ | dispatch()| \ | post() | // | |
| | | | | | \ | |-----| | // nct-io-error | |
| | | | | | \ | | | | ///---»---------------| |
| | | | | \|/ \ | | \|/\| ||| |
| | | | |--«--MUST_DISPATCH-----«-----| |--«--STARTED«---------«---------| |
| | | | dispatched() /|\ | \ / | | post() | |
| | | | | | \ / | | | |
| | | | | | \ / | | | |
| | | | | |post() | | | | ^ |
^ | ^ | | | \|/ | | |asyncOperation() | |
| | | ^ | | DISPATCH_PENDING | | | | |
| | | | | | |post() | | | | |
| | | | | | | |----------| | |»-READ_WRITE_OP--»---| |
| | | | | | | | dispatch() | | | | |
| | | | | | | | | | | | |
| | | |post() | | | | timeout()| | | | error()|
| | | |dispatched() | \|/\|/ \|/ | dispatch()| | |-»--------|
| | | |---«---------- | ---DISPATCHING«-----«------ | ------«----| |
| | | | | ^ | |
| | | | |----| | |
| | | | timeout() | |
| | | | | |
| | | | dispatch() \|/ |
| | | |-----------«-----------TIMING_OUT |
| | | | | |
| | |-------«----------------------------------«------| | |
| | complete() | |
| | | |
|«- | ----«-------------------«-------------------------------«--| |
| error() |
| complete() |
|----------------------------------------------------------------------------|
| Constructor and Description |
|---|
AsyncStateMachine(AbstractProcessor processor) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
asyncComplete() |
boolean |
asyncDispatch() |
void |
asyncDispatched() |
void |
asyncError() |
void |
asyncMustError() |
void |
asyncOperation() |
AbstractEndpoint.Handler.SocketState |
asyncPostProcess() |
void |
asyncRun(java.lang.Runnable runnable) |
void |
asyncStart(AsyncContextCallback asyncCtxt) |
boolean |
asyncTimeout() |
long |
getLastAsyncStart()
Obtain the time that this connection last transitioned to async
processing.
|
boolean |
isAsync() |
boolean |
isAsyncDispatching() |
boolean |
isAsyncError() |
boolean |
isAsyncStarted() |
boolean |
isAsyncTimingOut() |
boolean |
isCompleting() |
void |
recycle() |
public AsyncStateMachine(AbstractProcessor processor)
public boolean isAsync()
public boolean isAsyncDispatching()
public boolean isAsyncStarted()
public boolean isAsyncTimingOut()
public boolean isAsyncError()
public boolean isCompleting()
public long getLastAsyncStart()
System.currentTimeMillis()) that
this connection last transitioned to asyncpublic void asyncStart(AsyncContextCallback asyncCtxt)
public void asyncOperation()
public AbstractEndpoint.Handler.SocketState asyncPostProcess()
public boolean asyncComplete()
public boolean asyncTimeout()
public boolean asyncDispatch()
public void asyncDispatched()
public void asyncMustError()
public void asyncError()
public void asyncRun(java.lang.Runnable runnable)
public void recycle()
Copyright © 2000-2019 Apache Software Foundation. All Rights Reserved.