remm 2005/08/02 03:08:43
Modified: jk/java/org/apache/coyote/ajp AjpMessage.java
Log:
- More minor cleanups. In particular, remove the IOEs, which are not thrown
anywhere.
Revision Changes Path
1.5 +47 -29
jakarta-tomcat-connectors/jk/java/org/apache/coyote/ajp/AjpMessage.java
Index: AjpMessage.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/coyote/ajp/AjpMessage.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AjpMessage.java 1 Aug 2005 09:40:14 -0000 1.4
+++ AjpMessage.java 2 Aug 2005 10:08:43 -0000 1.5
@@ -103,20 +103,26 @@
}
+ /**
+ * Return the underlying byte buffer.
+ */
public byte[] getBuffer() {
return buf;
}
+ /**
+ * 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 getLen() {
return len;
}
/**
- * Add an int.
- *
- * @param val The integer to write.
+ * Add a short integer (2 bytes) to the message.
*/
public void appendInt(int val) {
buf[pos++] = (byte) ((val >>> 8) & 0xFF);
@@ -124,11 +130,17 @@
}
+ /**
+ * Append a byte (1 byte) to the message.
+ */
public void appendByte(int val) {
buf[pos++] = (byte) val;
}
+ /**
+ * Append an int (4 bytes) to the message.
+ */
public void appendLongInt(int val) {
buf[pos++] = (byte) ((val >>> 24) & 0xFF);
buf[pos++] = (byte) ((val >>> 16) & 0xFF);
@@ -138,21 +150,17 @@
/**
- * 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 <B>not</B> 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.
+ * Write a MessageBytes out at the current write position.
+ * A null MessageBytes is encoded as a string with length 0.
*/
- public void appendBytes(MessageBytes mb)
- throws IOException {
- if (mb == null || mb.isNull()) {
+ public void appendBytes(MessageBytes mb) {
+ if (mb == null) {
+ log.error(sm.getString("ajpmessage.null"),
+ new NullPointerException());
appendInt(0);
appendByte(0);
return;
}
-
if (mb.getType() == MessageBytes.T_BYTES) {
ByteChunk bc = mb.getByteChunk();
appendByteChunk(bc);
@@ -165,8 +173,11 @@
}
- public void appendByteChunk(ByteChunk bc)
- throws IOException {
+ /**
+ * Write a ByteChunk out at the current write position.
+ * A null ByteChunk is encoded as a string with length 0.
+ */
+ public void appendByteChunk(ByteChunk bc) {
if (bc == null) {
log.error(sm.getString("ajpmessage.null"),
new NullPointerException());
@@ -178,8 +189,11 @@
}
- public void appendCharChunk(CharChunk cc)
- throws IOException {
+ /**
+ * Write a CharChunk out at the current write position.
+ * A null CharChunk is encoded as a string with length 0.
+ */
+ public void appendCharChunk(CharChunk cc) {
if (cc == null) {
log.error(sm.getString("ajpmessage.null"),
new NullPointerException());
@@ -187,10 +201,9 @@
appendByte(0);
return;
}
-
int start = cc.getStart();
int end = cc.getEnd();
- appendInt(cc.getLength());
+ appendInt(end - start);
char[] cbuf = cc.getBuffer();
for (int i = start; i < end; i++) {
char c = cbuf[i];
@@ -209,8 +222,15 @@
}
- public void appendString(String str)
- 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 <B>not</B> 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 appendString(String str) {
if (str == null) {
log.error(sm.getString("ajpmessage.null"),
new NullPointerException());
@@ -218,8 +238,6 @@
appendByte(0);
return;
}
-
- // From the Tomcat 3.3 HTTP/1.0 connector
int len = str.length();
appendInt(len);
for (int i = 0; i < len; i++) {
@@ -273,17 +291,15 @@
* little-endian order within each byte.
*/
public int getInt() {
- int b1 = buf[pos++] & 0xFF; // No swap, Java order
+ int b1 = buf[pos++] & 0xFF;
int b2 = buf[pos++] & 0xFF;
-
return (b1<<8) + b2;
}
public int peekInt() {
- int b1 = buf[pos] & 0xFF; // No swap, Java order
+ int b1 = buf[pos] & 0xFF;
int b2 = buf[pos+1] & 0xFF;
-
return (b1<<8) + b2;
}
@@ -364,7 +380,7 @@
pos = 0;
int mark = getInt();
len = getInt();
-
+ // Verify message signature
if ((mark != 0x1234) && (mark != 0x4142)) {
log.error(sm.getString("ajpmessage.invalid", "" + mark));
if (log.isDebugEnabled()) {
@@ -372,7 +388,6 @@
}
return -1;
}
-
if (log.isDebugEnabled()) {
log.debug("Received " + len + " " + buf[0]);
}
@@ -380,6 +395,9 @@
}
+ /**
+ * Dump the contents of the message, prefixed with the given String.
+ */
public void dump(String msg) {
if (log.isDebugEnabled()) {
log.debug(msg + ": " + buf + " " + pos +"/" + (len + 4));
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]