Author: remm
Date: Thu Aug 17 04:41:43 2006
New Revision: 432214

URL: http://svn.apache.org/viewvc?rev=432214&view=rev
Log:
- Update to use two action code.
- The attribute to advertise comet support remains for now.
- No update to the comet interface at this time.

Modified:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java
    tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=432214&r1=432213&r2=432214&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
Thu Aug 17 04:41:43 2006
@@ -128,7 +128,8 @@
                 servlet = (CometProcessor) request.getWrapper().allocate();
             } catch (Throwable t) {
                 log.error(sm.getString("coyoteAdapter.service"), t);
-                request.removeAttribute("org.apache.tomcat.comet");
+                request.recycle();
+                response.recycle();
                 // Restore the context classloader
                 Thread.currentThread().setContextClassLoader
                     (CoyoteAdapter.class.getClassLoader());
@@ -140,7 +141,6 @@
                 } else {
                     if (!servlet.read(request.getRequest(), 
response.getResponse())) {
                         error = true;
-                        request.removeAttribute("org.apache.tomcat.comet");
                         try {
                             servlet.error(request.getRequest(), 
response.getResponse());
                         } catch (Throwable th) {
@@ -148,12 +148,15 @@
                         }
                     }
                 }
+                if (response.isClosed()) {
+                    res.action(ActionCode.ACTION_COMET_END, null);
+                }
                 return (!error);
             } catch (Throwable t) {
                 if (!(t instanceof IOException)) {
                     log.error(sm.getString("coyoteAdapter.service"), t);
                 }
-                request.removeAttribute("org.apache.tomcat.comet");
+                error = true;
                 try {
                     servlet.error(request.getRequest(), 
response.getResponse());
                 } catch (Throwable th) {
@@ -161,14 +164,14 @@
                 }
                 return false;
             } finally {
+                // Restore the context classloader
+                Thread.currentThread().setContextClassLoader
+                    (CoyoteAdapter.class.getClassLoader());
                 // Recycle the wrapper request and response
-                if (request.getAttribute("org.apache.tomcat.comet") == null) {
+                if (error || response.isClosed()) {
                     request.recycle();
                     response.recycle();
                 }
-                // Restore the context classloader
-                Thread.currentThread().setContextClassLoader
-                    (CoyoteAdapter.class.getClassLoader());
             }
         }
         return true;
@@ -222,14 +225,15 @@
                 
connector.getContainer().getPipeline().getFirst().invoke(request, response);
             }
 
-            if (request.getAttribute("org.apache.tomcat.comet") == Boolean.TRUE
-                    && request.getWrapper().allocate() instanceof 
CometProcessor) {
+            if (request.getWrapper().allocate() instanceof CometProcessor 
+                    && !response.isClosed()) {
                 comet = true;
+                res.action(ActionCode.ACTION_COMET_BEGIN, null);
             }
 
             if (!comet) {
                 response.finishResponse();
-                req.action( ActionCode.ACTION_POST_REQUEST , null);
+                req.action(ActionCode.ACTION_POST_REQUEST , null);
             }
 
         } catch (IOException e) {

Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java?rev=432214&r1=432213&r2=432214&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ActionCode.java Thu Aug 17 
04:41:43 2006
@@ -133,6 +133,18 @@
     public static final ActionCode ACTION_REQ_SET_BODY_REPLAY = new 
ActionCode(20);
 
 
+    /**
+     * Callback for begin Comet processing
+     */
+    public static final ActionCode ACTION_COMET_BEGIN = new ActionCode(21);
+
+
+    /**
+     * Callback for begin Comet processing
+     */
+    public static final ActionCode ACTION_COMET_END = new ActionCode(22);
+
+
     // ----------------------------------------------------------- Constructors
     int code;
 

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=432214&r1=432213&r2=432214&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java 
Thu Aug 17 04:41:43 2006
@@ -744,9 +744,6 @@
         try {
             rp.setStage(org.apache.coyote.Constants.STAGE_SERVICE);
             error = !adapter.event(request, response, error);
-            if (request.getAttribute("org.apache.tomcat.comet") == null) {
-                comet = false;
-            }
         } catch (InterruptedIOException e) {
             error = true;
         } catch (Throwable t) {
@@ -875,10 +872,6 @@
                         error = response.getErrorException() != null ||
                                 statusDropsConnection(response.getStatus());
                     }
-                    // Comet support
-                    if (request.getAttribute("org.apache.tomcat.comet") != 
null) {
-                        comet = true;
-                    }
                 } catch (InterruptedIOException e) {
                     error = true;
                 } catch (Throwable t) {
@@ -1217,6 +1210,11 @@
             InternalAprInputBuffer internalBuffer = (InternalAprInputBuffer)
                 request.getInputBuffer();
             internalBuffer.addActiveFilter(savedBody);
+            
+        } else if (actionCode == ActionCode.ACTION_COMET_BEGIN) {
+            comet = true;
+        } else if (actionCode == ActionCode.ACTION_COMET_END) {
+            comet = false;
         }
 
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to