You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/01/16 22:52:58 UTC
svn commit: r1434428 -
/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Author: markt
Date: Wed Jan 16 21:52:58 2013
New Revision: 1434428
URL: http://svn.apache.org/viewvc?rev=1434428&view=rev
Log:
APR/native refactoring
- Remove SocketEventProcessor
- Align code with JIO connector (with a view to further refactoring)
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
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=1434428&r1=1434427&r2=1434428&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Jan 16 21:52:58 2013
@@ -825,7 +825,7 @@ public class AprEndpoint extends Abstrac
* Process given socket. Called in non-comet mode, typically keep alive
* or upgraded protocol.
*/
- protected boolean processSocket(long socket) {
+ public boolean processSocket(long socket, SocketStatus status) {
try {
Executor executor = getExecutor();
if (executor == null) {
@@ -834,7 +834,7 @@ public class AprEndpoint extends Abstrac
} else {
SocketWrapper<Long> wrapper =
new SocketWrapper<>(Long.valueOf(socket));
- executor.execute(new SocketProcessor(wrapper, null));
+ executor.execute(new SocketProcessor(wrapper, status));
}
} catch (RejectedExecutionException x) {
log.warn("Socket processing request was rejected for:"+socket,x);
@@ -850,33 +850,6 @@ public class AprEndpoint extends Abstrac
}
- /**
- * Process given socket for an event.
- */
- public boolean processSocket(long socket, SocketStatus status) {
- try {
- Executor executor = getExecutor();
- if (executor == null) {
- log.warn(sm.getString("endpoint.warn.noExector",
- Long.valueOf(socket), status));
- } else {
- SocketWrapper<Long> wrapper =
- new SocketWrapper<>(Long.valueOf(socket));
- executor.execute(new SocketEventProcessor(wrapper, status));
- }
- } catch (RejectedExecutionException x) {
- log.warn("Socket processing request was rejected for:"+socket,x);
- return false;
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- // This means we got an OOM or similar creating a thread, or that
- // the pool and its queue are full
- log.error(sm.getString("endpoint.process.fail"), t);
- return false;
- }
- return true;
- }
-
public boolean processSocketAsync(SocketWrapper<Long> socket,
SocketStatus status) {
try {
@@ -1702,7 +1675,7 @@ public class AprEndpoint extends Abstrac
// Close socket and clear pool
destroySocket(desc[n*2+1]);
} else if ((desc[n*2] & Poll.APR_POLLIN) == Poll.APR_POLLIN) {
- if (!processSocket(desc[n*2+1])) {
+ if (!processSocket(desc[n*2+1], SocketStatus.OPEN_READ)) {
// Close socket and clear pool
destroySocket(desc[n*2+1]);
}
@@ -2175,6 +2148,10 @@ public class AprEndpoint extends Abstrac
public SocketProcessor(SocketWrapper<Long> socket,
SocketStatus status) {
this.socket = socket;
+ if (status == null) {
+ // Should never happen
+ throw new NullPointerException();
+ }
this.status = status;
}
@@ -2182,12 +2159,7 @@ public class AprEndpoint extends Abstrac
public void run() {
synchronized (socket) {
// Process the request from this socket
- SocketState state = SocketState.OPEN;
- if (status == null) {
- state = handler.process(socket,SocketStatus.OPEN_READ);
- } else {
- state = handler.process(socket, status);
- }
+ SocketState state = handler.process(socket, status);
if (state == Handler.SocketState.CLOSED) {
// Close socket and pool
destroySocket(socket.getSocket().longValue());
@@ -2199,7 +2171,8 @@ public class AprEndpoint extends Abstrac
}
} else if (state == Handler.SocketState.ASYNC_END) {
socket.access();
- SocketProcessor proc = new SocketProcessor(socket, SocketStatus.OPEN_READ);
+ SocketProcessor proc = new SocketProcessor(socket,
+ SocketStatus.OPEN_READ);
getExecutor().execute(proc);
}
}
@@ -2207,38 +2180,6 @@ public class AprEndpoint extends Abstrac
}
- // --------------------------------------- SocketEventProcessor Inner Class
-
-
- /**
- * This class is the equivalent of the Worker, but will simply use in an
- * external Executor thread pool.
- */
- protected class SocketEventProcessor implements Runnable {
-
- protected SocketWrapper<Long> socket = null;
- protected SocketStatus status = null;
-
- public SocketEventProcessor(SocketWrapper<Long> socket,
- SocketStatus status) {
- this.socket = socket;
- this.status = status;
- }
-
- @Override
- public void run() {
- synchronized (socket) {
- // Process the request from this socket
- Handler.SocketState state = handler.process(socket, status);
- if (state == Handler.SocketState.CLOSED) {
- // Close socket and pool
- destroySocket(socket.getSocket().longValue());
- socket = null;
- }
- }
- }
- }
-
private static class PrivilegedSetTccl implements PrivilegedAction<Void> {
private ClassLoader cl;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org