Skip to content

Commit

Permalink
Drop implementation specific InternalXxxOutputBuffer implementations and
Browse files Browse the repository at this point in the history
make the abstract base class the only concrete implementation.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1650279 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
markt-asf committed Jan 8, 2015
1 parent 0bfe845 commit a90ad87
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 196 deletions.
11 changes: 3 additions & 8 deletions java/org/apache/coyote/http11/AbstractHttp11Processor.java
Expand Up @@ -78,7 +78,7 @@ public abstract class AbstractHttp11Processor<S> extends AbstractProcessor<S> {
/** /**
* Output. * Output.
*/ */
protected AbstractOutputBuffer<S> outputBuffer; protected Http11OutputBuffer<S> outputBuffer;




/** /**
Expand Down Expand Up @@ -624,7 +624,7 @@ protected AbstractInputBuffer<S> getInputBuffer() {
* Exposes output buffer to super class to allow better code re-use. * Exposes output buffer to super class to allow better code re-use.
* @return The output buffer used by the processor. * @return The output buffer used by the processor.
*/ */
protected AbstractOutputBuffer<S> getOutputBuffer() { protected Http11OutputBuffer<S> getOutputBuffer() {
return outputBuffer; return outputBuffer;
} }


Expand Down Expand Up @@ -858,12 +858,7 @@ public final void action(ActionCode actionCode, Object param) {
} }
case NB_WRITE_INTEREST: { case NB_WRITE_INTEREST: {
AtomicBoolean isReady = (AtomicBoolean)param; AtomicBoolean isReady = (AtomicBoolean)param;
try { isReady.set(getOutputBuffer().isReady());
isReady.set(getOutputBuffer().isReady());
} catch (IOException e) {
getLog().debug("isReady() failed", e);
setErrorState(ErrorState.CLOSE_NOW, e);
}
break; break;
} }
case NB_READ_INTEREST: { case NB_READ_INTEREST: {
Expand Down
2 changes: 1 addition & 1 deletion java/org/apache/coyote/http11/Http11AprProcessor.java
Expand Up @@ -60,7 +60,7 @@ public Http11AprProcessor(int headerBufferSize, AprEndpoint endpoint,
inputBuffer = new InternalAprInputBuffer(request, headerBufferSize); inputBuffer = new InternalAprInputBuffer(request, headerBufferSize);
request.setInputBuffer(getInputBuffer()); request.setInputBuffer(getInputBuffer());


outputBuffer = new InternalAprOutputBuffer(response, headerBufferSize); outputBuffer = new Http11OutputBuffer<>(response, headerBufferSize);
response.setOutputBuffer(getOutputBuffer()); response.setOutputBuffer(getOutputBuffer());


initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);
Expand Down
4 changes: 2 additions & 2 deletions java/org/apache/coyote/http11/Http11Nio2Processor.java
Expand Up @@ -64,7 +64,7 @@ public Http11Nio2Processor(int maxHttpHeaderSize, Nio2Endpoint endpoint,
inputBuffer = new InternalNio2InputBuffer(request, maxHttpHeaderSize); inputBuffer = new InternalNio2InputBuffer(request, maxHttpHeaderSize);
request.setInputBuffer(getInputBuffer()); request.setInputBuffer(getInputBuffer());


outputBuffer = new InternalNio2OutputBuffer(response, maxHttpHeaderSize); outputBuffer = new Http11OutputBuffer<>(response, maxHttpHeaderSize);
response.setOutputBuffer(getOutputBuffer()); response.setOutputBuffer(getOutputBuffer());


initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);
Expand Down Expand Up @@ -99,7 +99,7 @@ protected void registerForEvent(boolean read, boolean write) {
((InternalNio2InputBuffer) getInputBuffer()).registerReadInterest(); ((InternalNio2InputBuffer) getInputBuffer()).registerReadInterest();
} }
if (write) { if (write) {
((InternalNio2OutputBuffer) getOutputBuffer()).registerWriteInterest(); ((Http11OutputBuffer<?>) getOutputBuffer()).registerWriteInterest();
} }
} }


Expand Down
2 changes: 1 addition & 1 deletion java/org/apache/coyote/http11/Http11NioProcessor.java
Expand Up @@ -65,7 +65,7 @@ public Http11NioProcessor(int maxHttpHeaderSize, NioEndpoint endpoint,
inputBuffer = new InternalNioInputBuffer(request, maxHttpHeaderSize); inputBuffer = new InternalNioInputBuffer(request, maxHttpHeaderSize);
request.setInputBuffer(getInputBuffer()); request.setInputBuffer(getInputBuffer());


outputBuffer = new InternalNioOutputBuffer(response, maxHttpHeaderSize); outputBuffer = new Http11OutputBuffer<>(response, maxHttpHeaderSize);
response.setOutputBuffer(getOutputBuffer()); response.setOutputBuffer(getOutputBuffer());


initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize);
Expand Down
Expand Up @@ -33,7 +33,7 @@
import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.res.StringManager; import org.apache.tomcat.util.res.StringManager;


public abstract class AbstractOutputBuffer<S> implements OutputBuffer { public class Http11OutputBuffer<S> implements OutputBuffer {


// ----------------------------------------------------- Instance Variables // ----------------------------------------------------- Instance Variables


Expand Down Expand Up @@ -103,7 +103,7 @@ public abstract class AbstractOutputBuffer<S> implements OutputBuffer {
protected long byteCount = 0; protected long byteCount = 0;




protected AbstractOutputBuffer(Response response, int headerBufferSize) { protected Http11OutputBuffer(Response response, int headerBufferSize) {


this.response = response; this.response = response;


Expand Down Expand Up @@ -134,7 +134,7 @@ protected AbstractOutputBuffer(Response response, int headerBufferSize) {
/** /**
* Logger. * Logger.
*/ */
private static final Log log = LogFactory.getLog(AbstractOutputBuffer.class); private static final Log log = LogFactory.getLog(Http11OutputBuffer.class);


// ------------------------------------------------------------- Properties // ------------------------------------------------------------- Properties


Expand Down Expand Up @@ -344,6 +344,7 @@ public void endRequest() throws IOException {


public void init(SocketWrapperBase<S> socketWrapper) { public void init(SocketWrapperBase<S> socketWrapper) {
this.socketWrapper = socketWrapper; this.socketWrapper = socketWrapper;
// TODO: Ensure write buffer is >= header buffer size
} }




Expand Down Expand Up @@ -586,12 +587,16 @@ private void checkLengthBeforeWrite(int length) {
} }




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 //------------------------------------------------------ Non-blocking writes


protected abstract void registerWriteInterest(); protected void registerWriteInterest() {
socketWrapper.registerWriteInterest();
}




/** /**
Expand All @@ -602,7 +607,9 @@ private void checkLengthBeforeWrite(int length) {
* happen in non-blocking mode) else <code>false</code>. * happen in non-blocking mode) else <code>false</code>.
* @throws IOException * @throws IOException
*/ */
protected abstract boolean flushBuffer(boolean block) throws IOException; protected boolean flushBuffer(boolean block) throws IOException {
return socketWrapper.flush(block);
}




/** /**
Expand All @@ -613,7 +620,7 @@ protected final boolean isBlocking() {
} }




protected final boolean isReady() throws IOException { protected final boolean isReady() {
boolean result = !hasDataToWrite(); boolean result = !hasDataToWrite();
if (!result) { if (!result) {
registerWriteInterest(); registerWriteInterest();
Expand Down
58 changes: 0 additions & 58 deletions java/org/apache/coyote/http11/InternalAprOutputBuffer.java

This file was deleted.

58 changes: 0 additions & 58 deletions java/org/apache/coyote/http11/InternalNio2OutputBuffer.java

This file was deleted.

59 changes: 0 additions & 59 deletions java/org/apache/coyote/http11/InternalNioOutputBuffer.java

This file was deleted.

4 changes: 2 additions & 2 deletions test/org/apache/coyote/http11/filters/TesterOutputBuffer.java
Expand Up @@ -22,14 +22,14 @@


import org.apache.coyote.OutputBuffer; import org.apache.coyote.OutputBuffer;
import org.apache.coyote.Response; 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.buf.ByteChunk;
import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.net.SocketWrapperBase;


/** /**
* Output buffer for use in unit tests. This is a minimal implementation. * 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. * Underlying output stream.
Expand Down

0 comments on commit a90ad87

Please sign in to comment.