Author: markt
Date: Tue Apr 30 10:39:36 2013
New Revision: 1477543
URL: http://svn.apache.org/r1477543
Log:
Remove the request.isAsyncOperation() method and the associated plumbing as
res.getWriteListener() != null does the same thing with less code.
Add a (currently unimplemented) dispatch() line from READ_WRITE_OP to the state
diagram.
Modified:
tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/coyote/ActionCode.java
tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java
tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Tue Apr
30 10:39:36 2013
@@ -345,44 +345,37 @@ public class CoyoteAdapter implements Ad
}
}
-
- if (!request.isAsyncDispatching() && request.isAsync() &&
- request.isAsyncOperation()) {
- if (status == SocketStatus.OPEN_WRITE) {
- if (res.getWriteListener() == null) {
- success = false;
- } else {
- ClassLoader oldCL =
- Thread.currentThread().getContextClassLoader();
- ClassLoader newCL =
-
request.getContext().getLoader().getClassLoader();
- try {
-
Thread.currentThread().setContextClassLoader(newCL);
- res.getWriteListener().onWritePossible();
- } finally {
-
Thread.currentThread().setContextClassLoader(oldCL);
- }
- success = true;
+ // Check to see if non-blocking writes are reads are being used
+ if (!request.isAsyncDispatching() && request.isAsync()) {
+ if (res.getWriteListener() != null &&
+ status == SocketStatus.OPEN_WRITE) {
+ ClassLoader oldCL =
+ Thread.currentThread().getContextClassLoader();
+ ClassLoader newCL =
+ request.getContext().getLoader().getClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(newCL);
+ res.getWriteListener().onWritePossible();
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
}
- } else if (status == SocketStatus.OPEN_READ) {
- if (req.getReadListener() == null) {
- success = false;
- } else {
- ClassLoader oldCL =
- Thread.currentThread().getContextClassLoader();
- ClassLoader newCL =
-
request.getContext().getLoader().getClassLoader();
- try {
-
Thread.currentThread().setContextClassLoader(newCL);
- req.getReadListener().onDataAvailable();
- if (request.getInputStream().isFinished()) {
- req.getReadListener().onAllDataRead();
- }
- } finally {
-
Thread.currentThread().setContextClassLoader(oldCL);
+ success = true;
+ } else if (req.getReadListener() != null &&
+ status == SocketStatus.OPEN_READ) {
+ ClassLoader oldCL =
+ Thread.currentThread().getContextClassLoader();
+ ClassLoader newCL =
+ request.getContext().getLoader().getClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(newCL);
+ req.getReadListener().onDataAvailable();
+ if (request.getInputStream().isFinished()) {
+ req.getReadListener().onAllDataRead();
}
- success = true;
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
}
+ success = true;
}
}
Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Tue Apr 30
10:39:36 2013
@@ -1661,16 +1661,6 @@ public class Request
return result.get();
}
- public boolean isAsyncOperation() {
- if (asyncContext == null) {
- return false;
- }
-
- AtomicBoolean result = new AtomicBoolean(false);
- coyoteRequest.action(ActionCode.ASYNC_IS_ASYNC_OPERATION, result);
- return result.get();
- }
-
@Override
public boolean isAsyncSupported() {
if (this.asyncSupported == null) {
Modified: tomcat/trunk/java/org/apache/coyote/ActionCode.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ActionCode.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ActionCode.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ActionCode.java Tue Apr 30 10:39:36 2013
@@ -176,11 +176,6 @@ public enum ActionCode {
ASYNC_IS_ASYNC,
/**
- * Callback to determine if async read/write is in progress
- */
- ASYNC_IS_ASYNC_OPERATION,
-
- /**
* Callback to determine if async dispatch is in progress
*/
ASYNC_IS_STARTED,
Modified: tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java (original)
+++ tomcat/trunk/java/org/apache/coyote/AsyncStateMachine.java Tue Apr 30
10:39:36 2013
@@ -71,26 +71,28 @@ import org.apache.tomcat.util.res.String
* | | | | | | |
/-----------| |
* | | | ^ |dispatch() | | /
|
* | | | | | | | /
|
- * | | | | \|/ / \|/ /
postProcess() |
+ * | | | | \|/ / \|/ /
postProcess() |
* | | | | MUST_DISPATCH /
STARTED<---------<---------| |
- * | | | | | / /| \
| |
- * | | | | |postProcess() / / | \
| |
- * ^ | ^ | | / dispatch()/ | \
| |
- * | | | | | / / | \
| |
- * | | | | | |---------- / -----------/ |auto \
| |
- * | | | | | | / | \
| |
- * | | | | | | |-----/ | |
| |
- * | | | | auto \|/ \|/ \|/ \|/ |
| |
- * | | | |---<------DISPATCHING<-----------------TIMING_OUT |
| |
- * | | | dispatch() | |
|asyncOperation() ^ |
- * | | | | | \|/
| ^
- * | | |-------<----------------------------------<------| |
READ_WRITE_OP->-----| |
- * | | complete() | |
| |
- * | | | |
| error() |
- * |<- | ----<-------------------<-------------------------------<--| |
|->-----------|
- * | error() |
- * | complete() |
- * |---------------------------------------------------------------------|
+ * | | | | | / / | |
| |
+ * | | | | |postProcess() / / | |
^ |
+ * ^ | ^ | | / / |
|asyncOperation() | |
+ * | | | | | / / | |
| |
+ * | | | | | |---------- / ----------/ |
|--READ_WRITE_OP-->---| |
+ * | | | | | | / dispatch() |
| | | |
+ * | | | | | | |-----/ auto|
| | | error()|
+ * | | | | auto \|/ \|/ \|/ |
dispatch()| | |->--------|
+ * | | | |---<------DISPATCHING<--------<------------- |
------<----| |
+ * | | | /|\ |
|
+ * | | | | dispatch() \|/
|
+ * | | | |-----------------------TIMING_OUT
|
+ * | | | | |
|
+ * | | |-------<----------------------------------<------| |
|
+ * | | complete() |
|
+ * | | |
|
+ * |<- | ----<-------------------<-------------------------------<--|
|
+ * | error()
|
+ * | complete()
|
+ *
|----------------------------------------------------------------------------|
* </pre>
*/
public class AsyncStateMachine<S> {
@@ -153,10 +155,6 @@ public class AsyncStateMachine<S> {
return state.isAsync();
}
- public boolean isAsyncOperation() {
- return state == AsyncState.READ_WRITE_OP;
- }
-
public boolean isAsyncDispatching() {
return state.isDispatching();
}
Modified: tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AbstractAjpProcessor.java Tue Apr
30 10:39:36 2013
@@ -456,8 +456,6 @@ public abstract class AbstractAjpProcess
((AtomicBoolean)
param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Tue
Apr 30 10:39:36 2013
@@ -797,8 +797,6 @@ public abstract class AbstractHttp11Proc
((AtomicBoolean)
param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Tue Apr
30 10:39:36 2013
@@ -196,7 +196,7 @@ public class Http11NioProcessor extends
if (status == SocketStatus.OPEN_WRITE &&
isRegisteredForWrite(attach)) {
return SocketState.LONG;
}
- }catch (IllegalStateException x) {
+ } catch (IllegalStateException x) {
attach.interestOps(attach.interestOps() |
SelectionKey.OP_WRITE);
}
} else if (status == SocketStatus.OPEN_READ) {
Modified: tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java?rev=1477543&r1=1477542&r2=1477543&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/spdy/SpdyProcessor.java Tue Apr 30
10:39:36 2013
@@ -372,8 +372,6 @@ public class SpdyProcessor extends Abstr
((AtomicBoolean)
param).set(asyncStateMachine.isAsyncDispatching());
} else if (actionCode == ActionCode.ASYNC_IS_ASYNC) {
((AtomicBoolean) param).set(asyncStateMachine.isAsync());
- } else if (actionCode == ActionCode.ASYNC_IS_ASYNC_OPERATION) {
- ((AtomicBoolean) param).set(asyncStateMachine.isAsyncOperation());
} else if (actionCode == ActionCode.ASYNC_IS_TIMINGOUT) {
((AtomicBoolean) param).set(asyncStateMachine.isAsyncTimingOut());
} else if (actionCode == ActionCode.ASYNC_IS_ERROR) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]