00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
#ifndef CTCLIENT_H
00030
#define CTCLIENT_H
00031
00032
00033
#ifdef __cplusplus
00034
extern "C" {
00035
#endif
00036
00037 #define CTCLIENT_MAX_DISMISSED_REQUESTS 64
00038
00039
#include <chameleon/chameleon.h>
00040
#include <chameleon/ipcservicelayer.h>
00041
#include <ctservice.h>
00042
00043
00044 struct CTCLIENTDATASTRUCT {
00045 IPCSERVICELAYER *
service;
00046 char *
clientIdString;
00047 int nextPeerId;
00048 int nextMessageId;
00049 int shared;
00050 int mark;
00051 int dismissedRequests[
CTCLIENT_MAX_DISMISSED_REQUESTS];
00052 int nextDismissedRequest;
00053 };
00054 typedef struct CTCLIENTDATASTRUCT CTCLIENTDATA;
00055
00056
00057
CTCLIENTDATA *
CTClient_new();
00058
void CTClient_free(CTCLIENTDATA *cd);
00059
00060
ERRORCODE CTClient_Init(CTCLIENTDATA *cd);
00061
ERRORCODE CTClient_InitShared(CTCLIENTDATA *cd,
00062 IPCSERVICELAYER *service);
00063
ERRORCODE CTClient_Fini(CTCLIENTDATA *cd);
00064
00070
ERRORCODE CTClient_AddServer(CTCLIENTDATA *cd,
00071
const char *addr,
00072
int port,
00073
int *
id);
00074
00075
ERRORCODE CTClient_RemoveServer(CTCLIENTDATA *cd,
int id);
00076
00077
void CTClient_SetClientIdString(CTCLIENTDATA *cd,
00078
const char *cid);
00079
00080
ERRORCODE CTClient_CheckErrorMessage(CTCLIENTDATA *cd,
00081 IPCMESSAGE *msg);
00082
00083
ERRORCODE CTClient_Work(CTCLIENTDATA *cd,
00084
int timeout,
00085
int maxmsg);
00086
00087
ERRORCODE CTClient_SendRequest(CTCLIENTDATA *cd,
00088
CTSERVICEREQUEST *req,
00089
int id);
00090
00091
ERRORCODE CTClient_CheckResponse(CTCLIENTDATA *cd,
00092
int requestid);
00093
00097
void CTClient_WithdrawRequest(CTCLIENTDATA *cd,
00098
int requestid);
00099
00106
void CTClient_AbandonRequest(CTCLIENTDATA *cd,
00107
int requestid);
00108
00109
CTSERVICEREQUEST *
CTClient_FindRequest(CTCLIENTDATA *cd,
00110
int requestid);
00111
void CTClient_DequeueRequest(CTCLIENTDATA *cd,
00112
CTSERVICEREQUEST *req);
00113
00114
00115
#ifdef __cplusplus
00116
}
00117
#endif
00118
00119
00120
#endif
00121
00122
00123