org.glassfish.grizzly.http.util
Class ByteChunk

java.lang.Object
  extended by org.glassfish.grizzly.http.util.ByteChunk
All Implemented Interfaces:
Serializable, Cloneable, Chunk

public final class ByteChunk
extends Object
implements Chunk, Cloneable, Serializable

This class is used to represent a chunk of bytes, and utilities to manipulate byte[]. The buffer can be modified and used for both input and output.

Author:
dac@sun.com, James Todd [gonzo@sun.com], Costin Manolache, Remy Maucherat
See Also:
Serialized Form

Nested Class Summary
static interface ByteChunk.ByteInputChannel
           
static interface ByteChunk.ByteOutputChannel
           
 
Field Summary
static Charset DEFAULT_CHARSET
          Default encoding used to convert to strings.
 
Constructor Summary
ByteChunk()
          Creates a new, uninitialized ByteChunk object.
ByteChunk(int initial)
           
 
Method Summary
 void allocate(int initial, int limit)
           
 void append(byte b)
           
 void append(byte[] src, int off, int len)
          Add data to the buffer
 void append(ByteChunk src)
           
 void append(char c)
           
static byte[] convertToBytes(String value)
          Convert specified String to a byte array.
 void delete(int start, int end)
           
 boolean equals(byte[] b2, int off2, int len2)
           
 boolean equals(ByteChunk bb)
           
 boolean equals(char[] c2, int off2, int len2)
           
 boolean equals(CharChunk cc)
           
 boolean equals(Object o)
           
 boolean equals(String s)
          Compares the message bytes to the specified String object.
 boolean equalsIgnoreCase(byte[] b)
           
 boolean equalsIgnoreCase(String s)
          Compares the message bytes to the specified String object.
 boolean equalsIgnoreCaseLowerCase(byte[] cmpTo)
           
static boolean equalsIgnoreCaseLowerCase(byte[] buffer, int start, int end, byte[] cmpTo)
          Compares the buffer chunk to the specified byte array representing lower-case ASCII characters.
static int findChar(byte[] buf, int start, int end, char c)
          Find a character, no side effects.
static int findChars(byte[] buf, int start, int end, byte[] c)
          Find a character, no side effects.
static int findNotChars(byte[] buf, int start, int end, byte[] c)
          Find the first character != c
 void flushBuffer()
           
 byte[] getBuffer()
          Returns the message bytes.
 byte[] getBytes()
          Returns the message bytes.
 Charset getCharset()
           
 ByteChunk getClone()
           
 int getEnd()
           
 int getInt()
           
 int getLength()
          Returns the length of the bytes.
 int getLimit()
           
 long getLong()
           
 int getOffset()
           
 int getStart()
          Returns the start offset of the bytes.
 int hash()
           
 int hashCode()
           
 int hashIgnoreCase()
           
static int indexOf(byte[] bytes, int off, int end, char qq)
           
 int indexOf(char c, int starting)
          Returns true if the message bytes starts with the specified string.
 int indexOf(String s, int fromIdx)
           
 int indexOf(String src, int srcOff, int srcLen, int myOff)
           
 boolean isNull()
           
protected  void notifyDirectUpdate()
          Notify the Chunk that its content is going to be changed directly
 void recycle()
          Resets the message buff to an uninitialized state.
 void recycleAndReset()
           
 void reset()
           
protected  void resetStringCache()
           
 void setByteInputChannel(ByteChunk.ByteInputChannel in)
          When the buffer is empty, read the data from the input channel.
 void setByteOutputChannel(ByteChunk.ByteOutputChannel out)
          When the buffer is full, write the data to the output channel.
 void setBytes(byte[] b, int off, int len)
          Sets the message bytes to the specified sub-array of bytes.
 void setCharset(Charset charset)
           
 void setEnd(int i)
           
 void setLimit(int limit)
          Maximum amount of data in this buffer.
 void setOffset(int off)
           
 void setOptimizedWrite(boolean optimizedWrite)
           
 void setStart(int start)
           
 boolean startsWith(byte[] b2)
           
static boolean startsWith(byte[] buffer, int start, int end, byte[] cmpTo)
           
 boolean startsWith(String s)
          Returns true if the message bytes starts with the specified string.
 boolean startsWith(String s, int offset)
          Returns true if the message bytes starts with the specified string.
 boolean startsWithIgnoreCase(String s, int pos)
          Returns true if the message bytes starts with the specified string.
 int substract()
           
 int substract(byte[] src, int off, int len)
           
 int substract(ByteChunk src)
           
 String toString()
           
 String toString(Charset charset)
           
 String toString(int start, int end)
           
 String toStringInternal()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_CHARSET

public static Charset DEFAULT_CHARSET
Default encoding used to convert to strings. It should be UTF8, as most standards seem to converge, but the servlet API requires 8859_1, and this object is used mostly for servlets.

Constructor Detail

ByteChunk

public ByteChunk()
Creates a new, uninitialized ByteChunk object.


ByteChunk

public ByteChunk(int initial)
Method Detail

getClone

public ByteChunk getClone()

isNull

public boolean isNull()

recycle

public void recycle()
Resets the message buff to an uninitialized state.


recycleAndReset

public void recycleAndReset()

reset

public void reset()

resetStringCache

protected final void resetStringCache()

allocate

public void allocate(int initial,
                     int limit)

setBytes

public void setBytes(byte[] b,
                     int off,
                     int len)
Sets the message bytes to the specified sub-array of bytes.

Parameters:
b - the ascii bytes
off - the start offset of the bytes
len - the length of the bytes

setOptimizedWrite

public void setOptimizedWrite(boolean optimizedWrite)

getCharset

public Charset getCharset()

setCharset

public void setCharset(Charset charset)

getBytes

public byte[] getBytes()
Returns the message bytes.


getBuffer

public byte[] getBuffer()
Returns the message bytes.


getStart

public int getStart()
Returns the start offset of the bytes. For output this is the end of the buffer.

Specified by:
getStart in interface Chunk

getOffset

public int getOffset()

setStart

public void setStart(int start)
Specified by:
setStart in interface Chunk

setOffset

public void setOffset(int off)

getLength

public int getLength()
Returns the length of the bytes. XXX need to clean this up

Specified by:
getLength in interface Chunk

setLimit

public void setLimit(int limit)
Maximum amount of data in this buffer. If -1 or not set, the buffer will grow indefinitely. Can be smaller than the current buffer size ( which will not shrink ). When the limit is reached, the buffer will be flushed ( if out is set ) or throw exception.


getLimit

public int getLimit()

setByteInputChannel

public void setByteInputChannel(ByteChunk.ByteInputChannel in)
When the buffer is empty, read the data from the input channel.


setByteOutputChannel

public void setByteOutputChannel(ByteChunk.ByteOutputChannel out)
When the buffer is full, write the data to the output channel. Also used when large amount of data is appended. If not set, the buffer will grow to the limit.


getEnd

public int getEnd()
Specified by:
getEnd in interface Chunk

setEnd

public void setEnd(int i)
Specified by:
setEnd in interface Chunk

notifyDirectUpdate

protected void notifyDirectUpdate()
Notify the Chunk that its content is going to be changed directly


indexOf

public int indexOf(String s,
                   int fromIdx)
Specified by:
indexOf in interface Chunk

delete

public void delete(int start,
                   int end)
Specified by:
delete in interface Chunk

append

public void append(char c)
            throws IOException
Throws:
IOException

append

public void append(byte b)
            throws IOException
Throws:
IOException

append

public void append(ByteChunk src)
            throws IOException
Throws:
IOException

append

public void append(byte[] src,
                   int off,
                   int len)
            throws IOException
Add data to the buffer

Throws:
IOException

substract

public int substract()
              throws IOException
Throws:
IOException

substract

public int substract(ByteChunk src)
              throws IOException
Throws:
IOException

substract

public int substract(byte[] src,
                     int off,
                     int len)
              throws IOException
Throws:
IOException

flushBuffer

public void flushBuffer()
                 throws IOException
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Object

toString

public String toString(int start,
                       int end)
Specified by:
toString in interface Chunk

toString

public String toString(Charset charset)

toStringInternal

public String toStringInternal()

getInt

public int getInt()

getLong

public long getLong()

hashCode

public int hashCode()
Overrides:
hashCode in class Object

equals

public boolean equals(Object o)
Overrides:
equals in class Object

equals

public boolean equals(String s)
Compares the message bytes to the specified String object.

Parameters:
s - the String to compare
Returns:
true if the comparison succeeded, false otherwise

equalsIgnoreCase

public boolean equalsIgnoreCase(String s)
Compares the message bytes to the specified String object.

Parameters:
s - the String to compare
Returns:
true if the comparison succeeded, false otherwise

equalsIgnoreCase

public boolean equalsIgnoreCase(byte[] b)

equalsIgnoreCaseLowerCase

public boolean equalsIgnoreCaseLowerCase(byte[] cmpTo)

equals

public boolean equals(ByteChunk bb)

equals

public boolean equals(byte[] b2,
                      int off2,
                      int len2)

equals

public boolean equals(CharChunk cc)

equals

public boolean equals(char[] c2,
                      int off2,
                      int len2)

startsWith

public boolean startsWith(String s)
Returns true if the message bytes starts with the specified string.

Parameters:
s - the string

startsWith

public boolean startsWith(String s,
                          int offset)
Returns true if the message bytes starts with the specified string.

Parameters:
s - the string
offset - The position

startsWith

public boolean startsWith(byte[] b2)

startsWithIgnoreCase

public boolean startsWithIgnoreCase(String s,
                                    int pos)
Returns true if the message bytes starts with the specified string.

Parameters:
s - the string
pos - The position

indexOf

public int indexOf(String src,
                   int srcOff,
                   int srcLen,
                   int myOff)

hash

public int hash()

hashIgnoreCase

public int hashIgnoreCase()

equalsIgnoreCaseLowerCase

public static boolean equalsIgnoreCaseLowerCase(byte[] buffer,
                                                int start,
                                                int end,
                                                byte[] cmpTo)
Compares the buffer chunk to the specified byte array representing lower-case ASCII characters.

Parameters:
buffer - the byte[] to compare
start - buffer start
end - buffer end
cmpTo - byte[] to compare against
Returns:
true if the comparison succeeded, false otherwise
Since:
2.3

startsWith

public static boolean startsWith(byte[] buffer,
                                 int start,
                                 int end,
                                 byte[] cmpTo)

indexOf

public int indexOf(char c,
                   int starting)
Returns true if the message bytes starts with the specified string.

Specified by:
indexOf in interface Chunk
Parameters:
c - the character
starting - The start position

indexOf

public static int indexOf(byte[] bytes,
                          int off,
                          int end,
                          char qq)

findChar

public static int findChar(byte[] buf,
                           int start,
                           int end,
                           char c)
Find a character, no side effects.

Returns:
index of char if found, -1 if not

findChars

public static int findChars(byte[] buf,
                            int start,
                            int end,
                            byte[] c)
Find a character, no side effects.

Returns:
index of char if found, -1 if not

findNotChars

public static int findNotChars(byte[] buf,
                               int start,
                               int end,
                               byte[] c)
Find the first character != c

Returns:
index of char if found, -1 if not

convertToBytes

public static byte[] convertToBytes(String value)
Convert specified String to a byte array.

Parameters:
value - to convert to byte array
Returns:
the byte array value


Copyright © 2012 Oracle Corporation. All Rights Reserved.