| java.lang.Object org.apache.coyote.ajp.AjpMessage
AjpMessage | public class AjpMessage (Code) | | A single packet for communication between the web server and the
container. Designed to be reused many times with no creation of
garbage. Understands the format of data types for these packets.
Can be used (somewhat confusingly) for both incoming and outgoing
packets.
author: Henri Gomez author: Dan Milstein author: Keith Wannamaker author: Kevin Seguin author: Costin Manolache |
Field Summary | |
protected byte | buf Fixed size buffer. | protected int | len This actually means different things depending on whether the
packet is read or write. | protected static org.apache.juli.logging.Log | log | protected int | pos The current read or write position in the buffer. | protected static StringManager | sm The string manager for this package. |
Constructor Summary | |
public | AjpMessage(int packetSize) |
Method Summary | |
public void | appendByte(int val) Append a byte (1 byte) to the message. | public void | appendByteChunk(ByteChunk bc) Write a ByteChunk out at the current write position.
A null ByteChunk is encoded as a string with length 0. | public void | appendBytes(MessageBytes mb) Write a MessageBytes out at the current write position.
A null MessageBytes is encoded as a string with length 0. | public void | appendBytes(byte[] b, int off, int numBytes) Copy a chunk of bytes into the packet, starting at the current
write position. | public void | appendCharChunk(CharChunk cc) Write a CharChunk out at the current write position.
A null CharChunk is encoded as a string with length 0. | public void | appendInt(int val) Add a short integer (2 bytes) to the message. | public void | appendLongInt(int val) Append an int (4 bytes) to the message. | public void | appendString(String str) Write a String out at the current write position. | public void | dump(String msg) Dump the contents of the message, prefixed with the given String. | public void | end() For a packet to be sent to the web server, finish the process of
accumulating data and write the length of the data payload into
the header. | public byte[] | getBuffer() Return the underlying byte buffer. | public byte | getByte() | public void | getBytes(MessageBytes mb) | public int | getBytes(byte[] dest) Copy a chunk of bytes from the packet into an array and advance
the read position past the chunk. | public int | getHeaderLength() | public int | getInt() Read an integer from packet, and advance the read position past
it. | public int | getLen() Return the current message length. | public int | getLongInt() Read a 32 bits integer from packet, and advance the read position past
it. | public int | getPacketSize() | protected static String | hex(int x) | protected static String | hexLine(byte buf, int start, int len) | public byte | peekByte() | public int | peekInt() | public int | processHeader() | public void | reset() Prepare this packet for accumulating a message from the container to
the web server. |
buf | protected byte buf(Code) | | Fixed size buffer.
|
len | protected int len(Code) | | This actually means different things depending on whether the
packet is read or write. For read, it's the length of the
payload (excluding the header). For write, it's the length of
the packet as a whole (counting the header). Oh, well.
|
pos | protected int pos(Code) | | The current read or write position in the buffer.
|
AjpMessage | public AjpMessage(int packetSize)(Code) | | |
appendByte | public void appendByte(int val)(Code) | | Append a byte (1 byte) to the message.
|
appendByteChunk | public void appendByteChunk(ByteChunk bc)(Code) | | Write a ByteChunk out at the current write position.
A null ByteChunk is encoded as a string with length 0.
|
appendBytes | public void appendBytes(MessageBytes mb)(Code) | | Write a MessageBytes out at the current write position.
A null MessageBytes is encoded as a string with length 0.
|
appendBytes | public void appendBytes(byte[] b, int off, int numBytes)(Code) | | Copy a chunk of bytes into the packet, starting at the current
write position. The chunk of bytes is encoded with the length
in two bytes first, then the data itself, and finally a
terminating \0 (which is not included in the encoded
length).
Parameters: b - The array from which to copy bytes. Parameters: off - The offset into the array at which to start copying Parameters: numBytes - The number of bytes to copy. |
appendCharChunk | public void appendCharChunk(CharChunk cc)(Code) | | Write a CharChunk out at the current write position.
A null CharChunk is encoded as a string with length 0.
|
appendInt | public void appendInt(int val)(Code) | | Add a short integer (2 bytes) to the message.
|
appendLongInt | public void appendLongInt(int val)(Code) | | Append an int (4 bytes) to the message.
|
appendString | public void appendString(String str)(Code) | | Write a String out at the current write position. Strings are
encoded with the length in two bytes first, then the string, and
then a terminating \0 (which is not included in the
encoded length). The terminator is for the convenience of the C
code, where it saves a round of copying. A null string is
encoded as a string with length 0.
|
dump | public void dump(String msg)(Code) | | Dump the contents of the message, prefixed with the given String.
|
end | public void end()(Code) | | For a packet to be sent to the web server, finish the process of
accumulating data and write the length of the data payload into
the header.
|
getBuffer | public byte[] getBuffer()(Code) | | Return the underlying byte buffer.
|
getByte | public byte getByte()(Code) | | |
getBytes | public int getBytes(byte[] dest)(Code) | | Copy a chunk of bytes from the packet into an array and advance
the read position past the chunk. See appendBytes() for details
on the encoding.
The number of bytes copied. |
getHeaderLength | public int getHeaderLength()(Code) | | |
getInt | public int getInt()(Code) | | Read an integer from packet, and advance the read position past
it. Integers are encoded as two unsigned bytes with the
high-order byte first, and, as far as I can tell, in
little-endian order within each byte.
|
getLen | public int getLen()(Code) | | Return the current message length. For read, it's the length of the
payload (excluding the header). For write, it's the length of
the packet as a whole (counting the header).
|
getLongInt | public int getLongInt()(Code) | | Read a 32 bits integer from packet, and advance the read position past
it. Integers are encoded as four unsigned bytes with the
high-order byte first, and, as far as I can tell, in
little-endian order within each byte.
|
getPacketSize | public int getPacketSize()(Code) | | |
hexLine | protected static String hexLine(byte buf, int start, int len)(Code) | | |
peekByte | public byte peekByte()(Code) | | |
peekInt | public int peekInt()(Code) | | |
processHeader | public int processHeader()(Code) | | |
reset | public void reset()(Code) | | Prepare this packet for accumulating a message from the container to
the web server. Set the write position to just after the header
(but leave the length unwritten, because it is as yet unknown).
|
|
|