Author: fhanik
Date: Mon Jun 11 04:53:47 2007
New Revision: 546108
URL: http://svn.apache.org/viewvc?view=rev&rev=546108
Log:
Added some doco
Modified:
tomcat/trunk/java/org/apache/catalina/CometEvent.java
tomcat/trunk/java/org/apache/catalina/CometProcessor.java
Modified: tomcat/trunk/java/org/apache/catalina/CometEvent.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/CometEvent.java?view=diff&rev=546108&r1=546107&r2=546108
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/CometEvent.java (original)
+++ tomcat/trunk/java/org/apache/catalina/CometEvent.java Mon Jun 11 04:53:47
2007
@@ -26,7 +26,8 @@
/**
* The CometEvent interface.
- * A comet event is the contract between the servlet container and the servlet
implementation(CometProcessor) for handling comet connections.
+ * A comet event is the contract between the servlet container and the servlet
+ * implementation(CometProcessor) for handling comet connections.
*
* @see CometProcessor
* @author Filip Hanik
@@ -68,6 +69,7 @@
* 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.
+ * When an error event is invoked, the close() method on the CometEvent
object.
* CALLBACK - Callback will be called by the container after the comet
processor
* has registered for the OP_CALLBACK operation.
* This allows you get an event instantly, and you can perform IO actions
@@ -128,10 +130,18 @@
* client a notice that the server has no more data to send as part of this
* request. The servlet should perform any needed cleanup as if it had
recieved
* an END or ERROR event.
+ * Invoking this method during a event, will cause the session to close
+ * immediately after the event method has finished.
+ * Invoking this method asynchrously will not cause the session to close
+ * until another event occurred, most likely a timeout.
+ * If you wish to signal to the container
+ * that the session should end sooner rather than later when this method
is invoked
+ * asycnhronously, then issue a
+ * register(OP_CALLBACK) immediately after this method has been invoked.
*
- * @throws IOException if an IO exception occurs
+ * @see #register(CometOperation)
*/
- public void close() throws IOException;
+ public void close();
/**
* Sets the timeout for this Comet connection. Please NOTE, that the
implementation
@@ -145,19 +155,19 @@
* This method should not be called asynchronously, as that will have no
effect.
*
* @param timeout The timeout in milliseconds for this connection, must be
a positive value, larger than 0
- * @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(int timeout)
- throws IOException, ServletException, UnsupportedOperationException;
+ throws ServletException, UnsupportedOperationException;
/**
+ * Enumeration for a comet connection state.
+ * A comet session can be blocking or non blocking.
* COMET_NON_BLOCKING<br/>
* Option bit set for allowing non blocking IO
* when reading from the request or writing to the response<br/>
@@ -201,11 +211,13 @@
public enum CometOperation {OP_CALLBACK, OP_READ, OP_WRITE};
/**
- * Registers the Comet connection with the container for IO notifications.
- * These could be notifications
+ * Registers the Comet connection with the container for IO and event
notifications.
+ * The different notifications are defined by the
* @param operations
* @throws IllegalStateException - if you are trying to register with a
socket that already is registered
* or if the operation you are trying to register is invalid.
+ * @see #EventType
+ * @see #CometOperation
*/
public void register(CometOperation... operations) throws
IllegalStateException;
@@ -226,13 +238,23 @@
/**
* Returns true if the Comet connection is blocking or non blocking and
you can write
- * without blocking data to the response
+ * without blocking data to the response. The amount of data you can write
is often related to
+ * the size of the sockets network buffer.
+ * This method returns true if the last write attempted was able to write
the entire data set.
+ * This method is not useful when using blocking writes, as it will always
return true
* @return boolean - true if you can write to the response
*/
public boolean isWriteable();
/**
* Returns true if the Comet connection is blocking or non blocking and
data is available to be read
+ * The logic for isReadable is as follows:
+ * First we check the inputstream/reader and see if there is data
available to the comet processor.
+ * If that returns false, we check to see if the underlying tomcat buffer
is holding any data, and
+ * if that returns false, we issue a quick non blocking read on the
socket, to see if
+ * there is data in the network buffer.
+ * The operation can be summarized as:
+ * available()>0 || tomcat-buffer.size>0 || socket.read>0
* @see javax.servlet.ServletRequest#getInputStream()#available()>0
* @return boolean
*/
Modified: tomcat/trunk/java/org/apache/catalina/CometProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/CometProcessor.java?view=diff&rev=546108&r1=546107&r2=546108
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/CometProcessor.java (original)
+++ tomcat/trunk/java/org/apache/catalina/CometProcessor.java Mon Jun 11
04:53:47 2007
@@ -49,6 +49,8 @@
* @param event The Comet event that will be processed
* @throws IOException
* @throws ServletException
+ * @see CometEvent
+ * @see CometEvent#EventType
*/
public void event(CometEvent event)
throws IOException, ServletException;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]