Implemented CkReduce to mimic CmiReduce but within the virtualized BigSim.
[charm.git] / src / conv-ccs / ccs-client.h
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7
8 /**
9  * Converse Client-Server Module: Client Side
10  */
11
12 #ifndef __CCS_CLIENT_H_
13 #define __CCS_CLIENT_H_
14
15 #include "sockRoutines.h"
16 #include "ccs-auth.h"
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 typedef struct CcsServer {
23   /*CCS Server description:*/
24   char hostAddr[128];
25   skt_ip_t hostIP;
26   unsigned int hostPort;
27
28   /*Authentication*/
29   int isAuth;
30   int level;/*Security level to ask for*/
31   CcsSec_secretKey key;
32   int clientID,clientSalt;
33   int replySalt;
34   CCS_RAND_state rand;
35
36   /*Parallel machine:*/
37   int numNodes;
38   int numPes;
39   int *numProcs; /*# of processors for each node*/
40
41   /*Current State:*/
42   SOCKET replyFd;/*Socket for replies*/
43 } CcsServer;
44
45 /*All routines return -1 on failure*/
46 int CcsConnect(CcsServer *svr, const char *host, int port,const CcsSec_secretKey *key);
47 int CcsConnectWithTimeout(CcsServer *svr, const char *host, int port,
48         const CcsSec_secretKey *key, int timeout);
49
50 int CcsConnectIp(CcsServer *svr,skt_ip_t ip, int port,const CcsSec_secretKey *key);
51 int CcsConnectIpWithTimeout(CcsServer *svr,skt_ip_t ip, int port,const CcsSec_secretKey *key, int timeout);
52
53 int CcsSendRequest(CcsServer *svr, const char *hdlrID, int pe, 
54                     int size, const void *msg);
55 int CcsSendRequestWithTimeout(CcsServer *svr, const char *hdlrID, int pe, 
56                     int size, const void *msg, int timeout);
57 int CcsSendBroadcastRequest(CcsServer *svr, const char *hdlrID,
58             int size, const void *msg);
59 int CcsSendBroadcastRequestWithTimeout(CcsServer *svr, const char *hdlrID, 
60             int size, const void *msg, int timeout);
61 int CcsSendMulticastRequest(CcsServer *svr, const char *hdlrID, int npes, 
62             int *pes, int size, const void *msg);
63 int CcsSendMulticastRequestWithTimeout(CcsServer *svr, const char *hdlrID, int npes, 
64             int *pes, int size, const void *msg, int timeout);
65
66 int CcsNoResponse(CcsServer *svr);
67 int CcsRecvResponse(CcsServer *svr, 
68                     int maxsize, void *recvBuffer, int timeout);
69 int CcsRecvResponseMsg(CcsServer *svr, 
70                     int *retSize,void **newBuf, int timeout);
71 int CcsNumNodes(CcsServer *svr);
72 int CcsNumPes(CcsServer *svr);
73 int CcsNodeFirst(CcsServer *svr, int node);
74 int CcsNodeSize(CcsServer *svr,int node);
75 int CcsProbe(CcsServer *svr);
76 int CcsProbeTimeout(CcsServer *svr,int timeoutMs);
77 void CcsFinalize(CcsServer *svr);
78
79 #ifdef __cplusplus
80 };
81 #endif
82
83 #endif