Man page for igen.
[dyninst.git] / igen / tests / client1.C
1 #include <unistd.h>
2 #include <assert.h>
3 #include "test1.CLNT.h"
4
5 String str1 = "A Test String with server words in it";
6 String str2 = "Different String";
7
8 int numbers[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
9 int_Array vect;
10
11 main()
12 {
13     int i;
14     int fd;
15     int pid;
16     int eid;
17     int total;
18     intStruct is;
19     testUser *remote;
20
21     fd = RPCprocessCreate(&pid, "localhost", "", "server1");
22     if (fd < 0) {
23         perror("process Create");
24         exit(-1);
25     }
26
27     remote = new testUser(fd, NULL, NULL);
28
29
30     remote->nullNull();
31
32     assert(remote->intNull() == 0);
33
34     remote->nullStruct(is);
35
36     assert(strlen(str1) == remote->intString(str1));
37
38     str2 = remote->stringString(str1);
39     assert(!strcmp(str2, str1));
40
41     assert(remote->add(1, 1) == 2);
42     assert(remote->add(-1, -13) == -14);
43
44     vect.count = sizeof(numbers)/sizeof(int);
45     vect.data = numbers;
46     for (i=0, total = 0; i < vect.count; i++) {
47         total += numbers[i];
48     }
49     assert(remote->sumVector(vect) == total);
50
51     remote->triggerSyncUpcall(42);
52
53     remote->triggerAsyncUpcall(-10);
54
55     for (i=0; i < 10000; i++) {
56         remote->add(1, i);
57     }
58     printf("RPC test1 passed\n");
59 }
60
61 void testUser::syncUpcall(int val)
62 {
63     printf("syncUpcall called with value = %d\n", val);
64 }
65
66 void testUser::asyncUpcall(int val)
67 {
68     printf("asyncUpcall called with value = %d\n", val);
69 }