Modified process status handling to provide appropriate tag
[dyninst.git] / igen / tests / server1.C
1 #include "test1.xdr.SRVR.h"
2
3 main(int argc, char *argv[])
4 {
5     int fd;
6
7     int ret;
8     test *tp;
9
10     // int z=1;
11     // while(z) ;
12
13     if (argc == 1) {
14         fd = 0;
15     } else {
16         printf("remote start not supported\n");
17         abort();
18         exit(-1);
19     }
20     tp = new test(0, NULL, NULL, false);
21
22     // now go into main loop
23     while(1) {
24         ret = tp->waitLoop();   
25         if (ret < 0) {
26             // assume the client has exited, and leave.
27             exit(-1);
28         }
29     }
30 }
31
32
33 void test::nullNull() {
34     return;
35 }
36
37 int test::intNull() {
38     return(0);
39 }
40
41 void test::nullStruct(T_test1::intStruct s) {
42     return;
43 }
44
45 int test::intString(string s) {
46     return(s.length());
47 }
48
49 vector<string> test::refVector(vector<string> &vec) {
50   return vec;
51 }
52 vector<string> test::norefVector(vector<string> vec) {
53   return vec;
54 }
55
56 string test::stringString(string s) {
57     return(s);
58 }
59
60 string test::stringStringRef(string &s) {
61     return(s);
62 }
63
64 int test::add(int a, int b) {
65     return(a+b);
66 }
67
68 float test::fadd(float a, float b) {
69     return(a+b);
70 }
71
72 int test::sumVector(vector<int> nums) {
73    int total=0;
74    for (int i=0; i < nums.size(); i++) {
75        total += nums[i];
76    }
77    return(total);
78 }
79
80 int test::sumVectorPtr(vector<int> *nums) {
81    int total=0;
82    for (int i=0; i < (*nums).size(); i++) {
83        total += (*nums)[i];
84    }
85    delete nums;
86    return(total);
87 }
88
89 vector<int> test::retVector(int num, int start) {
90     vector<int> retVal;
91
92     for (int i=0; i<num; i++)
93       retVal += start++;
94     return(retVal);
95 }
96
97
98 void test::triggerAsyncUpcall(int val) {
99     asyncUpcall(val);
100 }
101
102 void exitNow(test *me) {
103   delete me;
104   exit(1);
105 }
106
107 void test::asyncClient() {
108   printf("In test::asyncClient(), goodbye!\n");
109   exitNow(this);
110 }
111
112 vector<string> test::echoCPA(vector<string> input) {
113   return input;
114 }
115
116 vector<string> *test::echoCPAPtr(vector<string> *input) {
117   return input;
118 }
119
120 T_test1::charStruct test::echoCS(T_test1::charStruct csin) {
121   return csin;
122 }
123
124 vector<T_test1::charStruct> test::echoCSA(vector<T_test1::charStruct> csa) {
125   return csa;
126 }
127
128 unsigned total = 0;
129
130 string test::boolToString(T_test1::boolStruct bs) {
131   if (bs.b) {
132
133     for (unsigned i=0; i<1000; i++) {
134       up1(); total++;
135       up2(); total++;
136       up3(); total++;
137       up4(); total++;
138     }
139
140     for (i=0; i<1000; i++)
141       rapidUpcall(i);
142
143     for (i=0; i<1000; i++) {
144       up1(); total++;
145       up2(); total++;
146       up3(); total++;
147       up4(); total++;
148     }
149
150     up_done(total);
151
152     return "true";
153   } else
154     return "false";
155 }
156
157 T_test1::basicClass *test::echoClass(T_test1::basicClass *b) {
158   return b;
159 }
160
161 T_test1::basicClass test::echoBClass(T_test1::basicClass b) {
162   return b;
163 }
164
165 T_test1::derClass test::echoDClass(T_test1::derClass d) {
166   return d;
167 }
168
169 T_test1::charStruct *test::echoCSP(T_test1::charStruct *cs) {
170   return cs;
171 }
172
173 T_test1::basicClass::basicClass() { }
174 T_test1::derClass::derClass() { }
175
176 vector<T_test1::resStruct> test::echoResStruct(vector<T_test1::resStruct> rs) {
177   return rs;
178 }