You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2005/10/15 08:43:43 UTC
svn commit: r321299 -
/tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java
Author: costin
Date: Fri Oct 14 23:43:41 2005
New Revision: 321299
URL: http://svn.apache.org/viewcvs?rev=321299&view=rev
Log:
Added a couple of comments.
Modified:
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java
Modified: tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java
URL: http://svn.apache.org/viewcvs/tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java?rev=321299&r1=321298&r2=321299&view=diff
==============================================================================
--- tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java (original)
+++ tomcat/connectors/trunk/util/java/org/apache/tomcat/util/buf/ByteChunk.java Fri Oct 14 23:43:41 2005
@@ -33,6 +33,8 @@
* to be able to parse the request without converting to string.
*/
+// TODO: This class could either extend ByteBuffer, or better a ByteBuffer inside
+// this way it could provide the search/etc on ByteBuffer, as a helper.
/**
* This class is used to represent a chunk of bytes, and
@@ -40,6 +42,19 @@
*
* The buffer can be modified and used for both input and output.
*
+ * There are 2 modes: The chunk can be associated with a sink - ByteInputChannel or ByteOutputChannel,
+ * which will be used when the buffer is empty ( on input ) or filled ( on output ).
+ * For output, it can also grow. This operating mode is selected by calling setLimit() or
+ * allocate(initial, limit) with limit != -1.
+ *
+ * Various search and append method are defined - similar with String and StringBuffer, but
+ * operating on bytes.
+ *
+ * This is important because it allows processing the http headers directly on the received bytes,
+ * without converting to chars and Strings until the strings are needed. In addition, the charset
+ * is determined later, from headers or user code.
+ *
+ *
* @author dac@sun.com
* @author James Todd [gonzo@sun.com]
* @author Costin Manolache
@@ -47,7 +62,10 @@
*/
public final class ByteChunk implements Cloneable, Serializable {
- // Input interface, used when the buffer is emptied.
+ /** Input interface, used when the buffer is emptiy
+ *
+ * Same as java.nio.channel.ReadableByteChannel
+ */
public static interface ByteInputChannel {
/**
* Read new bytes ( usually the internal conversion buffer ).
@@ -57,7 +75,9 @@
public int realReadBytes(byte cbuf[], int off, int len)
throws IOException;
}
- // Output interface, used when the buffer is filled.
+
+ /** Same as java.nio.channel.WrittableByteChannel.
+ */
public static interface ByteOutputChannel {
/**
* Send the bytes ( usually the internal conversion buffer ).
@@ -105,7 +125,7 @@
}
//--------------------
- public ByteChunk getClone() {
+ public ByteChunk getClone() {
try {
return (ByteChunk)this.clone();
} catch( Exception ex) {
@@ -251,6 +271,11 @@
}
// -------------------- Adding data to the buffer --------------------
+ /** Append a char, by casting it to byte. This IS NOT intended for unicode.
+ *
+ * @param c
+ * @throws IOException
+ */
public void append( char c )
throws IOException
{
@@ -392,6 +417,11 @@
}
+ /** Send the buffer to the sink. Called by append() when the limit is reached.
+ * You can also call it explicitely to force the data to be written.
+ *
+ * @throws IOException
+ */
public void flushBuffer()
throws IOException
{
@@ -777,7 +807,7 @@
/**
- * Convert specified String to a byte array.
+ * Convert specified String to a byte array. This ONLY WORKS for ascii, UTF chars will be truncated.
*
* @param value to convert to byte array
* @return the byte array value
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org