You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2008/12/10 21:28:19 UTC
svn commit: r725417 - in /tomcat/trunk/java/org/apache/tomcat/util/net:
NioChannel.java NioEndpoint.java SecureNioChannel.java
Author: fhanik
Date: Wed Dec 10 12:28:19 2008
New Revision: 725417
URL: http://svn.apache.org/viewvc?rev=725417&view=rev
Log:
implement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as wellimplement timeout on sendfile write as well
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java?rev=725417&r1=725416&r2=725417&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java Wed Dec 10 12:28:19 2008
@@ -199,8 +199,13 @@
return 0;
}
- public void flushOutbound() throws IOException {
-
+ /**
+ * Return true if the buffer wrote data
+ * @return
+ * @throws IOException
+ */
+ public boolean flushOutbound() throws IOException {
+ return false;
}
public boolean isSendFile() {
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=725417&r1=725416&r2=725417&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Dec 10 12:28:19 2008
@@ -1577,12 +1577,15 @@
WritableByteChannel wc =(WritableByteChannel) ((sc instanceof SecureNioChannel)?sc:sc.getIOChannel());
if (sc.getOutboundRemaining()>0) {
- sc.flushOutbound();
+ if (sc.flushOutbound()) {
+ attachment.access();
+ }
} else {
long written = sd.fchannel.transferTo(sd.pos,sd.length,wc);
if ( written > 0 ) {
sd.pos += written;
sd.length -= written;
+ attachment.access();
}
}
if ( sd.length <= 0 && sc.getOutboundRemaining()<=0) {
@@ -1662,13 +1665,14 @@
if ( ka == null ) {
cancelledKey(key, SocketStatus.ERROR,false); //we don't support any keys without attachments
} else if ( ka.getError() ) {
- cancelledKey(key, SocketStatus.ERROR,true);
+ cancelledKey(key, SocketStatus.ERROR,true);//TODO this is not yet being used
} else if (ka.getComet() && ka.getCometNotify() ) {
ka.setCometNotify(false);
reg(key,ka,0);//avoid multiple calls, this gets reregistered after invokation
//if (!processSocket(ka.getChannel(), SocketStatus.OPEN_CALLBACK)) processSocket(ka.getChannel(), SocketStatus.DISCONNECT);
if (!processSocket(ka.getChannel(), SocketStatus.OPEN, true)) processSocket(ka.getChannel(), SocketStatus.DISCONNECT, true);
- }else if ((ka.interestOps()&SelectionKey.OP_READ) == SelectionKey.OP_READ) {
+ }else if ((ka.interestOps()&SelectionKey.OP_READ) == SelectionKey.OP_READ ||
+ (ka.interestOps()&SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
//only timeout sockets that we are waiting for a read from
long delta = now - ka.getLastAccess();
long timeout = (ka.getTimeout()==-1)?((long) socketProperties.getSoTimeout()):(ka.getTimeout());
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java?rev=725417&r1=725416&r2=725417&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java Wed Dec 10 12:28:19 2008
@@ -440,8 +440,11 @@
}
@Override
- public void flushOutbound() throws IOException {
+ public boolean flushOutbound() throws IOException {
+ int remaining = netOutBuffer.remaining();
flush(netOutBuffer);
+ int remaining2= netOutBuffer.remaining();
+ return remaining2 < remaining;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org