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