Author: fhanik Date: Tue May 29 03:44:51 2007 New Revision: 542482 URL: http://svn.apache.org/viewvc?view=rev&rev=542482 Log: Add the additional SocketStatus event types, its up to the connector implementation to send the correct one. Currently the functionality is backwards compatible as OPEN changed to OPEN_READ
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java 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=542482&r1=542481&r2=542482 ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue May 29 03:44:51 2007 @@ -123,7 +123,27 @@ try { if ( event!=null && (event instanceof CometEventImpl)) ((CometEventImpl)event).setWorkerThread(); - if (status == SocketStatus.OPEN) { + if (status == SocketStatus.OPEN_CALLBACK) { + if (response.isClosed()) { + // The event has been closed asynchronously, so call end instead of + // read to cleanup the pipeline + request.getEvent().setEventType(CometEvent.EventType.END); + request.getEvent().setEventSubType(null); + } else { + request.getEvent().setEventType(CometEvent.EventType.CALLBACK); + request.getEvent().setEventSubType(null); + } + } else if (status == SocketStatus.OPEN_WRITE) { + if (response.isClosed()) { + // The event has been closed asynchronously, so call end instead of + // read to cleanup the pipeline + request.getEvent().setEventType(CometEvent.EventType.END); + request.getEvent().setEventSubType(null); + } else { + request.getEvent().setEventType(CometEvent.EventType.WRITE); + request.getEvent().setEventSubType(null); + } + } else if (status == SocketStatus.OPEN_READ) { if (response.isClosed()) { // The event has been closed asynchronously, so call end instead of // read to cleanup the pipeline @@ -274,7 +294,7 @@ if (!response.isClosed() && !response.isError()) { if (request.getAvailable()) { // Invoke a read event right away if there are available bytes - if (event(req, res, SocketStatus.OPEN)) { + if (event(req, res, SocketStatus.OPEN_READ)) { comet = true; res.action(ActionCode.ACTION_COMET_BEGIN, null); } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?view=diff&rev=542482&r1=542481&r2=542482 ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Tue May 29 03:44:51 2007 @@ -1301,7 +1301,7 @@ // Check for failed sockets and hand this socket off to a worker if (((desc[n*2] & Poll.APR_POLLHUP) == Poll.APR_POLLHUP) || ((desc[n*2] & Poll.APR_POLLERR) == Poll.APR_POLLERR) - || (comet && (!processSocket(desc[n*2+1], SocketStatus.OPEN))) + || (comet && (!processSocket(desc[n*2+1], SocketStatus.OPEN_READ))) || (!comet && (!processSocket(desc[n*2+1])))) { // Close socket and clear pool if (comet) { Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?view=diff&rev=542482&r1=542481&r2=542482 ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Tue May 29 03:44:51 2007 @@ -1501,7 +1501,7 @@ //check if thread is available if ( isWorkerAvailable() ) { unreg(sk, attachment, sk.readyOps()); - if (!processSocket(channel, SocketStatus.OPEN)) + if (!processSocket(channel, SocketStatus.OPEN_READ)) processSocket(channel, SocketStatus.DISCONNECT); } else { result = false; Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java?view=diff&rev=542482&r1=542481&r2=542482 ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketStatus.java Tue May 29 03:44:51 2007 @@ -23,5 +23,5 @@ * @author remm */ public enum SocketStatus { - OPEN, STOP, TIMEOUT, DISCONNECT, ERROR + OPEN_READ, OPEN_WRITE, OPEN_CALLBACK, STOP, TIMEOUT, DISCONNECT, ERROR } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]