summaryrefslogtreecommitdiffstats
path: root/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h
diff options
context:
space:
mode:
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h')
-rw-r--r--rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h b/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h
new file mode 100644
index 00000000..3fdc006b
--- /dev/null
+++ b/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_msg_buff.h
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/***************************************************************************
+ * Description: Data marshaling. XDR like *
+ * Author: Costin <costin@costin.dnt.ro> *
+ * Author: Gal Shachor <shachor@il.ibm.com> *
+ * Version: $Revision: 530674 $ *
+ ***************************************************************************/
+
+#ifndef JK_MSG_BUF_H
+#define JK_MSG_BUF_H
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#define DEF_BUFFER_SZ (8 * 1024)
+
+/* XXX replace all return values with error codes */
+#define ERR_BAD_PACKET -5
+
+/*
+RPC details:
+
+ - one parameter - use a structure for more. The method
+ is encoded as part of the request
+ - one or no result
+ -
+
+
+
+ */
+
+typedef struct jk_msg_buf_t jk_msg_buf_t;
+struct jk_msg_buf_t
+{
+ jk_pool_t *pool;
+ unsigned char *buf;
+ int pos;
+ int len;
+ int maxlen;
+};
+
+
+/* -------------------- Setup routines -------------------- */
+
+/** Allocate a buffer.
+ */
+jk_msg_buf_t *jk_b_new(jk_pool_t *p);
+
+/** Set up a buffer with an existing buffer
+ */
+int jk_b_set_buffer(jk_msg_buf_t *msg, unsigned char *data, int buffSize);
+
+/*
+ * Set up a buffer with a new buffer of buffSize
+ */
+int jk_b_set_buffer_size(jk_msg_buf_t *msg, int buffSize);
+
+/*
+ * Finalize the buffer before sending - set length fields, etc
+ */
+void jk_b_end(jk_msg_buf_t *msg, int protoh);
+
+/*
+ * Recycle the buffer - z for a new invocation
+ */
+void jk_b_reset(jk_msg_buf_t *msg);
+
+/* -------------------- Real encoding -------------------- */
+
+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);
+
+#if defined(AS400) && !defined(AS400_UTF8)
+int jk_b_append_asciistring(jk_msg_buf_t *msg, const char *param);
+#endif
+
+int jk_b_append_bytes(jk_msg_buf_t *msg,
+ const unsigned char *param, int len);
+
+/* -------------------- Decoding -------------------- */
+
+/** 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
+ */
+unsigned short jk_b_get_int(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 Bytes from the current position
+ */
+int jk_b_get_bytes(jk_msg_buf_t *msg, unsigned char *buf, int len);
+
+/** 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);
+
+/** Get a long from an arbitrary position
+ */
+unsigned long jk_b_pget_long(jk_msg_buf_t *msg, int pos);
+
+/* --------------------- Help ------------------------ */
+void jk_dump_buff(jk_logger_t *l,
+ const char *file,
+ int line, const char *funcname,
+ int level, char *what, jk_msg_buf_t *msg);
+
+/** Copy a msg buf into another one
+ */
+int jk_b_copy(jk_msg_buf_t *smsg, jk_msg_buf_t *dmsg);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* JK_MSG_BUF_H */