Author: markt Date: Fri Jul 8 16:19:28 2011 New Revision: 1144375 URL: http://svn.apache.org/viewvc?rev=1144375&view=rev Log: Yet more protocol alignment (with an eye to aligning with AJP)
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1144375&r1=1144374&r2=1144375&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Fri Jul 8 16:19:28 2011 @@ -265,15 +265,9 @@ public class Http11AprProtocol extends A if (state == SocketState.LONG) { // In the middle of processing a request/response. Keep the - // socket associated with the processor. - connections.put(socket.getSocket(), processor); - - if (processor.isAsync()) { - socket.setAsync(true); - } else if (processor.comet) { - ((AprEndpoint) proto.endpoint).getCometPoller().add( - socket.getSocket().longValue()); - } + // socket associated with the processor. Exact requirements + // depend on type of long poll + longPoll(socket, processor); } else if (state == SocketState.OPEN){ // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. @@ -300,8 +294,7 @@ public class Http11AprProtocol extends A // any other exception or error is odd. Here we log it // with "ERROR" level, so it will show up even on // less-than-verbose logs. - Http11AprProtocol.log.error( - sm.getString("http11protocol.proto.error"), e); + log.error(sm.getString("http11protocol.proto.error"), e); } release(socket, processor, true, false); return SocketState.CLOSED; @@ -313,6 +306,18 @@ public class Http11AprProtocol extends A // NOOP for APR } + private void longPoll(SocketWrapper<Long> socket, + Http11AprProcessor processor) { + connections.put(socket.getSocket(), processor); + + if (processor.isAsync()) { + socket.setAsync(true); + } else if (processor.comet) { + ((AprEndpoint) proto.endpoint).getCometPoller().add( + socket.getSocket().longValue()); + } + } + protected Http11AprProcessor createProcessor() { Http11AprProcessor processor = new Http11AprProcessor( proto.getMaxHttpHeaderSize(), (AprEndpoint)proto.endpoint, 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?rev=1144375&r1=1144374&r2=1144375&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Fri Jul 8 16:19:28 2011 @@ -280,22 +280,9 @@ public class Http11NioProtocol extends A if (state == SocketState.LONG) { // In the middle of processing a request/response. Keep the - // socket associated with the processor. - connections.put(socket, processor); - - if (processor.isAsync()) { - socket.setAsync(true); - } else { - // Either: - // - this is comet request - // - the request line/headers have not been completely - // read - SelectionKey key = socket.getSocket().getIOChannel().keyFor( - socket.getSocket().getPoller().getSelector()); - key.interestOps(SelectionKey.OP_READ); - ((KeyAttachment) socket).interestOps( - SelectionKey.OP_READ); - } + // socket associated with the processor. Exact requirements + // depend on type of long poll + longPoll(socket, processor); } else if (state == SocketState.OPEN){ // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. @@ -343,6 +330,25 @@ public class Http11NioProtocol extends A } + private void longPoll(SocketWrapper<NioChannel> socket, + Http11NioProcessor processor) { + connections.put(socket, processor); + + if (processor.isAsync()) { + socket.setAsync(true); + } else { + // Either: + // - this is comet request + // - the request line/headers have not been completely + // read + SelectionKey key = socket.getSocket().getIOChannel().keyFor( + socket.getSocket().getPoller().getSelector()); + key.interestOps(SelectionKey.OP_READ); + ((KeyAttachment) socket).interestOps( + SelectionKey.OP_READ); + } + } + public Http11NioProcessor createProcessor() { Http11NioProcessor processor = new Http11NioProcessor( proto.getMaxHttpHeaderSize(), (NioEndpoint)proto.endpoint, Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java?rev=1144375&r1=1144374&r2=1144375&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Protocol.java Fri Jul 8 16:19:28 2011 @@ -166,7 +166,7 @@ public class Http11Protocol extends Abst processor = createProcessor(); } - initSsl(socket,processor); + initSsl(socket, processor); SocketState state = SocketState.CLOSED; do { @@ -185,8 +185,9 @@ public class Http11Protocol extends Abst if (state == SocketState.LONG) { // In the middle of processing a request/response. Keep the - // socket associated with the processor. - connections.put(socket, processor); + // socket associated with the processor. Exact requirements + // depend on type of long poll + longPoll(socket, processor); } else if (state == SocketState.OPEN){ // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. @@ -231,6 +232,11 @@ public class Http11Protocol extends Abst } + private void longPoll(SocketWrapper<Socket> socket, + Http11Processor processor) { + connections.put(socket, processor); + } + protected Http11Processor createProcessor() { Http11Processor processor = new Http11Processor( proto.getMaxHttpHeaderSize(), (JIoEndpoint)proto.endpoint, --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org