Author: markt Date: Tue Jan 13 20:39:22 2015 New Revision: 1651478 URL: http://svn.apache.org/r1651478 Log: checkpoint - add readByteBuffer
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.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=1651478&r1=1651477&r2=1651478&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Tue Jan 13 20:39:22 2015 @@ -118,10 +118,26 @@ public abstract class AbstractInputBuffe /** - * Pointer to the current read buffer. + * The read buffer represented as a byte[]. + * <p> + * SocketWrapper uses ByteBuffer (since reading from socket to ByteBuffer is + * the only API common to all current I/O implementations) but this class + * uses byte[] since that is more efficient for parsing. readByteBuffer + * therefore wraps buf. The byte[] representation is only used for reading. + * The ByteBuffer representation is only used for writing. */ protected byte[] buf; + /** + * The read buffer represented as a ByteBuffer. + * <p> + * SocketWrapper uses ByteBuffer (since reading from socket to ByteBuffer is + * the only API common to all current I/O implementations) but this class + * uses byte[] since that is more efficient for parsing. readByteBuffer + * therefore wraps buf. The byte[] representation is only used for reading. + * The ByteBuffer representation is only used for writing. + */ + protected ByteBuffer readByteBuffer; /** * Last valid byte. @@ -371,6 +387,7 @@ public abstract class AbstractInputBuffe // Reset pointers lastValid = lastValid - pos; + readByteBuffer.position(lastValid); pos = 0; lastActiveFilter = -1; parsingHeader = true; @@ -631,6 +648,8 @@ public abstract class AbstractInputBuffe byte[] tmp = new byte[newsize]; System.arraycopy(buf,0,tmp,0,buf.length); buf = tmp; + readByteBuffer = ByteBuffer.wrap(buf); + readByteBuffer.position(lastValid); } } 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=1651478&r1=1651477&r2=1651478&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Tue Jan 13 20:39:22 2015 @@ -17,6 +17,7 @@ package org.apache.coyote.http11; import java.io.IOException; +import java.nio.ByteBuffer; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; @@ -84,6 +85,7 @@ public class InternalAprInputBuffer exte int bufLength = Math.max(headerBufferSize, 8192); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; + readByteBuffer = ByteBuffer.wrap(buf); } } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1651478&r1=1651477&r2=1651478&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Tue Jan 13 20:39:22 2015 @@ -146,6 +146,7 @@ public class InternalNio2InputBuffer ext int bufLength = headerBufferSize + socketReadBufferSize; if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; + readByteBuffer = ByteBuffer.wrap(buf); } // Initialize the completion handler 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=1651478&r1=1651477&r2=1651478&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Tue Jan 13 20:39:22 2015 @@ -98,6 +98,7 @@ public class InternalNioInputBuffer exte int bufLength = headerBufferSize + socketReadBufferSize; if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; + readByteBuffer = ByteBuffer.wrap(buf); } pool = ((NioEndpoint)endpoint).getSelectorPool(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org