Mercurial > hg > Members > e085722 > Cerium
diff Renderer/Engine/lindaapi.h @ 0:04e28d8d3c6f
first commit
author | Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Nov 2010 01:23:25 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Renderer/Engine/lindaapi.h Mon Nov 08 01:23:25 2010 +0900 @@ -0,0 +1,87 @@ +/* $Id$ */ + +/*---------------------------------------------------------------------- + マクロ定義 +----------------------------------------------------------------------*/ + +#define FAIL (-1) + +#define PS_DEB 0xf8 + +#define MAX_QUEUE 1024 + +#define INT_SIZE 4 // Byte = sizeof(int) + +#define LDSERV_PORT 11511 + +/*---------------------------------------------------------------------- + パケットフォーマット + char short int int + Mode + ID + Seq + Data_len + Padding + Data + 0 1 3 7 11 12 +----------------------------------------------------------------------*/ + +#define LINDA_MODE_OFFSET 0 +#define LINDA_ID_OFFSET 1 +#define LINDA_SEQ_OFFSET 3 +#define LINDA_DATA_LENGTH_OFFSET 7 +#define LINDA_HEADER_SIZE 12 + +/*---------------------------------------------------------------------- + 構造体定義 +----------------------------------------------------------------------*/ +typedef struct psx_reply{ + unsigned char *answer; + unsigned int seq; + struct psx_reply *next; + char mode; + void(*callback)(unsigned char * tuple, void * obj); + void * obj; +} REPLY; + +typedef struct command_queue{ + struct command_queue *next; + unsigned int tspace_id; /* ID of destination Tuple Space */ + unsigned int size; + unsigned char *command; +} COMMAND; + + +/*---------------------------------------------------------------------- + Linda API +----------------------------------------------------------------------*/ + +extern void init_linda(void); +extern int open_linda(const char *hostname, int port); +extern int open_linda_java(const char *hostname, int port); +extern int close_linda(int tspace_id); + +extern void psx_free(void*); + +extern unsigned char *psx_reply(unsigned int seq); +extern void psx_sync_n(void); +extern void psx_sync_n_timeout(int time); +extern unsigned int psx_get_datalength(unsigned char *); +extern unsigned int psx_get_seq(unsigned char *); +extern unsigned short psx_get_id(unsigned char *); +extern unsigned char psx_get_mode(unsigned char *); +extern unsigned char * psx_get_data(unsigned char *); + +extern int psx_out(unsigned int tspace_id, unsigned int id, + unsigned char *data, unsigned int size); +extern int psx_callback_update(unsigned int tspace_id, unsigned int id, + unsigned char *data, unsigned int size, + void(*callback)(unsigned char *,void *),void * obj); +extern int psx_ld(unsigned int tspace_id, unsigned int id, + char mode, void(*callback)(unsigned char *,void *),void * obj); + +#define psx_in(tid, id) psx_ld(tid, id, 'i', NULL, NULL) +#define psx_rd(tid, id) psx_ld(tid, id, 'r', NULL, NULL) +#define psx_ck(tid, id) psx_ld(tid, id, 'c', NULL, NULL) +#define psx_wait_rd(tid, id) psx_ld(tid, id, 'w', NULL, NULL) +#define psx_update(tid, id, data, size) psx_callback_update(tid, id, data, size, NULL, NULL) + +#define psx_callback_in(tid, id,callback,obj) psx_ld(tid, id, 'i', callback, obj) +#define psx_callback_rd(tid, id,callback,obj) psx_ld(tid, id, 'r', callback, obj) +#define psx_callback_ck(tid, id,callback,obj) psx_ld(tid, id, 'c', callback, obj) +#define psx_callback_wait_rd(tid, id,callback,obj) psx_ld(tid, id, 'w', callback, obj)