Author: kkolinko Date: Tue Jun 17 19:19:20 2014 New Revision: 1603266 URL: http://svn.apache.org/r1603266 Log: Followup to r1601583: Use Collections.newSetFromMap to convert ConcurrentHashMap into a Set.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java?rev=1603266&r1=1603265&r2=1603266&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java Tue Jun 17 19:19:20 2014 @@ -21,8 +21,10 @@ import java.io.OutputStreamWriter; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; +import java.util.Set; import java.util.StringTokenizer; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; @@ -122,9 +124,7 @@ public abstract class AbstractEndpoint<S // Ignore } long now = System.currentTimeMillis(); - Iterator<SocketWrapper<S>> sockets = waitingRequests.keySet().iterator(); - while (sockets.hasNext()) { - SocketWrapper<S> socket = sockets.next(); + for (SocketWrapper<S> socket : waitingRequests) { long access = socket.getLastAccess(); if (socket.getTimeout() > 0 && (now - access) > socket.getTimeout()) { processSocket(socket, SocketStatus.TIMEOUT, true); @@ -1026,8 +1026,9 @@ public abstract class AbstractEndpoint<S } } - protected ConcurrentHashMap<SocketWrapper<S>, SocketWrapper<S>> waitingRequests = - new ConcurrentHashMap<>(); + + protected final Set<SocketWrapper<S>> waitingRequests = Collections + .newSetFromMap(new ConcurrentHashMap<SocketWrapper<S>, Boolean>()); /** Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1603266&r1=1603265&r2=1603266&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Tue Jun 17 19:19:20 2014 @@ -870,7 +870,7 @@ public class AprEndpoint extends Abstrac // result of calling AsyncContext.dispatch() from a non-container // thread synchronized (socket) { - if (waitingRequests.remove(socket) != null) { + if (waitingRequests.remove(socket)) { SocketProcessor proc = new SocketProcessor(socket, status); Executor executor = getExecutor(); if (dispatch && executor != null) { @@ -2324,7 +2324,7 @@ public class AprEndpoint extends Abstrac } else if (state == Handler.SocketState.LONG) { socket.access(); if (socket.isAsync()) { - waitingRequests.put(socket, socket); + waitingRequests.add(socket); } } } @@ -2386,7 +2386,7 @@ public class AprEndpoint extends Abstrac } else if (state == Handler.SocketState.LONG) { socket.access(); if (socket.isAsync()) { - waitingRequests.put(socket, socket); + waitingRequests.add(socket); } } else if (state == Handler.SocketState.ASYNC_END) { socket.access(); Modified: tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java?rev=1603266&r1=1603265&r2=1603266&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/JIoEndpoint.java Tue Jun 17 19:19:20 2014 @@ -298,7 +298,7 @@ public class JIoEndpoint extends Abstrac launch = true; } else if (state == SocketState.LONG) { socket.access(); - waitingRequests.put(socket, socket); + waitingRequests.add(socket); } } finally { if (launch) { @@ -514,7 +514,7 @@ public class JIoEndpoint extends Abstrac // result of calling AsyncContext.dispatch() from a non-container // thread synchronized (socket) { - if (waitingRequests.remove(socket) != null) { + if (waitingRequests.remove(socket)) { SocketProcessor proc = new SocketProcessor(socket,status); Executor executor = getExecutor(); if (dispatch && executor != null) { Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1603266&r1=1603265&r2=1603266&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Tue Jun 17 19:19:20 2014 @@ -388,7 +388,7 @@ public class Nio2Endpoint extends Abstra @Override public void run() { // Timeout any pending async request - for (SocketWrapper<Nio2Channel> socket : waitingRequests.keySet()) { + for (SocketWrapper<Nio2Channel> socket : waitingRequests) { processSocket(socket, SocketStatus.TIMEOUT, false); } // Then close all active connections if any remains @@ -849,11 +849,11 @@ public class Nio2Endpoint extends Abstra }; public void addTimeout(SocketWrapper<Nio2Channel> socket) { - waitingRequests.put(socket, socket); + waitingRequests.add(socket); } public boolean removeTimeout(SocketWrapper<Nio2Channel> socket) { - return waitingRequests.remove(socket) != null; + return waitingRequests.remove(socket); } public static void startInline() { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org