org.apache.jk.common

Class MsgAjp


public class MsgAjp
extends Msg

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.

Authors:
Henri Gomez [hgomez@apache.org]
Dan Milstein [danmil@shore.net]
Keith Wannamaker [Keith@Wannamaker.org]
Kevin Seguin
Costin Manolache

See Also:
Ajp14/Ajp13Packet

Method Summary

void
appendByte(int val)
void
appendByteChunk(ByteChunk bc)
void
appendBytes(b[] , int off, int numBytes)
Copy a chunk of bytes into the packet, starting at the current write position.
void
appendBytes(MessageBytes mb)
Write a String out at the current write position.
void
appendInt(int val)
Add an int.
void
appendLongInt(int val)
void
dump(String msg)
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.
byte[]
getBuffer()
byte
getByte()
int
getBytes(dest[] )
Copy a chunk of bytes from the packet into an array and advance the read position past the chunk.
void
getBytes(MessageBytes mb)
int
getHeaderLength()
int
getInt()
Read an integer from packet, and advance the read position past it.
int
getLen()
int
getLongInt()
Read a 32 bits integer from packet, and advance the read position past it.
static String
hexLine(buf[] , int start, int len)
byte
peekByte()
int
peekInt()
int
processHeader()
void
reset()
Prepare this packet for accumulating a message from the container to the web server.

Methods inherited from class org.apache.jk.core.Msg

appendByte, appendByteChunk, appendBytes, appendBytes, appendInt, appendLongInt, dump, end, getBuffer, getByte, getBytes, getBytes, getHeaderLength, getInt, getLen, getLongInt, hexLine, peekByte, peekInt, processHeader, reset

Method Details

appendByte

public void appendByte(int val)
Overrides:
appendByte in interface Msg


appendByteChunk

public void appendByteChunk(ByteChunk bc)
            throws IOException
Overrides:
appendByteChunk in interface Msg


appendBytes

public void appendBytes(b[] ,
                        int off,
                        int numBytes)
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).
Overrides:
appendBytes in interface Msg

Parameters:
off - The offset into the array at which to start copying


appendBytes

public void appendBytes(MessageBytes mb)
            throws IOException
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.
Overrides:
appendBytes in interface Msg


appendInt

public void appendInt(int val)
Add an int.
Overrides:
appendInt in interface Msg

Parameters:
val - The integer to write.


appendLongInt

public void appendLongInt(int val)
Overrides:
appendLongInt in interface Msg


dump

public void dump(String msg)
Overrides:
dump in interface Msg


end

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.
Overrides:
end in interface Msg


getBuffer

public byte[] getBuffer()
Overrides:
getBuffer in interface Msg


getByte

public byte getByte()
Overrides:
getByte in interface Msg


getBytes

public int getBytes(dest[] )
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.
Overrides:
getBytes in interface Msg

Returns:
The number of bytes copied.


getBytes

public void getBytes(MessageBytes mb)
Overrides:
getBytes in interface Msg


getHeaderLength

public int getHeaderLength()
Overrides:
getHeaderLength in interface Msg


getInt

public int getInt()
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.
Overrides:
getInt in interface Msg


getLen

public int getLen()
Overrides:
getLen in interface Msg


getLongInt

public int getLongInt()
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.
Overrides:
getLongInt in interface Msg


hexLine

public static String hexLine(buf[] ,
                             int start,
                             int len)
Overrides:
hexLine in interface Msg


peekByte

public byte peekByte()
Overrides:
peekByte in interface Msg


peekInt

public int peekInt()
Overrides:
peekInt in interface Msg


processHeader

public int processHeader()
Overrides:
processHeader in interface Msg


reset

public void reset()
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).
Overrides:
reset in interface Msg


Copyright B) 2000-2003 Apache Software Foundation. All Rights Reserved.