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/nettransport.h>
00021 #include <gwenhywfar/netconnection.h>
00022 #include <gwenhywfar/inherit.h>
00023 #include <gwenhywfar/list2.h>
00024
00025 #include <time.h>
00026 #include <stdio.h>
00027
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00036 #define GWEN_IPC_ERROR_CODES 0x80000000
00037 #define GWEN_IPC_ERROR_GENERIC 0x80000001
00038 #define GWEN_IPC_ERROR_CONNERR 0x80000002
00039 #define GWEN_IPC_ERROR_TIMEOUT 0x80000003
00040
00044 typedef struct GWEN_IPCMANAGER GWEN_IPCMANAGER;
00045
00046
00047 GWENHYWFAR_API
00048 GWEN_IPCMANAGER *GWEN_IPCManager_new();
00049
00050 GWENHYWFAR_API
00051 void GWEN_IPCManager_free(GWEN_IPCMANAGER *mgr);
00052
00053 GWENHYWFAR_API
00054 void GWEN_IPCManager_Attach(GWEN_IPCMANAGER *mgr);
00055
00056 GWENHYWFAR_API
00057 void GWEN_IPCManager_Dump(GWEN_IPCMANAGER *mgr, FILE *f, int indent);
00058
00059
00060 GWENHYWFAR_API
00061 const char *GWEN_IPCManager_GetApplicationName(const GWEN_IPCMANAGER *mgr);
00062
00063 GWENHYWFAR_API
00064 void GWEN_IPCManager_SetApplicationName(GWEN_IPCMANAGER *mgr,
00065 const char *name);
00066
00067
00072 GWENHYWFAR_API
00073 void GWEN_IPCManager_SetUpFn(GWEN_IPCMANAGER *mgr,
00074 GWEN_TYPE_UINT32 id,
00075 GWEN_NETCONNECTION_UPFN fn);
00076
00081 GWENHYWFAR_API
00082 void GWEN_IPCManager_SetDownFn(GWEN_IPCMANAGER *mgr,
00083 GWEN_TYPE_UINT32 id,
00084 GWEN_NETCONNECTION_DOWNFN fn);
00085
00089 GWENHYWFAR_API
00090 int GWEN_IPCManager_Disconnect(GWEN_IPCMANAGER *mgr, GWEN_TYPE_UINT32 nid);
00091
00096 GWENHYWFAR_API
00097 GWEN_NETTRANSPORT_STATUS
00098 GWEN_IPCManager_CheckConnection(GWEN_IPCMANAGER *mgr, GWEN_TYPE_UINT32 nid);
00099
00100
00113 GWENHYWFAR_API
00114 GWEN_TYPE_UINT32 GWEN_IPCManager_AddServer(GWEN_IPCMANAGER *mgr,
00115 GWEN_NETTRANSPORT *tr,
00116 GWEN_TYPE_UINT32 mark);
00117
00132 GWENHYWFAR_API
00133 GWEN_TYPE_UINT32 GWEN_IPCManager_AddClient(GWEN_IPCMANAGER *mgr,
00134 GWEN_NETTRANSPORT *tr,
00135 const char *userName,
00136 const char *passwd,
00137 GWEN_TYPE_UINT32 mark);
00144 GWENHYWFAR_API
00145 int GWEN_IPCManager_RemoveClient(GWEN_IPCMANAGER *mgr,
00146 GWEN_TYPE_UINT32 nid);
00147
00157 GWENHYWFAR_API
00158 GWEN_TYPE_UINT32 GWEN_IPCManager_SendRequest(GWEN_IPCMANAGER *mgr,
00159 GWEN_TYPE_UINT32 nid,
00160 GWEN_DB_NODE *req);
00161
00170 GWENHYWFAR_API
00171 GWEN_TYPE_UINT32 GWEN_IPCManager_SendMultiRequest(GWEN_IPCMANAGER *mgr,
00172 GWEN_TYPE_UINT32 mark,
00173 GWEN_DB_NODE *req);
00174
00183 GWENHYWFAR_API
00184 int GWEN_IPCManager_SendResponse(GWEN_IPCMANAGER *mgr,
00185 GWEN_TYPE_UINT32 rid,
00186 GWEN_DB_NODE *rsp);
00187
00198 GWENHYWFAR_API
00199 int GWEN_IPCManager_RemoveRequest(GWEN_IPCMANAGER *mgr,
00200 GWEN_TYPE_UINT32 rid,
00201 int outbound);
00202
00212 GWENHYWFAR_API
00213 GWEN_TYPE_UINT32 GWEN_IPCManager_GetNextInRequest(GWEN_IPCMANAGER *mgr,
00214 GWEN_TYPE_UINT32 mark);
00215
00233 GWENHYWFAR_API
00234 GWEN_DB_NODE *GWEN_IPCManager_GetInRequestData(GWEN_IPCMANAGER *mgr,
00235 GWEN_TYPE_UINT32 rid);
00236
00237
00247 GWENHYWFAR_API
00248 GWEN_DB_NODE *GWEN_IPCManager_GetResponseData(GWEN_IPCMANAGER *mgr,
00249 GWEN_TYPE_UINT32 rid);
00250
00260 GWENHYWFAR_API
00261 GWEN_DB_NODE *GWEN_IPCManager_PeekResponseData(GWEN_IPCMANAGER *mgr,
00262 GWEN_TYPE_UINT32 rid);
00263
00264
00270 GWENHYWFAR_API
00271 int GWEN_IPCManager_Work(GWEN_IPCMANAGER *mgr, int maxmsg);
00272
00273
00277 GWENHYWFAR_API
00278 GWEN_NETCONNECTION *GWEN_IPCManager_GetConnection(GWEN_IPCMANAGER *mgr,
00279 GWEN_TYPE_UINT32 nid);
00280
00281 GWENHYWFAR_API
00282 GWEN_TYPE_UINT32
00283 GWEN_IPCManager_GetClientForConnection(const GWEN_IPCMANAGER *mgr,
00284 const GWEN_NETCONNECTION *conn);
00285
00286
00287
00288
00289 #ifdef __cplusplus
00290 }
00291 #endif
00292
00293 #endif
00294
00295
00296
00297