00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __XMMS_IPC_MSG_H__
00018 #define __XMMS_IPC_MSG_H__
00019
00020 #include "xmmsc/xmmsc_stdint.h"
00021 #include "xmmsc/xmmsc_stdbool.h"
00022 #include "xmmsc/xmmsc_util.h"
00023 #include "xmmsc/xmmsc_ipc_transport.h"
00024 #include "xmmsc/xmmsc_inline.h"
00025 #include "xmmsc/xmmsc_coll.h"
00026
00027 #define XMMS_IPC_MSG_DEFAULT_SIZE 128
00028 #define XMMS_IPC_MSG_HEAD_LEN 16
00029
00030 typedef struct xmms_ipc_msg_St xmms_ipc_msg_t;
00031
00032 uint32_t xmms_ipc_msg_get_length (const xmms_ipc_msg_t *msg);
00033 uint32_t xmms_ipc_msg_get_object (const xmms_ipc_msg_t *msg);
00034 uint32_t xmms_ipc_msg_get_cmd (const xmms_ipc_msg_t *msg);
00035 uint32_t xmms_ipc_msg_get_cookie (const xmms_ipc_msg_t *msg);
00036 void xmms_ipc_msg_set_length (xmms_ipc_msg_t *msg, uint32_t len);
00037 void xmms_ipc_msg_set_cookie (xmms_ipc_msg_t *msg, uint32_t cookie);
00038 void xmms_ipc_msg_set_cmd (xmms_ipc_msg_t *msg, uint32_t cmd);
00039 void xmms_ipc_msg_set_object (xmms_ipc_msg_t *msg, uint32_t object);
00040
00041 xmms_ipc_msg_t *xmms_ipc_msg_new (uint32_t object, uint32_t cmd);
00042 xmms_ipc_msg_t * xmms_ipc_msg_alloc (void);
00043 void xmms_ipc_msg_destroy (xmms_ipc_msg_t *msg);
00044
00045 bool xmms_ipc_msg_write_transport (xmms_ipc_msg_t *msg, xmms_ipc_transport_t *transport, bool *disconnected);
00046 bool xmms_ipc_msg_read_transport (xmms_ipc_msg_t *msg, xmms_ipc_transport_t *transport, bool *disconnected);
00047
00048 uint32_t xmms_ipc_msg_put_uint32 (xmms_ipc_msg_t *msg, uint32_t v);
00049 uint32_t xmms_ipc_msg_put_int32 (xmms_ipc_msg_t *msg, int32_t v);
00050 uint32_t xmms_ipc_msg_put_float (xmms_ipc_msg_t *msg, float v);
00051 uint32_t xmms_ipc_msg_put_string (xmms_ipc_msg_t *msg, const char *str);
00052 uint32_t xmms_ipc_msg_put_string_list (xmms_ipc_msg_t *msg, const char* strings[]);
00053 uint32_t xmms_ipc_msg_put_collection (xmms_ipc_msg_t *msg, xmmsc_coll_t *coll);
00054 uint32_t xmms_ipc_msg_put_bin (xmms_ipc_msg_t *msg, const unsigned char *data, unsigned int len);
00055
00056 void xmms_ipc_msg_store_uint32 (xmms_ipc_msg_t *msg, uint32_t offset, uint32_t v);
00057
00058 bool xmms_ipc_msg_get_uint32 (xmms_ipc_msg_t *msg, uint32_t *v);
00059 bool xmms_ipc_msg_get_int32 (xmms_ipc_msg_t *msg, int32_t *v);
00060 bool xmms_ipc_msg_get_float (xmms_ipc_msg_t *msg, float *v);
00061 bool xmms_ipc_msg_get_string (xmms_ipc_msg_t *msg, char *str, unsigned int maxlen);
00062 bool xmms_ipc_msg_get_string_alloc (xmms_ipc_msg_t *msg, char **buf, unsigned int *len);
00063 bool xmms_ipc_msg_get_collection_alloc (xmms_ipc_msg_t *msg, xmmsc_coll_t **coll);
00064 bool xmms_ipc_msg_get_bin_alloc (xmms_ipc_msg_t *msg, unsigned char **buf, unsigned int *len);
00065
00066 #endif