Author: remm Date: Tue Oct 27 15:16:04 2015 New Revision: 1710835 URL: http://svn.apache.org/viewvc?rev=1710835&view=rev Log: - Add an extra async IO flag I used for testing. - Blocking should block.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1710835&r1=1710834&r2=1710835&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Tue Oct 27 15:16:04 2015 @@ -954,6 +954,11 @@ public class Nio2Endpoint extends Abstra } } + @Override + public boolean hasAsyncIO() { + return false; + } + /** * Internal state tracker for scatter/gather operations. */ @@ -978,8 +983,8 @@ public class Nio2Endpoint extends Abstra this.check = check; this.handler = handler; } - private long nBytes = 0; - private CompletionState state = CompletionState.PENDING; + private volatile long nBytes = 0; + private volatile CompletionState state = CompletionState.PENDING; } private class ScatterReadCompletionHandler<A> implements CompletionHandler<Long, OperationState<A>> { @@ -1127,6 +1132,9 @@ public class Nio2Endpoint extends Abstra } else { throw new WritePendingException(); } + if (block && state.state == CompletionState.PENDING && writePending.tryAcquire(timeout, unit)) { + writePending.release(); + } } catch (InterruptedException e) { handler.failed(e, attachment); } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1710835&r1=1710834&r2=1710835&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Tue Oct 27 15:16:04 2015 @@ -662,6 +662,14 @@ public abstract class SocketWrapperBase< }; /** + * Allows using NIO2 style read/write only for connectors that can + * efficiently support it. + */ + public boolean hasAsyncIO() { + return false; + } + + /** * Scatter read. The completion handler will be called once some * data has been read or an error occurred. If a CompletionCheck * object has been provided, the completion handler will only be --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org