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