Author: markt Date: Fri Aug 12 17:59:22 2011 New Revision: 1157198 URL: http://svn.apache.org/viewvc?rev=1157198&view=rev Log: Align InputBuffer initialisation across the connectors Remove unused code Reduce visibility of properties and methods
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java?rev=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Fri Aug 12 17:59:22 2011 @@ -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<S> implements InputBuffer{ protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; @@ -223,12 +225,16 @@ public abstract class AbstractInputBuffe } - 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<S> socketWrapper, + AbstractEndpoint endpoint) throws IOException; + // --------------------------------------------------------- Public Methods 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=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Fri Aug 12 17:59:22 2011 @@ -174,8 +174,8 @@ public class Http11AprProcessor extends // 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 } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer<Long> getInputBuffer() { return inputBuffer; } 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=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Fri Aug 12 17:59:22 2011 @@ -205,9 +205,8 @@ public class Http11NioProcessor extends // 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 } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer<NioChannel> getInputBuffer() { return inputBuffer; } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Fri Aug 12 17:59:22 2011 @@ -138,7 +138,7 @@ public class Http11Processor extends Abs // 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 Abs } @Override - protected AbstractInputBuffer getInputBuffer() { + protected AbstractInputBuffer<Socket> getInputBuffer() { return inputBuffer; } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Fri Aug 12 17:59:22 2011 @@ -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.Messag * * @author <a href="mailto:r...@apache.org">Remy Maucherat</a> */ -public class InternalAprInputBuffer extends AbstractInputBuffer { +public class InternalAprInputBuffer extends AbstractInputBuffer<Long> { private static final Log log = LogFactory.getLog(InternalAprInputBuffer.class); @@ -78,38 +80,17 @@ public class InternalAprInputBuffer exte /** * 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 exte * 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 exte // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper<Long> 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 exte pos = lastValid; return (length); - } - - } - - } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java?rev=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalInputBuffer.java Fri Aug 12 17:59:22 2011 @@ -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.Messag * * @author <a href="mailto:r...@apache.org">Remy Maucherat</a> */ -public class InternalInputBuffer extends AbstractInputBuffer { +public class InternalInputBuffer extends AbstractInputBuffer<Socket> { private static final Log log = LogFactory.getLog(InternalInputBuffer.class); @@ -42,7 +45,7 @@ public class InternalInputBuffer extends /** * Underlying input stream. */ - protected InputStream inputStream; + private InputStream inputStream; /** @@ -68,28 +71,6 @@ public class InternalInputBuffer extends /** - * 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 * 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 // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper<Socket> 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 pos = lastValid; return (length); - } - - } - - } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1157198&r1=1157197&r2=1157198&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Fri Aug 12 17:59:22 2011 @@ -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.NioSel * @author <a href="mailto:r...@apache.org">Remy Maucherat</a> * @author Filip Hanik */ -public class InternalNioInputBuffer extends AbstractInputBuffer { +public class InternalNioInputBuffer extends AbstractInputBuffer<NioChannel> { private static final org.apache.juli.logging.Log log = org.apache.juli.logging.LogFactory.getLog(InternalNioInputBuffer.class); @@ -84,22 +86,22 @@ public class InternalNioInputBuffer exte * 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 exte */ 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 exte 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 exte * @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 exte 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 exte 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 exte // ------------------------------------------------------ Protected Methods + @Override + protected void init(SocketWrapper<NioChannel> 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 exte pos = lastValid; return (length); - } - - - } - - - public int getParsingRequestLinePhase() { - return parsingRequestLinePhase; } - - } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org