Modified process status handling to provide appropriate tag
[dyninst.git] / igen / tests / server2.C
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "test2.thread.SRVR.h"
4 #include "thread/h/thread.h"
5
6 static bool seen_async = false;
7
8 void *serverMainFunc(void *parentId)
9 {
10   T_test2::message_tags ret;
11   test *tp;
12   
13   tp = new test((int) parentId);
14   cerr << "Server: test created\n"; cerr.flush();
15
16   // now go into main loop
17   while(1) {
18     ret = tp->waitLoop(false, T_test2::last);   
19     if (ret == T_test2::error) {
20       printf(" mainLoop returned < 0, bye bye\n");
21       // assume the client has exited, and leave.
22       assert(0);
23       thr_exit(-1);
24     }
25   }
26   return 0;
27 }
28
29 void test::nullNull() { return; }
30
31 int test::intNull() { return(0); }
32
33 void test::nullStruct(T_test2::intStruct s) { return; }
34
35 int test::intString(string *s) {
36   return(s->length());
37 }
38
39 string *test::stringString(string *s) { return(s); }
40
41 int test::add(const int a, const int b) { return(a+b); }
42
43 int test::sumVector(vector<int> *nums) {
44   int i, total;
45   for (i=0, total=0; i < nums->size(); i++)
46     total += (*nums)[i];
47   return(total);
48 }
49
50 vector<int> *test::retVector(int num, int start) {
51   int i;
52   vector<int> *retVal;
53
54   retVal = new vector<int>;
55   for (i=0; i < num; i++)
56     (*retVal)[i] = start+i;
57
58   return(retVal);
59 }
60
61 void test::hangup() {
62   seen_async = true;
63 }
64
65 void test::triggerAsyncUpcall(int val) {
66   asyncUpcall(val);
67 }
68
69 T_test2::s2 *test::isSp(T_test2::s2 *parm) {
70   return parm;
71 }
72
73 other *test::testOther(other *o) {
74   other *op = new other;
75   op->i = o->i;
76   op->k = o->k;
77   delete o;
78   return (op);
79 }
80
81 scope::fruit test::echoFruit(scope::fruit f) {
82   return f;
83 }