From 2558e9ece77157b76fcfa4716b2a159ae24fbf68 Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 9 Jun 2011 20:10:23 +0000 Subject: [PATCH] Document the state transition diagram git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1134063 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/coyote/AsyncStateMachine.java | 37 ++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/AsyncStateMachine.java b/java/org/apache/coyote/AsyncStateMachine.java index b71a4aca0..8665ab147 100644 --- a/java/org/apache/coyote/AsyncStateMachine.java +++ b/java/org/apache/coyote/AsyncStateMachine.java @@ -24,8 +24,8 @@ import org.apache.tomcat.util.res.StringManager; /** * Manages the state transitions for async requests. - * TODO: State transition diagram * + *
  * The internal states that are used are:
  * DISPATCHED    - Standard request. Not in Async mode.
  * STARTING      - ServletRequest.startAsync() has been called but the
@@ -48,6 +48,41 @@ import org.apache.tomcat.util.res.StringManager;
  *                 request finishes, the dispatch() will be processed.
  * DISPATCHING   - The dispatch is being processed.
  * ERROR         - Something went wrong.
+ *
+ * |----------------->---------------|                                         
+ * |                                \|/                                        
+ * |   |----------<----------------ERROR                                    
+ * |   |    complete()            /|\  |                                       
+ * |   |                    error()|   |postProcess()                          
+ * |   |                           |   |                                       
+ * |   |           postProcess()   |  \|/         auto                         
+ * |   |         |--------------->DISPATCHED<------------------COMPLETING<----| 
+ * |   |         |               /|\  |                          | /|\        | 
+ * |   |         |    |--->-------|   |                          |--|         | 
+ * |   |         ^    |               |startAsync()            timeout()      |
+ * |   |         |    |               |                                       | 
+ * |  \|/        |    |  complete()  \|/        postProcess()                 | 
+ * | MUST_COMPLETE-<- | ----<------STARTING-->----------------|               ^     
+ * |      /|\         |               |                       |               |         
+ * |       |          |               |                       |               |         
+ * |       |          ^               |dispatch()             |               |         
+ * |       |          |               |                       |               |         
+ * |       |          |              \|/                     \|/   complete() |         
+ * |       |          |         MUST_DISPATCH              STARTED---->-------|   
+ * |       |          |           |                         |   |                        
+ * |       |          |           |postProcess()            |   |                        
+ * ^       ^          |           |              dispatch() |   |auto                        
+ * |       |          |           |    |--------------------|   |                        
+ * |       |          | auto     \|/  \|/                      \|/                         
+ * |       |          |---<----DISPATCHING<-----------------TIMING_OUT                              
+ * |       |                                  dispatch()      |   |             
+ * |       |                                                  |   |            
+ * |       |-------<-------------------------------------<----|   |            
+ * |                              complete()                      |            
+ * |                                                              |            
+ * |----<------------------------<-----------------------------<--|            
+ *                                 error()
+ * 
*/ public class AsyncStateMachine { -- 2.11.0