A CCS client connects to a CCS server, asks a server PE to execute a pre-registered handler, and receives the response data. The CCS client may be written in any language (see CCS network protocol, below), but a C interface (files ``ccs-client.c'' and ``ccs-client.h'') and Java interface (file ``CcsServer.java'') are available in the charm include directory.
The C routines use the skt_abort error-reporting strategy; see ``sockRoutines.h'' for details. The C client API is:
void CcsConnect(CcsServer *svr, char *host, int port);
Connect to the given CCS server. svr points to a pre-allocated
CcsServer structure.
void CcsConnectIp(CcsServer *svr, int ip, int port);
As above, but a numeric IP is specified.
int CcsNumNodes(CcsServer *svr);
int CcsNumPes(CcsServer *svr);
int CcsNodeFirst(CcsServer *svr, int node);
int CcsNodeSize(CcsServer *svr,int node);
These functions return information about the parallel machine;
they are equivalent to the CONVERSE calls CmiNumNodes,
CmiNumPes, CmiNodeFirst, and CmiNodeSize.
void CcsSendRequest(CcsServer *svr, char *hdlrID, int pe,
unsigned int size, const char *msg);
Ask the server to execute the handler hdlrID on the given processor.
The handler is passed the given data as a message. The data may
be in any desired format (including binary).
int CcsSendBroadcastRequest(CcsServer *svr, const char *hdlrID,
int size, const void *msg);
As CcsSendRequest, only that the handler hdlrID is invoked on all processors.
int CcsSendMulticastRequest(CcsServer *svr, const char *hdlrID, int npes,
int *pes, int size, const void *msg);
As CcsSendRequest, only that the handler hdlrID is invoked on the processors
specified in the array pes (of size npes).
int CcsRecvResponse(CcsServer *svr,
unsigned int maxsize, char *recvBuffer, int timeout);
Receive a response to the previous request in-place.
Timeout gives the number of seconds to wait before returning 0;
otherwise the number of bytes received is returned.
int CcsRecvResponseMsg(CcsServer *svr,
unsigned int *retSize,char **newBuf, int timeout);
As above, but receive a variable-length response. The
returned buffer must be free()'d after use.
int CcsProbe(CcsServer *svr);
Return 1 if a response is available; otherwise 0.
void CcsFinalize(CcsServer *svr);
Closes connection and releases server.
The Java routines throw an IOException on network errors. Use javadoc on CcsServer.java for the interface, which mirrors the C version above.
November 23, 2009
Converse Homepage
Charm Homepage