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:[email protected]">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:[email protected]">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:[email protected]">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: [email protected]
For additional commands, e-mail: [email protected]