Author: markt
Date: Wed Jun 13 16:00:57 2012
New Revision: 1349933

URL: http://svn.apache.org/viewvc?rev=1349933&view=rev
Log:
Simplify the APR poller now per socket timeouts are supported

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1342029

Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1349933&r1=1349932&r2=1349933&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed 
Jun 13 16:00:57 2012
@@ -1094,17 +1094,15 @@ public class AprEndpoint extends Abstrac
         // Need two pollsets since the socketTimeout and the keep-alive timeout
         // can have different values.
         private long connectionPollset = 0;
-        private long keepAlivePollset = 0;
         private long pool = 0;
         private long[] desc;
 
         private long[] addSocket;
-        private boolean[] addSocketKeepAlive;
+        private int[] addSocketTimeout;
 
         private volatile int addCount = 0;
 
         private boolean comet = true;
-        private boolean separateKeepAlive = false;
 
         protected volatile int keepAliveCount = 0;
         public int getKeepAliveCount() { return keepAliveCount; }
@@ -1120,35 +1118,20 @@ public class AprEndpoint extends Abstrac
         protected void init() {
             pool = Pool.create(serverSockPool);
             int size = getMaxConnections() / pollerThreadCount;
-            int keepAliveTimeout = getKeepAliveTimeout();
             int socketTimeout = socketProperties.getSoTimeout();
-            if (keepAliveTimeout != socketTimeout && !comet) {
-                separateKeepAlive = true;
-            }
             connectionPollset = allocatePoller(size, pool, socketTimeout);
-            if (separateKeepAlive) {
-                keepAlivePollset = allocatePoller(size, pool, 
keepAliveTimeout);
-            }
             if (connectionPollset == 0 && size > 1024) {
                 size = 1024;
                 connectionPollset = allocatePoller(size, pool, socketTimeout);
-                if (separateKeepAlive) {
-                    keepAlivePollset =
-                        allocatePoller(size, pool, keepAliveTimeout);
-                }
             }
             if (connectionPollset == 0) {
                 size = 62;
                 connectionPollset = allocatePoller(size, pool, socketTimeout);
-                if (separateKeepAlive) {
-                    keepAlivePollset =
-                        allocatePoller(size, pool, keepAliveTimeout);
-                }
             }
             desc = new long[size * 2];
             keepAliveCount = 0;
             addSocket = new long[size];
-            addSocketKeepAlive = new boolean[size];
+            addSocketTimeout= new int[size];
             addCount = 0;
         }
 
@@ -1165,11 +1148,8 @@ public class AprEndpoint extends Abstrac
                     destroySocket(addSocket[i]);
                 }
             }
-            // Close all sockets still in the pollers
+            // Close all sockets still in the poller
             closePollset(connectionPollset);
-            if (separateKeepAlive) {
-                closePollset(keepAlivePollset);
-            }
             Pool.destroy(pool);
             keepAliveCount = 0;
             addCount = 0;
@@ -1218,7 +1198,11 @@ public class AprEndpoint extends Abstrac
                     return;
                 }
                 addSocket[addCount] = socket;
-                addSocketKeepAlive[addCount] = keepAlive;
+                if (keepAlive) {
+                    addSocketTimeout[addCount] = getKeepAliveTimeout();
+                } else {
+                    addSocketTimeout[addCount] = getSoTimeout();
+                }
                 addCount++;
                 this.notify();
             }
@@ -1270,14 +1254,10 @@ public class AprEndpoint extends Abstrac
                             int successCount = 0;
                             try {
                                 for (int i = (addCount - 1); i >= 0; i--) {
-                                    int rv;
-                                    if (separateKeepAlive && 
addSocketKeepAlive[i]) {
-                                        rv = Poll.add(keepAlivePollset,
-                                                addSocket[i], Poll.APR_POLLIN);
-                                    } else {
-                                        rv = Poll.add(connectionPollset,
-                                                addSocket[i], Poll.APR_POLLIN);
-                                    }
+                                    int rv = Poll.addWithTimeout(
+                                            connectionPollset, addSocket[i],
+                                            Poll.APR_POLLIN,
+                                            addSocketTimeout[i] * 1000);
                                     if (rv == Status.APR_SUCCESS) {
                                         successCount++;
                                     } else {
@@ -1301,9 +1281,6 @@ public class AprEndpoint extends Abstrac
                     if (doPoll(connectionPollset)) {
                         continue;
                     }
-                    if (separateKeepAlive && doPoll(keepAlivePollset)) {
-                        continue;
-                    }
 
                     // Check timeouts (much less frequently that polling)
                     if (maintainTime > 1000000L && running) {
@@ -1311,9 +1288,6 @@ public class AprEndpoint extends Abstrac
                         if (socketProperties.getSoTimeout() > 0) {
                             doTimeout(connectionPollset);
                         }
-                        if (separateKeepAlive) {
-                            doTimeout(keepAlivePollset);
-                        }
                     }
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to