Author: markt Date: Tue Oct 16 22:16:18 2012 New Revision: 1399022 URL: http://svn.apache.org/viewvc?rev=1399022&view=rev Log: Expose the option to register an APR Socket for write as well as read events. This is currently unused but will be required by the Servlet 3.1 non-blocking IO code.
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java?rev=1399022&r1=1399021&r2=1399022&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProtocol.java Tue Oct 16 22:16:18 2012 @@ -135,7 +135,8 @@ public class AjpAprProtocol extends Abst if (addToPoller) { ((AprEndpoint)proto.endpoint).getPoller().add( socket.getSocket().longValue(), - proto.endpoint.getKeepAliveTimeout()); + proto.endpoint.getKeepAliveTimeout(), + AprEndpoint.Poller.FLAGS_READ); } } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java?rev=1399022&r1=1399021&r2=1399022&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProtocol.java Tue Oct 16 22:16:18 2012 @@ -251,7 +251,8 @@ public class Http11AprProtocol extends A if (addToPoller && proto.endpoint.isRunning()) { ((AprEndpoint)proto.endpoint).getPoller().add( socket.getSocket().longValue(), - proto.endpoint.getKeepAliveTimeout()); + proto.endpoint.getKeepAliveTimeout(), + AprEndpoint.Poller.FLAGS_READ); } } @@ -296,7 +297,8 @@ public class Http11AprProtocol extends A if (proto.endpoint.isRunning()) { ((AprEndpoint) proto.endpoint).getCometPoller().add( socket.getSocket().longValue(), - proto.endpoint.getSoTimeout()); + proto.endpoint.getSoTimeout(), + AprEndpoint.Poller.FLAGS_READ); } else { // Process a STOP directly ((AprEndpoint) proto.endpoint).processSocket( @@ -307,7 +309,8 @@ public class Http11AprProtocol extends A // Upgraded ((AprEndpoint) proto.endpoint).getPoller().add( socket.getSocket().longValue(), - (processor.getUpgradeInbound().getReadTimeout())); + processor.getUpgradeInbound().getReadTimeout(), + AprEndpoint.Poller.FLAGS_READ); } } 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=1399022&r1=1399021&r2=1399022&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Tue Oct 16 22:16:18 2012 @@ -1121,6 +1121,9 @@ public class AprEndpoint extends Abstrac */ public class Poller extends Thread { + public static final int FLAGS_READ = Poll.APR_POLLIN; + public static final int FLAGS_WRITE = Poll.APR_POLLOUT; + // Need two pollsets since the socketTimeout and the keep-alive timeout // can have different values. private long connectionPollset = 0; @@ -1129,6 +1132,7 @@ public class AprEndpoint extends Abstrac private long[] addSocket; private int[] addSocketTimeout; + private int[] addSocketFlags; private volatile int addCount = 0; @@ -1161,7 +1165,8 @@ public class AprEndpoint extends Abstrac desc = new long[size * 2]; keepAliveCount = 0; addSocket = new long[size]; - addSocketTimeout= new int[size]; + addSocketTimeout = new int[size]; + addSocketFlags = new int[size]; addCount = 0; } @@ -1215,8 +1220,10 @@ public class AprEndpoint extends Abstrac * @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 */ - public void add(long socket, int timeout) { + public void add(long socket, int timeout, int flags) { if (!running) { processSocket(socket, SocketStatus.STOP); return; @@ -1235,6 +1242,7 @@ public class AprEndpoint extends Abstrac } addSocket[addCount] = socket; addSocketTimeout[addCount] = timeout; + addSocketFlags[addCount] = flags; addCount++; // TODO: interrupt poll ? this.notify(); @@ -1294,7 +1302,7 @@ public class AprEndpoint extends Abstrac } int rv = Poll.addWithTimeout( connectionPollset, addSocket[i], - Poll.APR_POLLIN, timeout); + addSocketFlags[i], timeout); if (rv == Status.APR_SUCCESS) { successCount++; } else { @@ -1677,7 +1685,8 @@ public class AprEndpoint extends Abstrac // If all done put the socket back in the poller for // processing of further requests getPoller().add(state.socket, - getKeepAliveTimeout()); + getKeepAliveTimeout(), + Poller.FLAGS_READ); } else { // Close the socket since this is // the end of not keep-alive request. @@ -1771,7 +1780,7 @@ public class AprEndpoint extends Abstrac if (!deferAccept) { if (setSocketOptions(socket.getSocket().longValue())) { getPoller().add(socket.getSocket().longValue(), - getSoTimeout()); + getSoTimeout(), Poller.FLAGS_READ); } else { // Close socket and pool destroySocket(socket.getSocket().longValue()); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org