Author: fhanik
Date: Thu Jul 13 08:12:56 2006
New Revision: 421645

URL: http://svn.apache.org/viewvc?rev=421645&view=rev
Log:
Add optional comet timeout support

Modified:
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java?rev=421645&r1=421644&r2=421645&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometProcessor.java Thu Jul 
13 08:12:56 2006
@@ -88,7 +88,7 @@
      * Reader may be used to determine if there is a risk of blocking: the 
servlet
      * should read while data is reported available, and can make one 
additional read
      * without blocking. When encountering a read error or an EOF, the servlet 
MUST
-     * report it by either returning null or throwing an exception such as an 
+     * report it by either returning false or throwing an exception such as an 
      * IOException. This will cause the error method to be invoked, and the 
connection
      * will be closed. It is not allowed to attempt reading data from the 
request object
      * outside of the execution of this method.
@@ -104,5 +104,28 @@
      */
     public boolean read(HttpServletRequest request, HttpServletResponse 
response)
         throws IOException, ServletException;
+    
+    /**
+     * Sets the timeout for this Comet connection. Please NOTE, that the 
implementation 
+     * of a per connection timeout is OPTIONAL and MAY NOT be implemented.<br/>
+     * This method sets the timeout in milliseconds of idle time on the 
connection.
+     * The timeout is reset every time data is received from the connection or 
data is flushed
+     * using <code>response.flushBuffer()</code>. If a timeout occurs, the 
+     * <code>error(HttpServletRequest, HttpServletResponse)</code> method is 
invoked. The 
+     * web application SHOULD NOT attempt to reuse the request and response 
objects after a timeout
+     * as the <code>error(HttpServletRequest, HttpServletResponse)</code> 
method indicates.<br/>
+     * This method should not be called asynchronously, as that will have no 
effect.
+     * @param request The HTTP servlet request instance
+     * @param response The HTTP servlet response instance
+     * @param timeout The timeout in milliseconds for this connection
+     * @throws IOException An IOException may be thrown to indicate an IO 
error, 
+     *         or that the EOF has been reached on the connection
+     * @throws ServletException An exception has occurred, as specified by the 
root
+     *         cause
+     * @throws UnsupportedOperationException if per connection timeout is not 
supported, either at all or at this phase
+     *         of the invocation.
+     */
+    public void setTimeout(HttpServletRequest request, HttpServletResponse 
response, int timeout)
+        throws IOException, ServletException, UnsupportedOperationException;
 
 }

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java?rev=421645&r1=421644&r2=421645&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/CometServlet.java 
Thu Jul 13 08:12:56 2006
@@ -86,7 +86,16 @@
                 }
             }
         }
-        
     }
+    
+    public void setTimeout(HttpServletRequest request, HttpServletResponse 
response, 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));
+        } else {
+            throw new UnsupportedOperationException();
+        }
+    }
+
 
 }



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

Reply via email to