Author: fhanik
Date: Mon May 28 04:39:15 2007
New Revision: 542208

URL: http://svn.apache.org/viewvc?view=rev&rev=542208
Log:
Implement setTimeout using an Action instead of an attribute

Modified:
    tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/trunk/java/org/apache/catalina/connector/Request.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java?view=diff&rev=542208&r1=542207&r2=542208
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java Mon May 
28 04:39:15 2007
@@ -26,6 +26,7 @@
 
 import org.apache.catalina.CometEvent;
 import org.apache.catalina.util.StringManager;
+import org.apache.coyote.ActionCode;
 
 public class CometEventImpl implements CometEvent {
 
@@ -121,7 +122,10 @@
     public void setTimeout(int timeout) throws IOException, ServletException,
             UnsupportedOperationException {
         if (request.getAttribute("org.apache.tomcat.comet.timeout.support") == 
Boolean.TRUE) {
-            request.setAttribute("org.apache.tomcat.comet.timeout", new 
Integer(timeout));
+            checkWorkerThread();
+            Integer to = new Integer(timeout);
+            request.action(ActionCode.ACTION_COMET_TIMEOUT,to);
+            //request.setAttribute("org.apache.tomcat.comet.timeout", to);
         } else {
             throw new UnsupportedOperationException();
         }
@@ -137,6 +141,10 @@
     
     public void configure(CometEvent.CometConfiguration... options)
         throws IOException, IllegalStateException {
+        checkWorkerThread();
+        if (getEventType()!=EventType.BEGIN) {
+            throw new IllegalStateException("Configure can only be called 
during the BEGIN event.");
+        }
         throw new UnsupportedOperationException();
     }
 
@@ -164,6 +172,16 @@
         throw new UnsupportedOperationException();        
     }
     
+    public String toString() {
+        StringBuffer buf = new StringBuffer("CometEventImpl[");
+        buf.append(super.toString());
+        buf.append("] Event:");
+        buf.append(getEventType());
+        buf.append(" SubType:");
+        buf.append(getEventSubType());
+        return buf.toString();
+    }
+
     protected void setWorkerThread() {
         threadCheck.set(threadCheckHolder);
     }

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?view=diff&rev=542208&r1=542207&r2=542208
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Mon May 
28 04:39:15 2007
@@ -263,13 +263,14 @@
             // request parameters
             
req.getRequestProcessor().setWorkerThreadName(Thread.currentThread().getName());
             if (postParseRequest(req, request, res, response)) {
+                event = request.getEvent();
+                if ( event!=null && (event instanceof CometEventImpl)) 
+                    ((CometEventImpl)event).setWorkerThread();
+
                 // Calling the container
                 
connector.getContainer().getPipeline().getFirst().invoke(request, response);
 
                 if (request.isComet()) {
-                    event = request.getEvent();
-                    if ( event!=null && (event instanceof CometEventImpl)) 
-                        ((CometEventImpl)event).setWorkerThread();
 
                     if (!response.isClosed() && !response.isError()) {
                         if (request.getAvailable()) {

Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?view=diff&rev=542208&r1=542207&r2=542208
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Mon May 28 
04:39:15 2007
@@ -2259,6 +2259,9 @@
     
     // ------------------------------------------------------ Protected Methods
 
+    protected void action(ActionCode actionCode, Object param) {
+        coyoteRequest.action(actionCode,param);
+    }
 
     protected Session doGetSession(boolean create) {
 

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?view=diff&rev=542208&r1=542207&r2=542208
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Mon May 
28 04:39:15 2007
@@ -1218,6 +1218,14 @@
             request.setAvailable(inputBuffer.available());
         } else if (actionCode == ActionCode.ACTION_COMET_BEGIN) {
             comet = true;
+        } else if (actionCode == ActionCode.ACTION_COMET_TIMEOUT) {
+            if ( socket == null ) 
+                throw new IllegalStateException("Connection must be in Comet 
state to set the timeout");
+            NioEndpoint.KeyAttachment attach = 
(NioEndpoint.KeyAttachment)socket.getAttachment(false);
+            if ( param == null || (!(param instanceof Integer)) )
+                throw new IllegalArgumentException("Action parameter must be 
an Integer object to set the timeout");
+            Integer to = (Integer)param;
+            attach.setTimeout(to.longValue());
         } else if (actionCode == ActionCode.ACTION_COMET_END) {
             comet = false;
         }

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?view=diff&rev=542208&r1=542207&r2=542208
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Mon May 
28 04:39:15 2007
@@ -661,6 +661,7 @@
                         }
                     } else {
                         if (log.isDebugEnabled()) log.debug("Keeping 
processor["+result);
+                        //add correct poller events here based on Comet stuff
                         socket.getPoller().add(socket);
                     }
                 }



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

Reply via email to