You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2014/05/30 09:48:34 UTC

svn commit: r1598480 - in /tomcat/trunk/java/org/apache/coyote/http11/upgrade: Nio2ServletInputStream.java Nio2ServletOutputStream.java

Author: remm
Date: Fri May 30 07:48:34 2014
New Revision: 1598480

URL: http://svn.apache.org/r1598480
Log:
Remove listener calls optimizations, they skip a lot of things which could be useful and ultimately it doesn't work that well.

Modified:
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
    tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java?rev=1598480&r1=1598479&r2=1598480&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletInputStream.java Fri May 30 07:48:34 2014
@@ -40,7 +40,7 @@ public class Nio2ServletInputStream exte
     private final CompletionHandler<Integer, SocketWrapper<Nio2Channel>> completionHandler;
     private boolean flipped = false;
     private volatile boolean readPending = false;
-    private volatile boolean fireListener = false;
+    private volatile boolean interest = false;
 
     public Nio2ServletInputStream(SocketWrapper<Nio2Channel> wrapper, AbstractEndpoint<Nio2Channel> endpoint0) {
         this.endpoint = endpoint0;
@@ -49,31 +49,21 @@ public class Nio2ServletInputStream exte
         this.completionHandler = new CompletionHandler<Integer, SocketWrapper<Nio2Channel>>() {
             @Override
             public void completed(Integer nBytes, SocketWrapper<Nio2Channel> attachment) {
-                boolean fire = false;
+                boolean notify = false;
                 synchronized (completionHandler) {
                     if (nBytes.intValue() < 0) {
                         failed(new EOFException(), attachment);
-                        return;
-                    }
-                    readPending = false;
-                    fire = fireListener;
-                    fireListener = false;
-                }
-                if (nBytes.intValue() > 0) {
-                    if (!Nio2Endpoint.isInline() && fire) {
-                        try {
-                            onDataAvailable();
-                        } catch (IOException e) {
-                            failed(e, attachment);
+                    } else {
+                        readPending = false;
+                        if (interest && !Nio2Endpoint.isInline()) {
+                            interest = false;
+                            notify = true;
                         }
                     }
-                } else {
-                    try {
-                        onAllDataRead();
-                    } catch (IOException e) {
-                        failed(e, attachment);
-                    }
                 }
+                if (notify) {
+                    endpoint.processSocket(attachment, SocketStatus.OPEN_READ, false);
+                } 
             }
             @Override
             public void failed(Throwable exc, SocketWrapper<Nio2Channel> attachment) {
@@ -93,7 +83,7 @@ public class Nio2ServletInputStream exte
     protected boolean doIsReady() throws IOException {
         synchronized (completionHandler) {
             if (readPending) {
-                fireListener = true;
+                interest = true;
                 return false;
             }
             ByteBuffer readBuffer = channel.getBufHandler().getReadBuffer();
@@ -116,7 +106,7 @@ public class Nio2ServletInputStream exte
                     flipped = true;
                 }
             } else {
-                fireListener = true;
+                interest = true;
             }
             return isReady;
         }

Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java?rev=1598480&r1=1598479&r2=1598480&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/Nio2ServletOutputStream.java Fri May 30 07:48:34 2014
@@ -58,13 +58,7 @@ public class Nio2ServletOutputStream ext
                 } else {
                     writePending.release();
                     if (!Nio2Endpoint.isInline()) {
-                        try {
-                            onWritePossible();
-                        } catch (IOException e) {
-                            socketWrapper.setError(true);
-                            onError(e);
-                            endpoint.processSocket(socketWrapper, SocketStatus.ERROR, false);
-                        }
+                        endpoint.processSocket(socketWrapper, SocketStatus.OPEN_WRITE, false);
                     }
                 }
             }



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