00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef GWEN_IPC_H
00015 #define GWEN_IPC_H
00016
00017
00018 #include <gwenhywfar/types.h>
00019 #include <gwenhywfar/db.h>
00020 #include <gwenhywfar/netlayer.h>
00021 #include <gwenhywfar/inherit.h>
00022 #include <gwenhywfar/list2.h>
00023
00024 #include <time.h>
00025 #include <stdio.h>
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00035 #define GWEN_IPC_ERROR_CODES 0x80000000
00036 #define GWEN_IPC_ERROR_GENERIC 0x80000001
00037 #define GWEN_IPC_ERROR_CONNERR 0x80000002
00038 #define GWEN_IPC_ERROR_TIMEOUT 0x80000003
00039
00043 typedef struct GWEN_IPCMANAGER GWEN_IPCMANAGER;
00044
00045
00046 GWENHYWFAR_API
00047 GWEN_IPCMANAGER *GWEN_IpcManager_new();
00048
00049 GWENHYWFAR_API
00050 void GWEN_IpcManager_free(GWEN_IPCMANAGER *mgr);
00051
00052 GWENHYWFAR_API
00053 void GWEN_IpcManager_Attach(GWEN_IPCMANAGER *mgr);
00054
00055 GWENHYWFAR_API
00056 void GWEN_IpcManager_Dump(GWEN_IPCMANAGER *mgr, FILE *f, int indent);
00057
00058
00059 GWENHYWFAR_API
00060 const char *GWEN_IpcManager_GetApplicationName(const GWEN_IPCMANAGER *mgr);
00061
00062 GWENHYWFAR_API
00063 void GWEN_IpcManager_SetApplicationName(GWEN_IPCMANAGER *mgr,
00064 const char *name);
00065
00066
00070 GWENHYWFAR_API
00071 int GWEN_IpcManager_Disconnect(GWEN_IPCMANAGER *mgr, GWEN_TYPE_UINT32 nid);
00072
00085 GWENHYWFAR_API
00086 GWEN_TYPE_UINT32 GWEN_IpcManager_AddServer(GWEN_IPCMANAGER *mgr,
00087 GWEN_NETLAYER *nlBase,
00088 GWEN_TYPE_UINT32 mark);
00089
00104 GWENHYWFAR_API
00105 GWEN_TYPE_UINT32 GWEN_IpcManager_AddClient(GWEN_IPCMANAGER *mgr,
00106 GWEN_NETLAYER *nlBase,
00107 GWEN_TYPE_UINT32 mark);
00114 GWENHYWFAR_API
00115 int GWEN_IpcManager_RemoveClient(GWEN_IPCMANAGER *mgr,
00116 GWEN_TYPE_UINT32 nid);
00117
00127 GWENHYWFAR_API
00128 GWEN_TYPE_UINT32 GWEN_IpcManager_SendRequest(GWEN_IPCMANAGER *mgr,
00129 GWEN_TYPE_UINT32 nid,
00130 GWEN_DB_NODE *req);
00131
00140 GWENHYWFAR_API
00141 GWEN_TYPE_UINT32 GWEN_IpcManager_SendMultiRequest(GWEN_IPCMANAGER *mgr,
00142 GWEN_TYPE_UINT32 mark,
00143 GWEN_DB_NODE *req);
00144
00153 GWENHYWFAR_API
00154 int GWEN_IpcManager_SendResponse(GWEN_IPCMANAGER *mgr,
00155 GWEN_TYPE_UINT32 rid,
00156 GWEN_DB_NODE *rsp);
00157
00168 GWENHYWFAR_API
00169 int GWEN_IpcManager_RemoveRequest(GWEN_IPCMANAGER *mgr,
00170 GWEN_TYPE_UINT32 rid,
00171 int outbound);
00172
00182 GWENHYWFAR_API
00183 GWEN_TYPE_UINT32 GWEN_IpcManager_GetNextInRequest(GWEN_IPCMANAGER *mgr,
00184 GWEN_TYPE_UINT32 mark);
00185
00203 GWENHYWFAR_API
00204 GWEN_DB_NODE *GWEN_IpcManager_GetInRequestData(GWEN_IPCMANAGER *mgr,
00205 GWEN_TYPE_UINT32 rid);
00206
00207
00217 GWENHYWFAR_API
00218 GWEN_DB_NODE *GWEN_IpcManager_GetResponseData(GWEN_IPCMANAGER *mgr,
00219 GWEN_TYPE_UINT32 rid);
00220
00230 GWENHYWFAR_API
00231 GWEN_DB_NODE *GWEN_IpcManager_PeekResponseData(GWEN_IPCMANAGER *mgr,
00232 GWEN_TYPE_UINT32 rid);
00233
00234
00240 GWENHYWFAR_API
00241 int GWEN_IpcManager_Work(GWEN_IPCMANAGER *mgr);
00242
00243
00247 GWENHYWFAR_API
00248 GWEN_NETLAYER *GWEN_IpcManager_GetNetLayer(GWEN_IPCMANAGER *mgr,
00249 GWEN_TYPE_UINT32 nid);
00250
00251 GWENHYWFAR_API
00252 GWEN_TYPE_UINT32
00253 GWEN_IpcManager_GetClientForNetLayer(const GWEN_IPCMANAGER *mgr,
00254 const GWEN_NETLAYER *nl);
00255
00256
00257
00258
00259 #ifdef __cplusplus
00260 }
00261 #endif
00262
00263 #endif
00264
00265
00266
00267