Author: markt
Date: Tue Oct 16 22:19:09 2012
New Revision: 1399023
URL: http://svn.apache.org/viewvc?rev=1399023&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 when the (as yet unwritten)
updated WebSocket implementation is back-ported from trunk as the JSR-356 API
is non-blocking.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
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
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1399022
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=1399023&r1=1399022&r2=1399023&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 Tue Oct
16 22:19:09 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/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=1399023&r1=1399022&r2=1399023&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
Tue Oct 16 22:19:09 2012
@@ -243,7 +243,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);
}
}
@@ -266,7 +267,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(
@@ -277,7 +279,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/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=1399023&r1=1399022&r2=1399023&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 Tue
Oct 16 22:19:09 2012
@@ -1110,6 +1110,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;
@@ -1118,6 +1121,7 @@ public class AprEndpoint extends Abstrac
private long[] addSocket;
private int[] addSocketTimeout;
+ private int[] addSocketFlags;
private volatile int addCount = 0;
@@ -1150,7 +1154,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;
}
@@ -1204,8 +1209,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) {
synchronized (this) {
// Add socket to the list. Newly added sockets will wait
// at most for pollTime before being polled
@@ -1220,6 +1227,7 @@ public class AprEndpoint extends Abstrac
}
addSocket[addCount] = socket;
addSocketTimeout[addCount] = timeout;
+ addSocketFlags[addCount] = flags;
addCount++;
this.notify();
}
@@ -1278,7 +1286,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 {
@@ -1661,7 +1669,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.
@@ -1753,7 +1762,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]