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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org