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/08 14:10:55 UTC

svn commit: r1650279 - in /tomcat/trunk: java/org/apache/coyote/http11/ test/org/apache/coyote/http11/filters/

Author: markt
Date: Thu Jan  8 13:10:54 2015
New Revision: 1650279

URL: http://svn.apache.org/r1650279
Log:
Drop implementation specific InternalXxxOutputBuffer implementations and
make the abstract base class the only concrete implementation.

Added:
    tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java   (contents, props changed)
      - copied, changed from r1650278, tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java
Removed:
    tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalNio2OutputBuffer.java
    tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java
Modified:
    tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
    tomcat/trunk/test/org/apache/coyote/http11/filters/TesterOutputBuffer.java

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=1650279&r1=1650278&r2=1650279&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan  8 13:10:54 2015
@@ -78,7 +78,7 @@ public abstract class AbstractHttp11Proc
     /**
      * Output.
      */
-    protected AbstractOutputBuffer<S> outputBuffer;
+    protected Http11OutputBuffer<S> outputBuffer;
 
 
     /**
@@ -624,7 +624,7 @@ public abstract class AbstractHttp11Proc
      * Exposes output buffer to super class to allow better code re-use.
      * @return  The output buffer used by the processor.
      */
-    protected AbstractOutputBuffer<S> getOutputBuffer() {
+    protected Http11OutputBuffer<S> getOutputBuffer() {
         return outputBuffer;
     }
 
@@ -858,12 +858,7 @@ public abstract class AbstractHttp11Proc
         }
         case NB_WRITE_INTEREST: {
             AtomicBoolean isReady = (AtomicBoolean)param;
-            try {
-                isReady.set(getOutputBuffer().isReady());
-            } catch (IOException e) {
-                getLog().debug("isReady() failed", e);
-                setErrorState(ErrorState.CLOSE_NOW, e);
-            }
+            isReady.set(getOutputBuffer().isReady());
             break;
         }
         case NB_READ_INTEREST: {

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1650279&r1=1650278&r2=1650279&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jan  8 13:10:54 2015
@@ -60,7 +60,7 @@ public class Http11AprProcessor extends
         inputBuffer = new InternalAprInputBuffer(request, headerBufferSize);
         request.setInputBuffer(getInputBuffer());
 
-        outputBuffer = new InternalAprOutputBuffer(response, headerBufferSize);
+        outputBuffer = new Http11OutputBuffer<>(response, headerBufferSize);
         response.setOutputBuffer(getOutputBuffer());
 
         initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1650279&r1=1650278&r2=1650279&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Thu Jan  8 13:10:54 2015
@@ -64,7 +64,7 @@ public class Http11Nio2Processor extends
         inputBuffer = new InternalNio2InputBuffer(request, maxHttpHeaderSize);
         request.setInputBuffer(getInputBuffer());
 
-        outputBuffer = new InternalNio2OutputBuffer(response, maxHttpHeaderSize);
+        outputBuffer = new Http11OutputBuffer<>(response, maxHttpHeaderSize);
         response.setOutputBuffer(getOutputBuffer());
 
         initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);
@@ -99,7 +99,7 @@ public class Http11Nio2Processor extends
             ((InternalNio2InputBuffer) getInputBuffer()).registerReadInterest();
         }
         if (write) {
-            ((InternalNio2OutputBuffer) getOutputBuffer()).registerWriteInterest();
+            ((Http11OutputBuffer<?>) getOutputBuffer()).registerWriteInterest();
         }
     }
 

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=1650279&r1=1650278&r2=1650279&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Thu Jan  8 13:10:54 2015
@@ -65,7 +65,7 @@ public class Http11NioProcessor extends
         inputBuffer = new InternalNioInputBuffer(request, maxHttpHeaderSize);
         request.setInputBuffer(getInputBuffer());
 
-        outputBuffer = new InternalNioOutputBuffer(response, maxHttpHeaderSize);
+        outputBuffer = new Http11OutputBuffer<>(response, maxHttpHeaderSize);
         response.setOutputBuffer(getOutputBuffer());
 
         initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);

Copied: tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java (from r1650278, tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java?p2=tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java&p1=tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java&r1=1650278&r2=1650279&rev=1650279&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractOutputBuffer.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java Thu Jan  8 13:10:54 2015
@@ -33,7 +33,7 @@ import org.apache.tomcat.util.http.HttpM
 import org.apache.tomcat.util.net.SocketWrapperBase;
 import org.apache.tomcat.util.res.StringManager;
 
-public abstract class AbstractOutputBuffer<S> implements OutputBuffer {
+public class Http11OutputBuffer<S> implements OutputBuffer {
 
     // ----------------------------------------------------- Instance Variables
 
@@ -103,7 +103,7 @@ public abstract class AbstractOutputBuff
     protected long byteCount = 0;
 
 
-    protected AbstractOutputBuffer(Response response, int headerBufferSize) {
+    protected Http11OutputBuffer(Response response, int headerBufferSize) {
 
         this.response = response;
 
@@ -134,7 +134,7 @@ public abstract class AbstractOutputBuff
     /**
      * Logger.
      */
-    private static final Log log = LogFactory.getLog(AbstractOutputBuffer.class);
+    private static final Log log = LogFactory.getLog(Http11OutputBuffer.class);
 
     // ------------------------------------------------------------- Properties
 
@@ -344,6 +344,7 @@ public abstract class AbstractOutputBuff
 
     public void init(SocketWrapperBase<S> socketWrapper) {
         this.socketWrapper = socketWrapper;
+        // TODO: Ensure write buffer is >= header buffer size
     }
 
 
@@ -586,12 +587,16 @@ public abstract class AbstractOutputBuff
     }
 
 
-    protected abstract void addToBB(byte[] buf, int offset, int length) throws IOException;
+    protected void addToBB(byte[] buf, int offset, int length) throws IOException {
+        socketWrapper.write(isBlocking(), buf, offset, length);
+    }
 
 
     //------------------------------------------------------ Non-blocking writes
 
-    protected abstract void registerWriteInterest();
+    protected void registerWriteInterest() {
+        socketWrapper.registerWriteInterest();
+    }
 
 
     /**
@@ -602,7 +607,9 @@ public abstract class AbstractOutputBuff
      *          happen in non-blocking mode) else <code>false</code>.
      * @throws IOException
      */
-    protected abstract boolean flushBuffer(boolean block) throws IOException;
+    protected boolean flushBuffer(boolean block) throws IOException  {
+        return socketWrapper.flush(block);
+    }
 
 
     /**
@@ -613,7 +620,7 @@ public abstract class AbstractOutputBuff
     }
 
 
-    protected final boolean isReady() throws IOException {
+    protected final boolean isReady() {
         boolean result = !hasDataToWrite();
         if (!result) {
             registerWriteInterest();

Propchange: tomcat/trunk/java/org/apache/coyote/http11/Http11OutputBuffer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/test/org/apache/coyote/http11/filters/TesterOutputBuffer.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http11/filters/TesterOutputBuffer.java?rev=1650279&r1=1650278&r2=1650279&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/coyote/http11/filters/TesterOutputBuffer.java (original)
+++ tomcat/trunk/test/org/apache/coyote/http11/filters/TesterOutputBuffer.java Thu Jan  8 13:10:54 2015
@@ -22,14 +22,14 @@ import java.net.Socket;
 
 import org.apache.coyote.OutputBuffer;
 import org.apache.coyote.Response;
-import org.apache.coyote.http11.AbstractOutputBuffer;
+import org.apache.coyote.http11.Http11OutputBuffer;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.net.SocketWrapperBase;
 
 /**
  * Output buffer for use in unit tests. This is a minimal implementation.
  */
-public class TesterOutputBuffer extends AbstractOutputBuffer<Socket> {
+public class TesterOutputBuffer extends Http11OutputBuffer<Socket> {
 
     /**
      * Underlying output stream.



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