hgomez 01/05/15 03:14:22 Modified: jk/src/native/common jk_msg_buff.h jk_msg_buff.c Log: New buf for ajp14 (long/bytes) Revision Changes Path 1.2 +27 -9 jakarta-tomcat-connectors/jk/src/native/common/jk_msg_buff.h Index: jk_msg_buff.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/native/common/jk_msg_buff.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_msg_buff.h 2001/05/14 09:36:20 1.1 +++ jk_msg_buff.h 2001/05/15 10:14:16 1.2 @@ -57,7 +57,7 @@ * Description: Data marshaling. XDR like * * Author: Costin <[EMAIL PROTECTED]> * * Author: Gal Shachor <[EMAIL PROTECTED]> * - * Version: $Revision: 1.1 $ * + * Version: $Revision: 1.2 $ * ***************************************************************************/ #ifndef JK_MSG_BUF_H @@ -152,36 +152,54 @@ /* -------------------- Real encoding -------------------- */ -void jk_b_set_int(jk_msg_buf_t *msg, - int pos, - unsigned short val); - int jk_b_append_byte(jk_msg_buf_t *msg, unsigned char val); +int jk_b_append_bytes(jk_msg_buf_t * msg, + const unsigned char * param, + int len); + int jk_b_append_int(jk_msg_buf_t *msg, unsigned short val); +int jk_b_append_long(jk_msg_buf_t *msg, + unsigned long val); + int jk_b_append_string(jk_msg_buf_t *msg, const char *param); /* -------------------- Decoding -------------------- */ -unsigned char *jk_b_get_string(jk_msg_buf_t *msg); +/** Get a byte from the current position + */ +unsigned char jk_b_get_byte(jk_msg_buf_t *msg); -/** Get an int from the current position +/** Get an int from the current position */ unsigned short jk_b_get_int(jk_msg_buf_t *msg); -unsigned char jk_b_get_byte(jk_msg_buf_t *msg); +/** Get a long from the current position + */ +unsigned long jk_b_get_long(jk_msg_buf_t *msg); +/** Get a String from the current position + */ +unsigned char *jk_b_get_string(jk_msg_buf_t *msg); + +/** Get a byte from an arbitrary position + */ +unsigned char jk_b_pget_byte(jk_msg_buf_t *msg, + int pos); + /** Get an int from an arbitrary position */ unsigned short jk_b_pget_int(jk_msg_buf_t *msg, int pos); -unsigned char jk_b_pget_byte(jk_msg_buf_t *msg, +/** Get a long from an arbitrary position + */ +unsigned long jk_b_pget_long(jk_msg_buf_t *msg, int pos); /* --------------------- Help ------------------------ */ 1.2 +83 -9 jakarta-tomcat-connectors/jk/src/native/common/jk_msg_buff.c Index: jk_msg_buff.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/src/native/common/jk_msg_buff.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- jk_msg_buff.c 2001/05/14 09:36:19 1.1 +++ jk_msg_buff.c 2001/05/15 10:14:18 1.2 @@ -58,7 +58,7 @@ * Author: Costin <[EMAIL PROTECTED]> * * Author: Gal Shachor <[EMAIL PROTECTED]> * * Author: Henri Gomez <[EMAIL PROTECTED]> * - * Version: $Revision: 1.1 $ * + * Version: $Revision: 1.2 $ * ***************************************************************************/ #include "jk_pool.h" @@ -112,12 +112,39 @@ msg->pos = 4; } -void jk_b_set_int(jk_msg_buf_t *msg, + +static void jk_b_set_long(jk_msg_buf_t *msg, + int pos, + unsigned long val) +{ + msg->buf[pos] = (unsigned char)((val >> 24) & 0xFF); + msg->buf[pos + 1] = (unsigned char)((val >> 16) & 0xFF); + msg->buf[pos + 2] = (unsigned char)((val >> 8) & 0xFF); + msg->buf[pos + 3] = (unsigned char)(val & 0xFF); +} + + +int jk_b_append_long(jk_msg_buf_t *msg, + unsigned long val) +{ + if(msg->len + 4 > msg->maxlen) { + return -1; + } + + jk_b_set_long(msg, msg->len, val); + + msg->len += 4; + + return 0; +} + + +static void jk_b_set_int(jk_msg_buf_t *msg, int pos, unsigned short val) { - msg->buf[pos] = (unsigned char)((val >> 8) & 0xff); - msg->buf[pos + 1] = (unsigned char)(val & 0xff); + msg->buf[pos] = (unsigned char)((val >> 8) & 0xFF); + msg->buf[pos + 1] = (unsigned char)(val & 0xFF); } @@ -136,7 +163,7 @@ } -void jk_b_set_byte(jk_msg_buf_t *msg, +static void jk_b_set_byte(jk_msg_buf_t *msg, int pos, unsigned char val) { @@ -268,6 +295,52 @@ return 0; } + +int jk_b_append_bytes(jk_msg_buf_t *msg, + const unsigned char *param, + int len) +{ + if (! len) { + return 0; + } + + if (msg->len + len > msg->maxlen) { + return -1; + } + + /* We checked for space !! */ + memcpy((char *)msg->buf + msg->len, param, len); + msg->len += len; + + return 0; +} + +unsigned long jk_b_get_long(jk_msg_buf_t *msg) +{ + unsigned long i; + if(msg->pos + 3 > msg->len) { + printf( "Read after end \n"); + return -1; + } + i = ((msg->buf[(msg->pos++)] & 0xFF)<<24); + i |= ((msg->buf[(msg->pos++)] & 0xFF)<<16); + i |= ((msg->buf[(msg->pos++)] & 0xFF)<<8); + i |= ((msg->buf[(msg->pos++)] & 0xFF)); + return i; +} + +unsigned long jk_b_pget_long(jk_msg_buf_t *msg, + int pos) +{ + unsigned long i; + i = ((msg->buf[(pos++)] & 0xFF)<<24); + i |= ((msg->buf[(pos++)] & 0xFF)<<16); + i |= ((msg->buf[(pos++)] & 0xFF)<<8); + i |= ((msg->buf[(pos )] & 0xFF)); + return i; +} + + unsigned short jk_b_get_int(jk_msg_buf_t *msg) { int i; @@ -275,16 +348,17 @@ printf( "Read after end \n"); return -1; } - i = ((msg->buf[msg->pos++]&0xff)<<8); - i += (msg->buf[(msg->pos++)] & 0xFF); + i = ((msg->buf[(msg->pos++)] & 0xFF)<<8); + i += ((msg->buf[(msg->pos++)] & 0xFF)); return i; } unsigned short jk_b_pget_int(jk_msg_buf_t *msg, int pos) { - int i= ((msg->buf[pos++]&0xff)<<8); - i+= (msg->buf[pos] & 0xFF); + int i; + i = ((msg->buf[pos++] & 0xFF)<<8); + i += ((msg->buf[pos] & 0xFF)); return i; }