From: markt Date: Fri, 12 Aug 2011 17:59:22 +0000 (+0000) Subject: Align InputBuffer initialisation across the connectors X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=849c12f6dbcb22f13e1c5093f2e79ae22cabae9e;p=tomcat7.0 Align InputBuffer initialisation across the connectors Remove unused code Reduce visibility of properties and methods git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1157198 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/coyote/http11/AbstractInputBuffer.java b/java/org/apache/coyote/http11/AbstractInputBuffer.java index a81d64263..dfa747bf1 100644 --- a/java/org/apache/coyote/http11/AbstractInputBuffer.java +++ b/java/org/apache/coyote/http11/AbstractInputBuffer.java @@ -22,9 +22,11 @@ import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.http.MimeHeaders; +import org.apache.tomcat.util.net.AbstractEndpoint; +import org.apache.tomcat.util.net.SocketWrapper; import org.apache.tomcat.util.res.StringManager; -public abstract class AbstractInputBuffer implements InputBuffer{ +public abstract class AbstractInputBuffer implements InputBuffer{ protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; @@ -223,12 +225,16 @@ public abstract class AbstractInputBuffer implements InputBuffer{ } - public abstract boolean parseRequestLine(boolean useAvailableDataOnly) throws IOException; + public abstract boolean parseRequestLine(boolean useAvailableDataOnly) + throws IOException; public abstract boolean parseHeaders() throws IOException; protected abstract boolean fill(boolean block) throws IOException; + protected abstract void init(SocketWrapper socketWrapper, + AbstractEndpoint endpoint) throws IOException; + // --------------------------------------------------------- Public Methods diff --git a/java/org/apache/coyote/http11/Http11AprProcessor.java b/java/org/apache/coyote/http11/Http11AprProcessor.java index f6e0625f4..7d184a3ed 100644 --- a/java/org/apache/coyote/http11/Http11AprProcessor.java +++ b/java/org/apache/coyote/http11/Http11AprProcessor.java @@ -174,8 +174,8 @@ public class Http11AprProcessor extends AbstractHttp11Processor { // Setting up the socket this.socket = socketWrapper; + inputBuffer.init(socketWrapper, endpoint); long socketRef = socketWrapper.getSocket().longValue(); - inputBuffer.setSocket(socketRef); outputBuffer.setSocket(socketRef); // Error flag @@ -619,7 +619,7 @@ public class Http11AprProcessor extends AbstractHttp11Processor { } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer getInputBuffer() { return inputBuffer; } diff --git a/java/org/apache/coyote/http11/Http11NioProcessor.java b/java/org/apache/coyote/http11/Http11NioProcessor.java index ba0aaa8e0..b0078ec6e 100644 --- a/java/org/apache/coyote/http11/Http11NioProcessor.java +++ b/java/org/apache/coyote/http11/Http11NioProcessor.java @@ -205,9 +205,8 @@ public class Http11NioProcessor extends AbstractHttp11Processor { // Setting up the socket this.socket = socketWrapper; - inputBuffer.setSocket(this.socket.getSocket()); + inputBuffer.init(socketWrapper, endpoint); outputBuffer.setSocket(this.socket.getSocket()); - inputBuffer.setSelectorPool(((NioEndpoint)endpoint).getSelectorPool()); outputBuffer.setSelectorPool(((NioEndpoint)endpoint).getSelectorPool()); // Error flag @@ -647,7 +646,7 @@ public class Http11NioProcessor extends AbstractHttp11Processor { } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer getInputBuffer() { return inputBuffer; } diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java index 6ce5daf90..ef797ab2c 100644 --- a/java/org/apache/coyote/http11/Http11Processor.java +++ b/java/org/apache/coyote/http11/Http11Processor.java @@ -138,7 +138,7 @@ public class Http11Processor extends AbstractHttp11Processor { // Setting up the I/O this.socket = socketWrapper; - inputBuffer.setInputStream(socket.getSocket().getInputStream()); + inputBuffer.init(socketWrapper, endpoint); outputBuffer.setOutputStream(socket.getSocket().getOutputStream()); // Error flag @@ -558,7 +558,7 @@ public class Http11Processor extends AbstractHttp11Processor { } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer getInputBuffer() { return inputBuffer; } diff --git a/java/org/apache/coyote/http11/InternalAprInputBuffer.java b/java/org/apache/coyote/http11/InternalAprInputBuffer.java index 12dbb12fe..8692b0017 100644 --- a/java/org/apache/coyote/http11/InternalAprInputBuffer.java +++ b/java/org/apache/coyote/http11/InternalAprInputBuffer.java @@ -30,6 +30,8 @@ import org.apache.tomcat.jni.Socket; import org.apache.tomcat.jni.Status; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; +import org.apache.tomcat.util.net.AbstractEndpoint; +import org.apache.tomcat.util.net.SocketWrapper; /** * Implementation of InputBuffer which provides HTTP request header parsing as @@ -37,7 +39,7 @@ import org.apache.tomcat.util.buf.MessageBytes; * * @author Remy Maucherat */ -public class InternalAprInputBuffer extends AbstractInputBuffer { +public class InternalAprInputBuffer extends AbstractInputBuffer { private static final Log log = LogFactory.getLog(InternalAprInputBuffer.class); @@ -78,38 +80,17 @@ public class InternalAprInputBuffer extends AbstractInputBuffer { /** * Direct byte buffer used to perform actual reading. */ - protected ByteBuffer bbuf; + private ByteBuffer bbuf; /** * Underlying socket. */ - protected long socket; - - - // ------------------------------------------------------------- Properties - - - /** - * Set the underlying socket. - */ - public void setSocket(long socket) { - this.socket = socket; - Socket.setrbb(this.socket, bbuf); - } - - - /** - * Get the underlying socket input stream. - */ - public long getSocket() { - return socket; - } + private long socket; // --------------------------------------------------------- Public Methods - /** * Recycle the input buffer. This should be called when closing the * connection. @@ -341,7 +322,7 @@ public class InternalAprInputBuffer extends AbstractInputBuffer { * HTTP header parsing is done */ @SuppressWarnings("null") // headerValue cannot be null - public boolean parseHeader() + private boolean parseHeader() throws IOException { // @@ -567,6 +548,14 @@ public class InternalAprInputBuffer extends AbstractInputBuffer { // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper socketWrapper, + AbstractEndpoint endpoint) throws IOException { + + socket = socketWrapper.getSocket().longValue(); + Socket.setrbb(this.socket, bbuf); + } + @Override protected boolean fill(boolean block) throws IOException { @@ -666,11 +655,6 @@ public class InternalAprInputBuffer extends AbstractInputBuffer { pos = lastValid; return (length); - } - - } - - } diff --git a/java/org/apache/coyote/http11/InternalInputBuffer.java b/java/org/apache/coyote/http11/InternalInputBuffer.java index 6c06d74ab..8a3222eeb 100644 --- a/java/org/apache/coyote/http11/InternalInputBuffer.java +++ b/java/org/apache/coyote/http11/InternalInputBuffer.java @@ -19,6 +19,7 @@ package org.apache.coyote.http11; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; +import java.net.Socket; import java.nio.charset.Charset; import org.apache.coyote.InputBuffer; @@ -27,6 +28,8 @@ import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; +import org.apache.tomcat.util.net.AbstractEndpoint; +import org.apache.tomcat.util.net.SocketWrapper; /** * Implementation of InputBuffer which provides HTTP request header parsing as @@ -34,7 +37,7 @@ import org.apache.tomcat.util.buf.MessageBytes; * * @author Remy Maucherat */ -public class InternalInputBuffer extends AbstractInputBuffer { +public class InternalInputBuffer extends AbstractInputBuffer { private static final Log log = LogFactory.getLog(InternalInputBuffer.class); @@ -42,7 +45,7 @@ public class InternalInputBuffer extends AbstractInputBuffer { /** * Underlying input stream. */ - protected InputStream inputStream; + private InputStream inputStream; /** @@ -68,28 +71,6 @@ public class InternalInputBuffer extends AbstractInputBuffer { /** - * Set the underlying socket input stream. - */ - public void setInputStream(InputStream inputStream) { - - // FIXME: Check for null ? - - this.inputStream = inputStream; - - } - - - /** - * Get the underlying socket input stream. - */ - public InputStream getInputStream() { - - return inputStream; - - } - - - /** * Read the request line. This function is meant to be used during the * HTTP request header parsing. Do NOT attempt to read the request body * using it. @@ -297,7 +278,7 @@ public class InternalInputBuffer extends AbstractInputBuffer { * HTTP header parsing is done */ @SuppressWarnings("null") // headerValue cannot be null - public boolean parseHeader() + private boolean parseHeader() throws IOException { // @@ -468,6 +449,14 @@ public class InternalInputBuffer extends AbstractInputBuffer { // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper socketWrapper, + AbstractEndpoint endpoint) throws IOException { + inputStream = socketWrapper.getSocket().getInputStream(); + } + + + private void skipLine(int start) throws IOException { boolean eol = false; int lastRealByte = start; @@ -576,11 +565,6 @@ public class InternalInputBuffer extends AbstractInputBuffer { pos = lastValid; return (length); - } - - } - - } diff --git a/java/org/apache/coyote/http11/InternalNioInputBuffer.java b/java/org/apache/coyote/http11/InternalNioInputBuffer.java index 7cd6a207e..e05a8070b 100644 --- a/java/org/apache/coyote/http11/InternalNioInputBuffer.java +++ b/java/org/apache/coyote/http11/InternalNioInputBuffer.java @@ -25,9 +25,11 @@ import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; +import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.NioChannel; import org.apache.tomcat.util.net.NioEndpoint; import org.apache.tomcat.util.net.NioSelectorPool; +import org.apache.tomcat.util.net.SocketWrapper; /** * Implementation of InputBuffer which provides HTTP request header parsing as @@ -36,7 +38,7 @@ import org.apache.tomcat.util.net.NioSelectorPool; * @author Remy Maucherat * @author Filip Hanik */ -public class InternalNioInputBuffer extends AbstractInputBuffer { +public class InternalNioInputBuffer extends AbstractInputBuffer { private static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(InternalNioInputBuffer.class); @@ -84,22 +86,22 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { * Parsing state - used for non blocking parsing so that * when more data arrives, we can pick up where we left off. */ - protected boolean parsingRequestLine; - protected int parsingRequestLinePhase = 0; - protected boolean parsingRequestLineEol = false; - protected int parsingRequestLineStart = 0; - protected int parsingRequestLineQPos = -1; - protected HeaderParsePosition headerParsePos; + private boolean parsingRequestLine; + private int parsingRequestLinePhase = 0; + private boolean parsingRequestLineEol = false; + private int parsingRequestLineStart = 0; + private int parsingRequestLineQPos = -1; + private HeaderParsePosition headerParsePos; /** * Underlying socket. */ - protected NioChannel socket; + private NioChannel socket; /** * Selector pool, for blocking reads and blocking writes */ - protected NioSelectorPool pool; + private NioSelectorPool pool; /** @@ -124,47 +126,8 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { */ private int skipBlankLinesBytes; - // ------------------------------------------------------------- Properties - - - /** - * Set the underlying socket. - */ - public void setSocket(NioChannel socket) { - this.socket = socket; - socketReadBufferSize = socket.getBufHandler().getReadBuffer().capacity(); - int bufLength = skipBlankLinesSize + headerBufferSize - + socketReadBufferSize; - if (buf == null || buf.length < bufLength) { - buf = new byte[bufLength]; - } - } - - /** - * Get the underlying socket input stream. - */ - public NioChannel getSocket() { - return socket; - } - - public void setSelectorPool(NioSelectorPool pool) { - this.pool = pool; - } - - public NioSelectorPool getSelectorPool() { - return pool; - } - // --------------------------------------------------------- Public Methods - /** - * Issues a non blocking read - * @return int - * @throws IOException - */ - public int nbRead() throws IOException { - return readSocket(true,false); - } /** * Recycle the input buffer. This should be called when closing the @@ -429,18 +392,18 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { if ( block ) { Selector selector = null; try { - selector = getSelectorPool().get(); + selector = pool.get(); } catch ( IOException x ) { // Ignore } try { NioEndpoint.KeyAttachment att = (NioEndpoint.KeyAttachment)socket.getAttachment(false); if ( att == null ) throw new IOException("Key must be cancelled."); - nRead = getSelectorPool().read(socket.getBufHandler().getReadBuffer(),socket,selector,att.getTimeout()); + nRead = pool.read(socket.getBufHandler().getReadBuffer(),socket,selector,att.getTimeout()); } catch ( EOFException eof ) { nRead = -1; } finally { - if ( selector != null ) getSelectorPool().put(selector); + if ( selector != null ) pool.put(selector); } } else { nRead = socket.read(socket.getBufHandler().getReadBuffer()); @@ -500,7 +463,7 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { * @return false after reading a blank line (which indicates that the * HTTP header parsing is done */ - public HeaderParseStatus parseHeader() + private HeaderParseStatus parseHeader() throws IOException { // @@ -677,6 +640,10 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { return HeaderParseStatus.HAVE_MORE_HEADERS; } + public int getParsingRequestLinePhase() { + return parsingRequestLinePhase; + } + private HeaderParseStatus skipLine() throws IOException { headerParsePos = HeaderParsePosition.HEADER_SKIPLINE; boolean eol = false; @@ -712,7 +679,7 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { return HeaderParseStatus.HAVE_MORE_HEADERS; } - protected HeaderParseData headerData = new HeaderParseData(); + private HeaderParseData headerData = new HeaderParseData(); public static class HeaderParseData { int start = 0; int realPos = 0; @@ -743,6 +710,24 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper socketWrapper, + AbstractEndpoint endpoint) throws IOException { + + socket = socketWrapper.getSocket(); + socketReadBufferSize = + socket.getBufHandler().getReadBuffer().capacity(); + + int bufLength = skipBlankLinesSize + headerBufferSize + + socketReadBufferSize; + if (buf == null || buf.length < bufLength) { + buf = new byte[bufLength]; + } + + pool = ((NioEndpoint)endpoint).getSelectorPool(); + } + + /** * Fill the internal buffer using data from the underlying input stream. * @@ -804,16 +789,6 @@ public class InternalNioInputBuffer extends AbstractInputBuffer { pos = lastValid; return (length); - } - - - } - - - public int getParsingRequestLinePhase() { - return parsingRequestLinePhase; } - - }