From: markt Date: Wed, 22 Jun 2011 23:29:51 +0000 (+0000) Subject: Connector refactoring X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=0edeb75a9141c773e7d9edd2e060849755cb9615;p=tomcat7.0 Connector refactoring Another small step towards SocketWrapper for NIO git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1138681 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/coyote/ajp/AjpNioProtocol.java b/java/org/apache/coyote/ajp/AjpNioProtocol.java index 6aadcebc2..9053c056e 100644 --- a/java/org/apache/coyote/ajp/AjpNioProtocol.java +++ b/java/org/apache/coyote/ajp/AjpNioProtocol.java @@ -94,8 +94,8 @@ public class AjpNioProtocol extends AbstractAjpProtocol { protected AjpNioProtocol proto; - protected ConcurrentHashMap connections = - new ConcurrentHashMap(); + protected ConcurrentHashMap, AjpNioProcessor> connections = + new ConcurrentHashMap, AjpNioProcessor>(); protected RecycledProcessors recycledProcessors = new RecycledProcessors(this); @@ -130,10 +130,10 @@ public class AjpNioProtocol extends AbstractAjpProtocol { if (log.isDebugEnabled()) log.debug("Iterating through our connections to release a socket channel:"+socket); boolean released = false; - Iterator> it = connections.entrySet().iterator(); + Iterator, AjpNioProcessor>> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry entry = it.next(); - if (entry.getKey().getIOChannel()==socket) { + java.util.Map.Entry, 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 AbstractAjpProtocol { * {@link #release(NioChannel, AjpNioProcessor)}. */ @Override - public void release(NioChannel socket) { + public void release(SocketWrapper socket) { AjpNioProcessor processor = connections.remove(socket); if (processor != null) { processor.recycle(); @@ -160,7 +160,8 @@ public class AjpNioProtocol extends AbstractAjpProtocol { } - public void release(NioChannel socket, AjpNioProcessor processor) { + public void release(SocketWrapper socket, + AjpNioProcessor processor) { connections.remove(socket); processor.recycle(); recycledProcessors.offer(processor); @@ -170,7 +171,7 @@ public class AjpNioProtocol extends AbstractAjpProtocol { public SocketState process(SocketWrapper 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 AbstractAjpProtocol { 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 AbstractAjpProtocol { // less-than-verbose logs. log.error(sm.getString("ajpprotocol.proto.error"), e); } - release(socket, processor); + release(socketWrapper, processor); return SocketState.CLOSED; } diff --git a/java/org/apache/coyote/http11/Http11NioProtocol.java b/java/org/apache/coyote/http11/Http11NioProtocol.java index 092d0f573..ed2394259 100644 --- a/java/org/apache/coyote/http11/Http11NioProtocol.java +++ b/java/org/apache/coyote/http11/Http11NioProtocol.java @@ -156,8 +156,8 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { protected Http11NioProtocol proto; - protected ConcurrentHashMap connections = - new ConcurrentHashMap(); + protected ConcurrentHashMap, Http11NioProcessor> connections = + new ConcurrentHashMap, Http11NioProcessor>(); protected RecycledProcessors recycledProcessors = new RecycledProcessors(this); @@ -192,10 +192,10 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { if (log.isDebugEnabled()) log.debug("Iterating through our connections to release a socket channel:"+socket); boolean released = false; - Iterator> it = connections.entrySet().iterator(); + Iterator, Http11NioProcessor>> it = connections.entrySet().iterator(); while (it.hasNext()) { - java.util.Map.Entry entry = it.next(); - if (entry.getKey().getIOChannel()==socket) { + java.util.Map.Entry, 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 AbstractHttp11JsseProtocol { * {@link #release(NioChannel, Http11NioProcessor)}. */ @Override - public void release(NioChannel socket) { + public void release(SocketWrapper socket) { Http11NioProcessor processor = connections.remove(socket); if (processor != null) { processor.recycle(); @@ -222,7 +222,8 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { } - public void release(NioChannel socket, Http11NioProcessor processor) { + public void release(SocketWrapper socket, + Http11NioProcessor processor) { connections.remove(socket); processor.recycle(); recycledProcessors.offer(processor); @@ -233,7 +234,7 @@ public class Http11NioProtocol extends AbstractHttp11JsseProtocol { public SocketState process(SocketWrapper 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 AbstractHttp11JsseProtocol { 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 AbstractHttp11JsseProtocol { } 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 AbstractHttp11JsseProtocol { // less-than-verbose logs. log.error(sm.getString("http11protocol.proto.error"), e); } - release(socket, processor); + release(socketWrapper, processor); return SocketState.CLOSED; } diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index 5288f9fb7..3a902a086 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -1019,7 +1019,7 @@ public class NioEndpoint extends AbstractEndpoint { } } 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 AbstractEndpoint { public interface Handler extends AbstractEndpoint.Handler { public SocketState process(SocketWrapper socket, SocketStatus status); - public void release(NioChannel socket); + public void release(SocketWrapper socket); public void release(SocketChannel socket); public SSLImplementation getSslImplementation(); }