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]