Author: remm
Date: Sun Jun 17 10:21:26 2007
New Revision: 548078
URL: http://svn.apache.org/viewvc?view=rev&rev=548078
Log:
- Method names changes after various comments (and my own personal opinion too).
Modified:
tomcat/sandbox/comet/java/org/apache/catalina/CometEvent.java
tomcat/sandbox/comet/java/org/apache/catalina/connector/CometEventImpl.java
tomcat/sandbox/comet/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/sandbox/comet/java/org/apache/catalina/connector/Request.java
tomcat/sandbox/comet/java/org/apache/catalina/valves/ErrorReportValve.java
tomcat/sandbox/comet/java/org/apache/coyote/ActionCode.java
tomcat/sandbox/comet/java/org/apache/coyote/http11/Http11AprProcessor.java
Modified: tomcat/sandbox/comet/java/org/apache/catalina/CometEvent.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/catalina/CometEvent.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/catalina/CometEvent.java (original)
+++ tomcat/sandbox/comet/java/org/apache/catalina/CometEvent.java Sun Jun 17
10:21:26 2007
@@ -33,8 +33,9 @@
/**
* Enumeration describing the major events that the container can invoke
- * the CometProcessors event() method with
- * BEGIN - will be called at the beginning
+ * the CometProcessor event() method with:
+ * <ul>
+ * <li>BEGIN - will be called at the beginning
* of the processing of the connection. It can be used to initialize any
relevant
* fields using the request and response objects. Between the end of the
processing
* of this event, and the beginning of the processing of the end or error
events,
@@ -42,8 +43,8 @@
* Note that the response object and depedent OutputStream and Writer are
still
* not synchronized, so when they are accessed by multiple threads,
* synchronization is mandatory. After processing the initial event, the
request
- * is considered to be committed.
- * READ - This indicates that input data is available, and that one read
can be made
+ * is considered to be committed.</li>
+ * <li>READ - This indicates that input data is available, and that one
read can be made
* without blocking. The available and ready methods of the InputStream or
* Reader may be used to determine if there is a risk of blocking: the
servlet
* should read while data is reported available. When encountering a read
error,
@@ -53,38 +54,37 @@
* Alternately, it is also possible to catch any exception, perform clean
up
* on any data structure the servlet may be using, and using the close
method
* of the event. It is not allowed to attempt reading data from the
request
- * object outside of the execution of this method.
- * END - End may be called to end the processing of the request. Fields
that have
+ * object outside of the execution of this method.</li>
+ * <li>END - End may be called to end the processing of the request.
Fields that have
* been initialized in the begin method should be reset. After this event
has
* been processed, the request and response objects, as well as all their
dependent
- * objects will be recycled and used to process other requests. End will
also be
- * called when data is available and the end of file is reached on the
request input
- * (this usually indicates the client has pipelined a request).
- * ERROR - Error will be called by the container in the case where an IO
exception
+ * objects will be recycled and used to process other requests.</li>
+ * <li>ERROR - Error will be called by the container in the case where an
IO exception
* or a similar unrecoverable error occurs on the connection. Fields that
have
* been initialized in the begin method should be reset. After this event
has
* been processed, the request and response objects, as well as all their
dependent
- * objects will be recycled and used to process other requests.
- * CALLBACK - Callback will be called by the container after the comet
processor
- * has registered for the OP_CALLBACK operation.
+ * objects will be recycled and used to process other requests.</li>
+ * <li>EVENT - Event will be called by the container after the resume()
method is called.
* This allows you get an event instantly, and you can perform IO actions
- * or close the Comet connection.
- * WRITE - Write is called, only if the Comet processor has registered for
the OP_WRITE
- * event. This means that connection is ready to receive data to be
written out.
- */
- public enum EventType {BEGIN, READ, END, ERROR, WRITE, CALLBACK}
+ * or close the Comet connection.</li>
+ * <li>WRITE - Write is sent if the servlet is using the ready method.
This means that
+ * the connection is ready to receive data to be written out.</li>
+ * </ul>
+ */
+ public enum EventType {BEGIN, READ, END, ERROR, WRITE, EVENT}
/**
- * Event details
- * TIMEOUT - the connection timed out (sub type of ERROR); note that this
ERROR type is not fatal, and
- * the connection will not be closed unless the servlet uses the close
method of the event
- * CLIENT_DISCONNECT - the client connection was closed (sub type of ERROR)
- * IOEXCEPTION - an IO exception occurred, such as invalid content, for
example, an invalid chunk block (sub type of ERROR)
- * WEBAPP_RELOAD - the webapplication is being reloaded (sub type of END)
- * SERVER_SHUTDOWN - the server is shutting down (sub type of END)
- * SESSION_END - the servlet ended the session (sub type of END)
-
+ * Event details:
+ * <ul>
+ * <li>TIMEOUT - the connection timed out (sub type of ERROR); note that
this ERROR type is not fatal, and
+ * the connection will not be closed unless the servlet uses the close
method of the event</li>
+ * <li>CLIENT_DISCONNECT - the client connection was closed (sub type of
ERROR)</li>
+ * <li>IOEXCEPTION - an IO exception occurred, such as invalid content,
for example, an invalid chunk block (sub type of ERROR)</li>
+ * <li>WEBAPP_RELOAD - the webapplication is being reloaded (sub type of
END)</li>
+ * <li>SERVER_SHUTDOWN - the server is shutting down (sub type of END)</li>
+ * <li>SESSION_END - the servlet ended the session (sub type of END)</li>
+ * </ul>
*/
public enum EventSubType { TIMEOUT, CLIENT_DISCONNECT, IOEXCEPTION,
WEBAPP_RELOAD, SERVER_SHUTDOWN, SESSION_END }
@@ -134,48 +134,56 @@
* 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
- * servlet will receive an ERROR/TIMEOUT event.
+ * servlet will receive an ERROR/TIMEOUT event which will not result in
automatically closing
+ * the event (the event may be closed using the close() method).
*
* @param timeout The timeout in milliseconds for this connection, must be
a positive value, larger than 0
*/
public void setTimeout(int timeout);
/**
- * Returns true if write notifications are disabled, or is they are
enabled and data may
- * be written to the connection (the flag becomes false when the client is
unable to accept
- * data fast enough). When the flag becomes false, the servlet must stop
writing data. If there's
- * an attempt to flush additional data to the client and data still cannot
be written immediately,
- * an IOException will be thrown. If calling this method returns false, it
will also
+ * Returns true when data may be written to the connection (the flag
becomes false
+ * when the client is unable to accept data fast enough). When the flag
becomes false,
+ * the servlet must stop writing data. If there's an attempt to flush
additional data
+ * to the client and data still cannot be written immediately, an
IOException will be
+ * thrown. If calling this method returns false, it will also
* request notification when the connection becomes available for writing
again, and the
* servlet will recieve a write event.<br/>
*
- * Note: If the servlet is not using isWriteable, and is writing its
output inside the
- * container threads, it is not needed to call this method. Any incomplete
writes will be
+ * Note: If the servlet is not using ready, and is writing its output
inside the
+ * container threads, using this method is not mandatory, but any
incomplete writes will be
* performed again in blocking mode.
*
* @return boolean true if you can write to the response
*/
- public boolean isWriteable();
+ public boolean ready();
/**
- * Returns true if the Comet connection is blocking or non blocking and
data is available to be read.
- * If attempting to read in non blocking mode and this flag is false, an
IO exception will occur.
- *
- * @see javax.servlet.ServletRequest#getInputStream()#available()>0
- * @return boolean
+ * Suspend processing of the connection until the configured timeout
occurs, or resume() is called. In
+ * parctice, this means the servlet will no longer recieve read events.
Reading should always be
+ * performed synchronously in the Tomcat threads unless the connection has
been suspended.
*/
- public boolean isReadable();
+ public void suspend();
/**
- * Will ask the servlet container to send a notify event to the servlet,
where the request can be processed
+ * Will ask the servlet container to send a generic event to the servlet,
where the request can be processed
* synchronously (for example, it is possible to use this to complete the
request after some asynchronous
- * processing is done).
- */
- public void callback();
-
- /**
- * Delay processing of the connection until the configured timeout occurs,
or callback() is called.
+ * processing is done). This also resumes read events if they had been
disabled using suspend (it is possible
+ * to call suspend again). It is possible to call resume without calling
suspend before.
*/
- public void sleep();
+ public void resume();
}
+
+/**
+ * Returns true if data is available to be read. If attempting to read and
this flag is false,
+ * an IO exception will occur.
+ *
+ * <!--Note: If the servlet is not using isReadable, and is reading data
inside the
+ * container threads, it is not needed to call this method. Any such read will
be
+ * performed again in blocking mode.-->
+ *
+ * @see javax.servlet.ServletRequest#getInputStream()#available()>0
+ * @return boolean
+ */
+//public boolean isReadable();
Modified:
tomcat/sandbox/comet/java/org/apache/catalina/connector/CometEventImpl.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/catalina/connector/CometEventImpl.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/catalina/connector/CometEventImpl.java
(original)
+++ tomcat/sandbox/comet/java/org/apache/catalina/connector/CometEventImpl.java
Sun Jun 17 10:21:26 2007
@@ -113,39 +113,16 @@
request.setTimeout(timeout);
}
- public boolean isReadable() {
- return request.isReadable();
- }
-
- /**
- * Returns true if write notifications are disabled, or is they are
enabled and data may
- * be written to the connection (the flag becomes false when the client is
unable to accept
- * data fast enough). When the flag becomes false, the servlet must stop
writing data. If there's
- * an attempt to flush additional data to the client and data still cannot
be written immediately,
- * an IOException will be thrown. If calling this method returns false, it
will also
- * request notification when the connection becomes available for writing
again, and the
- * servlet will recieve a write event.
- *
- * @return boolean true if you can write to the response
- */
- public boolean isWriteable() {
+ public boolean ready() {
return response.isWriteable();
}
- /**
- * Will ask the servlet container to send a notify event to the servlet,
where the request can be processed
- * synchronously (for example, it is possible to use this to complete the
request after some asynchronous
- * processing is done).
- */
- public void callback() {
- request.callback();
+ public void resume() {
+ request.resume();
}
- /**
- * Delay processing of the connection until the configured timeout occurs,
or callback is called.
- */
- public void sleep() {
- request.sleep();
+ public void suspend() {
+ request.suspend();
}
public String toString() {
Modified:
tomcat/sandbox/comet/java/org/apache/catalina/connector/CoyoteAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/catalina/connector/CoyoteAdapter.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/catalina/connector/CoyoteAdapter.java
(original)
+++ tomcat/sandbox/comet/java/org/apache/catalina/connector/CoyoteAdapter.java
Sun Jun 17 10:21:26 2007
@@ -163,7 +163,7 @@
request.getEvent().setEventType(CometEvent.EventType.END);
request.getEvent().setEventSubType(null);
} else {
-
request.getEvent().setEventType(CometEvent.EventType.CALLBACK);
+
request.getEvent().setEventType(CometEvent.EventType.EVENT);
request.getEvent().setEventSubType(null);
}
} else if (status == SocketStatus.DISCONNECT) {
Modified: tomcat/sandbox/comet/java/org/apache/catalina/connector/Request.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/catalina/connector/Request.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/catalina/connector/Request.java
(original)
+++ tomcat/sandbox/comet/java/org/apache/catalina/connector/Request.java Sun
Jun 17 10:21:26 2007
@@ -2265,21 +2265,13 @@
}
- /**
- * Will ask the servlet container to send a notify event to the servlet,
where the request can be processed
- * synchronously (for example, it is possible to use this to complete the
request after some asynchronous
- * processing is done).
- */
- public void callback() {
- coyoteRequest.action(ActionCode.ACTION_COMET_CALLBACK, null);
+ public void resume() {
+ coyoteRequest.action(ActionCode.ACTION_COMET_RESUME, null);
}
- /**
- * Delay processing of the connection until the configured timeout occurs,
or callback is called.
- */
- public void sleep() {
- coyoteRequest.action(ActionCode.ACTION_COMET_SLEEP, null);
+ public void suspend() {
+ coyoteRequest.action(ActionCode.ACTION_COMET_SUSPEND, null);
}
Modified:
tomcat/sandbox/comet/java/org/apache/catalina/valves/ErrorReportValve.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/catalina/valves/ErrorReportValve.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/catalina/valves/ErrorReportValve.java
(original)
+++ tomcat/sandbox/comet/java/org/apache/catalina/valves/ErrorReportValve.java
Sun Jun 17 10:21:26 2007
@@ -104,7 +104,7 @@
Throwable throwable =
(Throwable) request.getAttribute(Globals.EXCEPTION_ATTR);
- if (response.isAppCommitted()) {
+ if (response.isCommitted()) {
return;
}
Modified: tomcat/sandbox/comet/java/org/apache/coyote/ActionCode.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/coyote/ActionCode.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/coyote/ActionCode.java (original)
+++ tomcat/sandbox/comet/java/org/apache/coyote/ActionCode.java Sun Jun 17
10:21:26 2007
@@ -159,12 +159,12 @@
/**
* Ask for a callback
*/
- public static final ActionCode ACTION_COMET_CALLBACK = new ActionCode(25);
+ public static final ActionCode ACTION_COMET_RESUME = new ActionCode(25);
/**
* Put this request to sleep (no read notifications)
*/
- public static final ActionCode ACTION_COMET_SLEEP = new ActionCode(26);
+ public static final ActionCode ACTION_COMET_SUSPEND = new ActionCode(26);
/**
* Ask for a write callback
Modified:
tomcat/sandbox/comet/java/org/apache/coyote/http11/Http11AprProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/sandbox/comet/java/org/apache/coyote/http11/Http11AprProcessor.java?view=diff&rev=548078&r1=548077&r2=548078
==============================================================================
--- tomcat/sandbox/comet/java/org/apache/coyote/http11/Http11AprProcessor.java
(original)
+++ tomcat/sandbox/comet/java/org/apache/coyote/http11/Http11AprProcessor.java
Sun Jun 17 10:21:26 2007
@@ -1219,9 +1219,10 @@
comet = true;
} else if (actionCode == ActionCode.ACTION_COMET_END) {
comet = false;
- } else if (actionCode == ActionCode.ACTION_COMET_SLEEP) {
+ } else if (actionCode == ActionCode.ACTION_COMET_SUSPEND) {
readNotifications = false;
- } else if (actionCode == ActionCode.ACTION_COMET_CALLBACK) {
+ } else if (actionCode == ActionCode.ACTION_COMET_RESUME) {
+ readNotifications = true;
endpoint.getCometPoller().add(socket, timeout, false, false);
} else if (actionCode == ActionCode.ACTION_COMET_WRITE) {
endpoint.getCometPoller().add(socket, timeout, false, true);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]