Author: markt
Date: Fri Aug 16 11:08:25 2013
New Revision: 1514655

URL: http://svn.apache.org/r1514655
Log:
Back-porting JSR-356
Need to be able to register sockets for read and/or write for the APR/native 
Poller to implement non-blocking IO

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java
    tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java

Modified: tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java?rev=1514655&r1=1514654&r2=1514655&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java Fri Aug 
16 11:08:25 2013
@@ -136,7 +136,7 @@ public class AjpAprProtocol extends Abst
                 ((AprEndpoint)proto.endpoint).getPoller().add(
                         socket.getSocket().longValue(),
                         proto.endpoint.getKeepAliveTimeout(),
-                        AprEndpoint.Poller.FLAGS_READ);
+                        true, false);
             }
         }
 

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1514655&r1=1514654&r2=1514655&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java 
Fri Aug 16 11:08:25 2013
@@ -250,7 +250,7 @@ public class Http11AprProtocol extends A
                 ((AprEndpoint)proto.endpoint).getPoller().add(
                         socket.getSocket().longValue(),
                         proto.endpoint.getKeepAliveTimeout(),
-                        AprEndpoint.Poller.FLAGS_READ);
+                        true, false);
             }
         }
 
@@ -274,7 +274,7 @@ public class Http11AprProtocol extends A
                     ((AprEndpoint) proto.endpoint).getCometPoller().add(
                             socket.getSocket().longValue(),
                             proto.endpoint.getSoTimeout(),
-                            AprEndpoint.Poller.FLAGS_READ);
+                            true, false);
                 } else {
                     // Process a STOP directly
                     ((AprEndpoint) proto.endpoint).processSocket(
@@ -286,7 +286,7 @@ public class Http11AprProtocol extends A
                 ((AprEndpoint) proto.endpoint).getPoller().add(
                         socket.getSocket().longValue(),
                         processor.getUpgradeInbound().getReadTimeout(),
-                        AprEndpoint.Poller.FLAGS_READ);
+                        true, false);
             }
         }
 

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=1514655&r1=1514654&r2=1514655&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 Fri 
Aug 16 11:08:25 2013
@@ -1230,18 +1230,32 @@ public class AprEndpoint extends Abstrac
             }
         }
 
+        
         /**
          * Add specified socket and associated pool to the poller. The socket
          * will be added to a temporary array, and polled first after a maximum
          * amount of time equal to pollTime (in most cases, latency will be 
much
-         * lower, however).
+         * lower, however). Note: If both read and write are false, the socket
+         * will only be checked for timeout; if the socket was already present
+         * in the poller, a callback event will be generated and the socket 
will
+         * be removed from the poller.
          *
-         * @param socket    to add to the poller
-         * @param timeout   read timeout (in milliseconds) to use with this
-         *                  socket. Use -1 for infinite timeout
-         * @param flags     flags that define the events that are to be polled
-         *                  for
+         * @param socket to add to the poller
+         * @param timeout to use for this connection
+         * @param read to do read polling
+         * @param write to do write polling
          */
+        public void add(long socket, int timeout, boolean read, boolean write) 
{
+            add(socket, timeout,
+                    (read ? Poll.APR_POLLIN : 0) |
+                    (write ? Poll.APR_POLLOUT : 0));
+        }
+
+        /**
+         * @deprecated  Use {@link #add(long, int, boolean, boolean)}. This
+         *              method will be made private in Tomcat 8
+         */
+        @Deprecated
         public void add(long socket, int timeout, int flags) {
             synchronized (this) {
                 // Add socket to the list. Newly added sockets will wait



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

Reply via email to