Author: fhanik Date: Thu May 10 04:30:29 2007 New Revision: 536830 URL: http://svn.apache.org/viewvc?view=rev&rev=536830 Log: New proposed API calls for Comet
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometEvent.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CometEventImpl.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometEvent.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometEvent.java?view=diff&rev=536830&r1=536829&r2=536830 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometEvent.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/CometEvent.java Thu May 10 04:30:29 2007 @@ -66,8 +66,11 @@ * 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. + * NOTIFY - An event that the CometProcessor registered for has occurred. + * The notify event will only be thrown if CometEvent.register has been + * invoked and the CometProcessor has registered itself to receive certain notification */ - public enum EventType {BEGIN, READ, END, ERROR} + public enum EventType {BEGIN, READ, END, ERROR, NOTIFY} /** @@ -79,6 +82,8 @@ * 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) + * NOW - instant notification from the container (sub type of NOTIFY) + * WRITE - notification that */ public enum EventSubType { TIMEOUT, CLIENT_DISCONNECT, IOEXCEPTION, WEBAPP_RELOAD, SERVER_SHUTDOWN, SESSION_END } @@ -101,6 +106,7 @@ * Returns the event type. * * @return EventType + * @see #EventType */ public EventType getEventType(); @@ -108,6 +114,7 @@ * Returns the sub type of this event. * * @return EventSubType + * @see #EventSubType */ public EventSubType getEventSubType(); @@ -143,5 +150,90 @@ */ public void setTimeout(int timeout) throws IOException, ServletException, UnsupportedOperationException; + + /** + * Option bit set for allowing non blocking IO + * when reading from the request or writing to the response + * @see #configure(int) + */ + public static final int COMET_NON_BLOCKING = 0x0001; + + /** + * Option bit set to not register for any IO events + * Connections can be reregistered for IO events using the + * #register(int) method. + * @see #configure(int) + * @see #register(int) + */ + public static final int COMET_NO_IO = 0x0002; + /** + * Configures the connection for desired IO options. + * By default a Comet connection is configured for <br/> + * a) Blocking IO - standard servlet usage<br/> + * b) Register for READ events when data arrives<br/> + * Tomcat Comet allows you to configure for additional options:<br/> + * the <code>COMET_NON_BLOCKING</code> bit signals whether writing and reading from the request + * or writing to the response will be non blocking.<br/> + * the <code>COMET_NO_IO</code> bit signals the container that you are not interested in + * receiving any IO events from the container. + * @param cometOptions int - the option bit set, see #COMET_NON_BLOCKING and #COMET_NO_IO + * @throws IOException - + * @throws ServletException + * @throws IllegalStateException - if this method is invoked outside of the BEGIN event + */ + public void configure(int cometOptions) + throws IOException, ServletException, IllegalStateException; + + /** + * notification bit to receive an event + * immediately, the event will be NOTIFY/WRITE + * @see #register(int) + */ + public static final int OP_NOW = 0x001; + + /** + * notification bit to receive an event when + * data has arrived on the connection + * Event will be READ + * @see #register(int) + * @see CometProcessor#event(CometEvent) + */ + public static final int OP_READ = 0x004; + + /** + * notification bit to receive an event + * when the Comet connection is writable + * @see #register(int) + * @see #isWritable + * @see CometProcessor#event(CometEvent) + * + */ + public static final int OP_WRITE = 0x004; + + /** + * Registers the Comet connection with the container for notifications. + * These could be notifications + * @param notificationOptions int + * @throws IOException + * @throws ServletException + * @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. + */ + public void register(int notificationOptions) + throws IOException, ServletException, IllegalStateException; + + /** + * Returns true if the Comet connection is blocking or non blocking and you can write + * without blocking data to the response + * @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 + * @see javax.servlet.ServletRequest#getInputStream()#available()>0 + * @return boolean + */ + public boolean isReadable(); } Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CometEventImpl.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CometEventImpl.java?view=diff&rev=536830&r1=536829&r2=536830 ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CometEventImpl.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/CometEventImpl.java Thu May 10 04:30:29 2007 @@ -120,5 +120,23 @@ throw new UnsupportedOperationException(); } } + + public boolean isReadable() { + throw new UnsupportedOperationException(); + } + + public boolean isWriteable() { + throw new UnsupportedOperationException(); + } + + public void configure(int cometOptions) + throws IOException, ServletException, IllegalStateException { + throw new UnsupportedOperationException(); + } + + public void register(int notificationOptions) + throws IOException, ServletException, IllegalStateException { + throw new UnsupportedOperationException(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]