Make libutil more compatable with ATT CC.
[dyninst.git] / common / h / rpcUtil.h
1
2 #ifndef RPC_UTIL
3 #define RPC_UTIL
4
5 extern "C" {
6 #include <rpc/types.h>
7 #include <rpc/xdr.h>
8 }
9
10 #define xdr_Boolean     xdr_bool
11 typedef XDR *XDRptr;
12 typedef int (*xdrIOFunc)(int handle, char *buf, unsigned int len);
13
14 typedef int Boolean;
15 typedef char *String;
16
17 //
18 // Functions common to server and client side.
19 //
20 class XDRrpc {
21   public:
22     XDRrpc(char *m, char *u, char *p, xdrIOFunc, xdrIOFunc);
23     XDRrpc(int fd, xdrIOFunc readRoutine, xdrIOFunc writeRoutine);
24     XDR *__xdrs__;
25     int fd;
26     int pid;            // pid of child;
27 };
28
29 class THREADrpc {
30   public:
31     THREADrpc(int tid);
32     void setTid(int id) { tid = id; }
33   protected:
34     int tid;
35     // these are only to be used by implmentors of thread RPCs.
36     //   the value is only valid during a thread RPC.
37     unsigned int requestingThread;
38     unsigned int getRequestingThread()  { return requestingThread; }
39 };
40
41 //
42 // client side common routines that are transport independent.
43 //
44 class RPCUser {
45   public:
46     void awaitResponce(int tag);
47     void verifyProtocolAndVersion();
48 };
49
50 //
51 // server side routines that are transport independent.
52 //
53 class RPCServer {
54   public:
55         int __versionVerifyDone__;
56 };
57
58 extern int xdr_String(XDR*, String*);
59 extern int RPCprocessCreate(int *pid, char *hostName, char *userName, char *commandLine);
60
61 #endif