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: [email protected]
For additional commands, e-mail: [email protected]