| java.lang.Object org.apache.catalina.tribes.io.XByteBuffer
XByteBuffer | public class XByteBuffer (Code) | | The XByteBuffer provides a dual functionality.
One, it stores message bytes and automatically extends the byte buffer if needed.
Two, it can encode and decode packages so that they can be defined and identified
as they come in on a socket.
THIS CLASS IS NOT THREAD SAFE
Transfer package:
- START_DATA/b> - 7 bytes - FLT2002
- SIZE - 4 bytes - size of the data package
- DATA - should be as many bytes as the prev SIZE
- END_DATA - 7 bytes - TLF2003
author: Filip Hanik version: $Revision: 467173 $, $Date: 2006-10-24 01:12:17 +0200 (mar., 24 oct. 2006) $ |
Field Summary | |
final public static byte[] | END_DATA | final public static byte[] | START_DATA | protected byte[] | buf | protected int | bufSize | protected boolean | discard Flag for discarding invalid packages
If this flag is set to true, and append(byte[],...) is called,
the data added will be inspected, and if it doesn't start with
START_DATA it will be thrown away. | public static int | invokecount | public static org.apache.juli.logging.Log | log |
Constructor Summary | |
public | XByteBuffer(int size, boolean discard) | public | XByteBuffer(byte[] data, boolean discard) | public | XByteBuffer(byte[] data, int size, boolean discard) |
Method Summary | |
public boolean | append(ByteBuffer b, int len) Appends the data to the buffer. | public boolean | append(byte i) | public boolean | append(boolean i) | public boolean | append(long i) | public boolean | append(int i) | public boolean | append(byte[] b, int off, int len) | public void | clear() | public int | countPackages() | public int | countPackages(boolean first) | public static byte[] | createDataPackage(ChannelData cdata) | public static byte[] | createDataPackage(byte[] data, int doff, int dlength, byte[] buffer, int bufoff) | public static byte[] | createDataPackage(byte[] data) | public static Serializable | deserialize(byte[] data) | public static Serializable | deserialize(byte[] data, int offset, int length) | public static Serializable | deserialize(byte[] data, int offset, int length, ClassLoader[] cls) | public boolean | doesPackageExist() Method to check if a package exists in this byte buffer. | public void | expand(int newcount) | public XByteBuffer | extractDataPackage(boolean clearFromBuffer) Extracts the message bytes from a package. | public ChannelData | extractPackage(boolean clearFromBuffer) | public static int | firstIndexOf(byte[] src, int srcOff, byte[] find) Similar to a String.IndexOf, but uses pure bytes
Parameters: src - - the source bytes to be searched Parameters: srcOff - - offset on the source buffer Parameters: find - - the string to be found within src - the index of the first matching byte. | public byte[] | getBytes() | public byte[] | getBytesDirect() | public int | getCapacity() | public static int | getDataPackageLength(int datalength) | public boolean | getDiscard() | public int | getLength() | public void | reset() | public static byte[] | serialize(Serializable msg) | public void | setDiscard(boolean discard) | public void | setLength(int size) | public static boolean | toBoolean(byte[] b, int offset) | public static byte[] | toBytes(boolean bool) | public static byte[] | toBytes(boolean bool, byte[] data, int offset) | public static byte[] | toBytes(int n) | public static byte[] | toBytes(int n, byte[] b, int offset) | public static byte[] | toBytes(long n) | public static byte[] | toBytes(long n, byte[] b, int offset) | public static int | toInt(byte[] b, int off) | public static long | toLong(byte[] b, int off) | public void | trim(int length) |
END_DATA | final public static byte[] END_DATA(Code) | | This is the package footer, 7 bytes (TLF2003)
|
START_DATA | final public static byte[] START_DATA(Code) | | This is a package header, 7 bytes (FLT2002)
|
buf | protected byte[] buf(Code) | | Variable to hold the data
|
bufSize | protected int bufSize(Code) | | Current length of data in the buffer
|
discard | protected boolean discard(Code) | | Flag for discarding invalid packages
If this flag is set to true, and append(byte[],...) is called,
the data added will be inspected, and if it doesn't start with
START_DATA it will be thrown away.
|
invokecount | public static int invokecount(Code) | | |
XByteBuffer | public XByteBuffer(int size, boolean discard)(Code) | | Constructs a new XByteBuffer
Parameters: size - - the initial size of the byte buffer |
XByteBuffer | public XByteBuffer(byte[] data, boolean discard)(Code) | | |
XByteBuffer | public XByteBuffer(byte[] data, int size, boolean discard)(Code) | | |
append | public boolean append(ByteBuffer b, int len)(Code) | | Appends the data to the buffer. If the data is incorrectly formatted, ie, the data should always start with the
header, false will be returned and the data will be discarded.
Parameters: b - - bytes to be appended Parameters: off - - the offset to extract data from Parameters: len - - the number of bytes to append. true if the data was appended correctly. Returns false if the package is incorrect, ie missing header or something, or the length of data is 0 |
append | public boolean append(byte i)(Code) | | |
append | public boolean append(boolean i)(Code) | | |
append | public boolean append(long i)(Code) | | |
append | public boolean append(int i)(Code) | | |
append | public boolean append(byte[] b, int off, int len)(Code) | | |
clear | public void clear()(Code) | | Resets the buffer
|
countPackages | public int countPackages()(Code) | | Internal mechanism to make a check if a complete package exists
within the buffer
- true if a complete package (header,compress,size,data,footer) exists within the buffer |
countPackages | public int countPackages(boolean first)(Code) | | |
createDataPackage | public static byte[] createDataPackage(ChannelData cdata)(Code) | | Creates a complete data package
Parameters: indata - - the message data to be contained within the package Parameters: compressed - - compression flag for the indata buffer - a full package (header,size,data,footer) |
createDataPackage | public static byte[] createDataPackage(byte[] data, int doff, int dlength, byte[] buffer, int bufoff)(Code) | | |
createDataPackage | public static byte[] createDataPackage(byte[] data)(Code) | | |
doesPackageExist | public boolean doesPackageExist()(Code) | | Method to check if a package exists in this byte buffer.
- true if a complete package (header,options,size,data,footer) exists within the buffer |
expand | public void expand(int newcount)(Code) | | |
extractDataPackage | public XByteBuffer extractDataPackage(boolean clearFromBuffer)(Code) | | Extracts the message bytes from a package.
If no package exists, a IllegalStateException will be thrown.
Parameters: clearFromBuffer - - if true, the package will be removed from the byte buffer - returns the actual message bytes (header, compress,size and footer not included). |
firstIndexOf | public static int firstIndexOf(byte[] src, int srcOff, byte[] find)(Code) | | Similar to a String.IndexOf, but uses pure bytes
Parameters: src - - the source bytes to be searched Parameters: srcOff - - offset on the source buffer Parameters: find - - the string to be found within src - the index of the first matching byte. -1 if the find array is not found |
getBytes | public byte[] getBytes()(Code) | | Returns the bytes in the buffer, in its exact length
|
getBytesDirect | public byte[] getBytesDirect()(Code) | | |
getCapacity | public int getCapacity()(Code) | | |
getDataPackageLength | public static int getDataPackageLength(int datalength)(Code) | | |
getDiscard | public boolean getDiscard()(Code) | | |
getLength | public int getLength()(Code) | | |
reset | public void reset()(Code) | | |
serialize | public static byte[] serialize(Serializable msg) throws IOException(Code) | | Serializes a message into cluster data
Parameters: msg - ClusterMessage Parameters: compress - boolean throws: IOException - |
setDiscard | public void setDiscard(boolean discard)(Code) | | |
setLength | public void setLength(int size)(Code) | | |
toBoolean | public static boolean toBoolean(byte[] b, int offset)(Code) | | < Parameters: any - > long use |
toBytes | public static byte[] toBytes(boolean bool)(Code) | | Converts an integer to four bytes
Parameters: n - - the integer - four bytes in an array |
toBytes | public static byte[] toBytes(boolean bool, byte[] data, int offset)(Code) | | |
toBytes | public static byte[] toBytes(int n)(Code) | | Converts an integer to four bytes
Parameters: n - - the integer - four bytes in an array |
toBytes | public static byte[] toBytes(int n, byte[] b, int offset)(Code) | | |
toBytes | public static byte[] toBytes(long n)(Code) | | Converts an long to eight bytes
Parameters: n - - the long - eight bytes in an array |
toBytes | public static byte[] toBytes(long n, byte[] b, int offset)(Code) | | |
toInt | public static int toInt(byte[] b, int off)(Code) | | Convert four bytes to an int
Parameters: b - - the byte array containing the four bytes Parameters: off - - the offset the integer value constructed from the four bytes exception: java.lang.ArrayIndexOutOfBoundsException - |
toLong | public static long toLong(byte[] b, int off)(Code) | | Convert eight bytes to a long
Parameters: b - - the byte array containing the four bytes Parameters: off - - the offset the long value constructed from the eight bytes exception: java.lang.ArrayIndexOutOfBoundsException - |
trim | public void trim(int length)(Code) | | |
|
|