Save This Page
Home » apache-tomcat-6.0.16-src » org.apache » coyote » ajp » [javadoc | source]
org.apache.coyote.ajp
public class: AjpMessage [javadoc | source]
java.lang.Object
   org.apache.coyote.ajp.AjpMessage
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.
Field Summary
protected static  Log log     
protected static  StringManager sm    The string manager for this package. 
protected  byte[] buf    Fixed size buffer. 
protected  int pos    The current read or write position in the buffer. 
protected  int len    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. 
Constructor:
 public AjpMessage(int packetSize) 
Method from org.apache.coyote.ajp.AjpMessage Summary:
appendByte,   appendByteChunk,   appendBytes,   appendBytes,   appendCharChunk,   appendInt,   appendLongInt,   appendString,   dump,   end,   getBuffer,   getByte,   getBytes,   getBytes,   getHeaderLength,   getInt,   getLen,   getLongInt,   getPacketSize,   hex,   hexLine,   peekByte,   peekInt,   processHeader,   reset
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.coyote.ajp.AjpMessage Detail:
 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. 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).
 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. 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.
 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. See appendBytes() for details on the encoding.
 public int getHeaderLength() 
 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.
 public int getLen() 
    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).
 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.
 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. Set the write position to just after the header (but leave the length unwritten, because it is as yet unknown).