Author: markt Date: Wed Jun 22 23:29:51 2011 New Revision: 1138681 URL: http://svn.apache.org/viewvc?rev=1138681&view=rev Log: Connector refactoring Another small step towards SocketWrapper for NIO
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java?rev=1138681&r1=1138680&r2=1138681&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNioProtocol.java Wed Jun 22 23:29:51 2011 @@ -94,8 +94,8 @@ public class AjpNioProtocol extends Abst protected AjpNioProtocol proto; - protected ConcurrentHashMap<NioChannel, AjpNioProcessor> connections = - new ConcurrentHashMap<NioChannel, AjpNioProcessor>(); + protected ConcurrentHashMap<SocketWrapper<NioChannel>, AjpNioProcessor> connections = + new ConcurrentHashMap<SocketWrapper<NioChannel>, AjpNioProcessor>(); protected RecycledProcessors<AjpNioProcessor> recycledProcessors = new RecycledProcessors<AjpNioProcessor>(this); @@ -130,10 +130,10 @@ public class AjpNioProtocol extends Abst if (log.isDebugEnabled()) log.debug("Iterating through our connections to release a socket channel:"+socket); boolean released = false; - Iterator<java.util.Map.Entry<NioChannel, AjpNioProcessor>> it = connections.entrySet().iterator(); + Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>, AjpNioProcessor>> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry<NioChannel, AjpNioProcessor> entry = it.next(); - if (entry.getKey().getIOChannel()==socket) { + java.util.Map.Entry<SocketWrapper<NioChannel>, AjpNioProcessor> entry = it.next(); + if (entry.getKey().getSocket().getIOChannel()==socket) { it.remove(); AjpNioProcessor result = entry.getValue(); result.recycle(); @@ -151,7 +151,7 @@ public class AjpNioProtocol extends Abst * {@link #release(NioChannel, AjpNioProcessor)}. */ @Override - public void release(NioChannel socket) { + public void release(SocketWrapper<NioChannel> socket) { AjpNioProcessor processor = connections.remove(socket); if (processor != null) { processor.recycle(); @@ -160,7 +160,8 @@ public class AjpNioProtocol extends Abst } - public void release(NioChannel socket, AjpNioProcessor processor) { + public void release(SocketWrapper<NioChannel> socket, + AjpNioProcessor processor) { connections.remove(socket); processor.recycle(); recycledProcessors.offer(processor); @@ -170,7 +171,7 @@ public class AjpNioProtocol extends Abst public SocketState process(SocketWrapper<NioChannel> socketWrapper, SocketStatus status) { NioChannel socket = socketWrapper.getSocket(); - AjpNioProcessor processor = connections.remove(socket); + AjpNioProcessor processor = connections.remove(socketWrapper); socketWrapper.setAsync(false); //no longer check for timeout @@ -198,17 +199,17 @@ public class AjpNioProtocol 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); + connections.put(socketWrapper, processor); socketWrapper.setAsync(true); } else if (state == SocketState.OPEN){ // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. - release(socket, processor); + release(socketWrapper, processor); socket.getPoller().add(socket); } else { // Connection closed. OK to recycle the processor. - release(socket, processor); + release(socketWrapper, processor); } return state; @@ -231,7 +232,7 @@ public class AjpNioProtocol extends Abst // less-than-verbose logs. log.error(sm.getString("ajpprotocol.proto.error"), e); } - release(socket, processor); + release(socketWrapper, processor); return 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?rev=1138681&r1=1138680&r2=1138681&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java Wed Jun 22 23:29:51 2011 @@ -156,8 +156,8 @@ public class Http11NioProtocol extends A protected Http11NioProtocol proto; - protected ConcurrentHashMap<NioChannel, Http11NioProcessor> connections = - new ConcurrentHashMap<NioChannel, Http11NioProcessor>(); + protected ConcurrentHashMap<SocketWrapper<NioChannel>, Http11NioProcessor> connections = + new ConcurrentHashMap<SocketWrapper<NioChannel>, Http11NioProcessor>(); protected RecycledProcessors<Http11NioProcessor> recycledProcessors = new RecycledProcessors<Http11NioProcessor>(this); @@ -192,10 +192,10 @@ public class Http11NioProtocol extends A if (log.isDebugEnabled()) log.debug("Iterating through our connections to release a socket channel:"+socket); boolean released = false; - Iterator<java.util.Map.Entry<NioChannel, Http11NioProcessor>> it = connections.entrySet().iterator(); + Iterator<java.util.Map.Entry<SocketWrapper<NioChannel>, Http11NioProcessor>> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry<NioChannel, Http11NioProcessor> entry = it.next(); - if (entry.getKey().getIOChannel()==socket) { + java.util.Map.Entry<SocketWrapper<NioChannel>, Http11NioProcessor> entry = it.next(); + if (entry.getKey().getSocket().getIOChannel()==socket) { it.remove(); Http11NioProcessor result = entry.getValue(); result.recycle(); @@ -213,7 +213,7 @@ public class Http11NioProtocol extends A * {@link #release(NioChannel, Http11NioProcessor)}. */ @Override - public void release(NioChannel socket) { + public void release(SocketWrapper<NioChannel> socket) { Http11NioProcessor processor = connections.remove(socket); if (processor != null) { processor.recycle(); @@ -222,7 +222,8 @@ public class Http11NioProtocol extends A } - public void release(NioChannel socket, Http11NioProcessor processor) { + public void release(SocketWrapper<NioChannel> socket, + Http11NioProcessor processor) { connections.remove(socket); processor.recycle(); recycledProcessors.offer(processor); @@ -233,7 +234,7 @@ public class Http11NioProtocol extends A public SocketState process(SocketWrapper<NioChannel> socketWrapper, SocketStatus status) { NioChannel socket = socketWrapper.getSocket(); - Http11NioProcessor processor = connections.remove(socket); + Http11NioProcessor processor = connections.remove(socketWrapper); socketWrapper.setAsync(false); //no longer check for timeout @@ -274,7 +275,7 @@ 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); + connections.put(socketWrapper, processor); if (processor.isAsync()) { socketWrapper.setAsync(true); @@ -292,11 +293,11 @@ public class Http11NioProtocol extends A } else if (state == SocketState.OPEN){ // In keep-alive but between requests. OK to recycle // processor. Continue to poll for the next request. - release(socket, processor); + release(socketWrapper, processor); socket.getPoller().add(socket); } else { // Connection closed. OK to recycle the processor. - release(socket, processor); + release(socketWrapper, processor); } return state; @@ -319,7 +320,7 @@ public class Http11NioProtocol extends A // less-than-verbose logs. log.error(sm.getString("http11protocol.proto.error"), e); } - release(socket, processor); + release(socketWrapper, processor); return SocketState.CLOSED; } 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?rev=1138681&r1=1138680&r2=1138681&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Jun 22 23:29:51 2011 @@ -1019,7 +1019,7 @@ public class NioEndpoint extends Abstrac } } key.attach(null); - if (ka!=null) handler.release(ka.getChannel()); + if (ka!=null) handler.release(ka); else handler.release((SocketChannel)key.channel()); if (key.isValid()) key.cancel(); if (key.channel().isOpen()) { @@ -1487,7 +1487,7 @@ public class NioEndpoint extends Abstrac public interface Handler extends AbstractEndpoint.Handler { public SocketState process(SocketWrapper<NioChannel> socket, SocketStatus status); - public void release(NioChannel socket); + public void release(SocketWrapper<NioChannel> socket); public void release(SocketChannel socket); public SSLImplementation getSslImplementation(); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org