Author: fhanik Date: Tue May 29 13:26:49 2007 New Revision: 542644 URL: http://svn.apache.org/viewvc?view=rev&rev=542644 Log: Make the new way of handling processors work with the ability to read headers in a non blocking way
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java tomcat/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?view=diff&rev=542644&r1=542643&r2=542644 ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue May 29 13:26:49 2007 @@ -955,7 +955,8 @@ } } else { if ( recycle ) recycle(); - return (openSocket) ? SocketState.OPEN : SocketState.CLOSED; + //return (openSocket) ? (SocketState.OPEN) : SocketState.CLOSED; + return (openSocket) ? (recycle?SocketState.OPEN:SocketState.LONG) : SocketState.CLOSED; } } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java?view=diff&rev=542644&r1=542643&r2=542644 ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Tue May 29 13:26:49 2007 @@ -622,6 +622,14 @@ public void releaseCaches() { recycledProcessors.clear(); } + + public void release(NioChannel socket) { + Http11NioProcessor result = connections.remove(socket); + if ( result != null ) { + result.recycle(); + recycledProcessors.offer(result); + } + } public SocketState event(NioChannel socket, SocketStatus status) { Http11NioProcessor result = connections.get(socket); @@ -672,6 +680,8 @@ public SocketState process(NioChannel socket) { Http11NioProcessor processor = null; try { + processor = connections.remove(socket); + if (processor == null) { processor = recycledProcessors.poll(); } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java?view=diff&rev=542644&r1=542643&r2=542644 ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java Tue May 29 13:26:49 2007 @@ -99,7 +99,7 @@ socket.getPoller().addEvent( new Runnable() { public void run() { - key.cancel(); + socket.getPoller().cancelledKey(key,SocketStatus.ERROR,false); } }); } 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=542644&r1=542643&r2=542644 ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Tue May 29 13:26:49 2007 @@ -1393,6 +1393,7 @@ processSocket(ka.getChannel(), status, false);//don't dispatch if the lines below are cancelling the key if (status == SocketStatus.TIMEOUT ) return; // don't close on comet timeout } + handler.release(ka.getChannel()); if (key.isValid()) key.cancel(); if (key.channel().isOpen()) try {key.channel().close();}catch (Exception ignore){} try {ka.channel.close(true);}catch (Exception ignore){} @@ -1922,6 +1923,7 @@ public SocketState process(NioChannel socket); public SocketState event(NioChannel socket, SocketStatus status); public void releaseCaches(); + public void release(NioChannel socket); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]