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 2015/01/28 15:31:43 UTC

svn commit: r1655352 - /tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java

Author: markt
Date: Wed Jan 28 14:31:42 2015
New Revision: 1655352

URL: http://svn.apache.org/r1655352
Log:
Simplify Sendfile processing. Rename 'event' so its purpose is clearer.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java

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=1655352&r1=1655351&r2=1655352&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Wed Jan 28 14:31:42 2015
@@ -1096,7 +1096,8 @@ public class NioEndpoint extends Abstrac
             return result;
         }
 
-        public SendfileState processSendfile(SelectionKey sk, NioSocketWrapper socketWrapper, boolean event) {
+        public SendfileState processSendfile(SelectionKey sk, NioSocketWrapper socketWrapper,
+                boolean calledByProcessor) {
             NioChannel sc = null;
             try {
                 unreg(sk, socketWrapper, sk.readyOps());
@@ -1106,13 +1107,7 @@ public class NioEndpoint extends Abstrac
                     log.trace("Processing send file for: " + sd.fileName);
                 }
 
-                // This method is called by the Http11Processor for the first
-                // execution and then subsequent executions are via the Poller.
-                // This boolean keeps track of the current caller as the
-                // required behaviour varies slightly.
-                boolean calledByProcessor = (sd.fchannel == null);
-
-                if (calledByProcessor) {
+                if (sd.fchannel == null) {
                     // Setup the file channel
                     File f = new File(sd.fileName);
                     if (!f.exists()) {
@@ -1159,16 +1154,15 @@ public class NioEndpoint extends Abstrac
                         sd.fchannel.close();
                     } catch (Exception ignore) {
                     }
+                    // For calls from outside the Poller, the caller is
+                    // responsible for registering the socket for the
+                    // appropriate event(s) if sendfile completes.
                     if (!calledByProcessor) {
                         if (sd.keepAlive) {
                             if (log.isDebugEnabled()) {
                                 log.debug("Connection is keep alive, registering back for OP_READ");
                             }
-                            if (event) {
-                                this.add(socketWrapper.getSocket(),SelectionKey.OP_READ);
-                            } else {
-                                reg(sk,socketWrapper,SelectionKey.OP_READ);
-                            }
+                            reg(sk,socketWrapper,SelectionKey.OP_READ);
                         } else {
                             if (log.isDebugEnabled()) {
                                 log.debug("Send file connection is being closed");
@@ -1181,7 +1175,7 @@ public class NioEndpoint extends Abstrac
                     if (log.isDebugEnabled()) {
                         log.debug("OP_WRITE for sendfile: " + sd.fileName);
                     }
-                    if (event) {
+                    if (calledByProcessor) {
                         add(socketWrapper.getSocket(),SelectionKey.OP_WRITE);
                     } else {
                         reg(sk,socketWrapper,SelectionKey.OP_WRITE);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org