Fixing problem with array/list of callbacks; Java static variables persist across...
[iot2.git] / iotjava / iotrmi / C++ / basics / TestClass_Stub.cpp
1 #include <iostream>
2 #include <string>
3 #include "TestClassComplete_Stub.hpp"
4 #include "CallBack.hpp"
5
6 using namespace std;
7
8 int main(int argc, char *argv[])
9 {
10
11         int port = 5010;
12         const char* address = "localhost";
13         //const char* address = "128.195.136.170";      // dc-9.calit2.uci.edu
14         int rev = 0;
15         bool bResult = false;
16         vector<int> ports;
17         ports.push_back(12345);
18
19         TestClassComplete *tcStub = new TestClassComplete_Stub(port, address, rev, &bResult, ports);
20         cout << "==== SINGLE ====" << endl;
21         cout << "Return value: " << tcStub->getByte(68) << endl;
22         cout << "Return value: " << tcStub->getShort(1234) << endl;
23         cout << "Return value: " << tcStub->getLong(12345678) << endl;
24         cout << "Return value: " << tcStub->getFloat(12.345) << endl;
25         cout << "Return value: " << tcStub->getDouble(12345.678) << endl;
26         cout << "Return value: " << tcStub->getBoolean(true) << endl;
27         cout << "Return value: " << tcStub->getChar('c') << endl;
28 /*      cout << "==== ARRAY ====" << endl;
29         vector<char> in1;
30         in1.push_back(68);
31         in1.push_back(69);
32         cout << "Return value: " << tcStub->getByteArray(in1)[0] << ", " << tcStub->getByteArray(in1)[1] << endl;
33         vector<short> in2;
34         in2.push_back(1234);
35         in2.push_back(1235);
36         cout << "Return value: " << tcStub->getShortArray(in2)[0] << ", "  << tcStub->getShortArray(in2)[1] << endl;
37         vector<int64_t> in3;
38         in3.push_back(12345678);
39         in3.push_back(12356782);
40         cout << "Return value: " << tcStub->getLongArray(in3)[0] << ", "  << tcStub->getLongArray(in3)[1] << endl;
41         vector<float> in4;
42         in4.push_back(12.345);
43         in4.push_back(12.346);
44         cout << "Return value: " << tcStub->getFloatArray(in4)[0] << ", "  << tcStub->getFloatArray(in4)[1] << endl;
45         vector<double> in5;
46         in5.push_back(12345.678);
47         in5.push_back(12345.543);
48         cout << "Return value: " << tcStub->getDoubleArray(in5)[0] << ", "  << tcStub->getDoubleArray(in5)[1] << endl;
49         vector<bool> in6;
50         in6.push_back(true);
51         in6.push_back(false);
52         cout << "Return value: " << tcStub->getBooleanArray(in6)[0] << ", "  << tcStub->getBooleanArray(in6)[1] << endl;
53         vector<char> in7;
54         in7.push_back('c');
55         in7.push_back('e');
56         cout << "Return value: " << tcStub->getCharArray(in7)[0] << ", "  << tcStub->getCharArray(in7)[1] << endl;
57         cout << "==== VECTOR/LIST ====" << endl;
58         vector<char> inl1;
59         inl1.push_back(68);
60         inl1.push_back(69);
61         cout << "Return value: " << tcStub->getByteList(inl1)[0] << ", " << tcStub->getByteList(inl1)[1] << endl;
62         vector<short> inl2;
63         inl2.push_back(1234);
64         inl2.push_back(1235);
65         cout << "Return value: " << tcStub->getShortList(inl2)[0] << ", "  << tcStub->getShortList(inl2)[1] << endl;
66         vector<int64_t> inl3;
67         inl3.push_back(12345678);
68         inl3.push_back(12356782);
69         cout << "Return value: " << tcStub->getLongList(inl3)[0] << ", "  << tcStub->getLongList(inl3)[1] << endl;
70         vector<float> inl4;
71         inl4.push_back(12.345);
72         inl4.push_back(12.346);
73         cout << "Return value: " << tcStub->getFloatList(inl4)[0] << ", "  << tcStub->getFloatList(inl4)[1] << endl;
74         vector<double> inl5;
75         inl5.push_back(12345.678);
76         inl5.push_back(12345.543);
77         cout << "Return value: " << tcStub->getDoubleList(inl5)[0] << ", "  << tcStub->getDoubleList(inl5)[1] << endl;
78         vector<bool> inl6;
79         inl6.push_back(true);
80         inl6.push_back(false);
81         cout << "Return value: " << tcStub->getBooleanList(inl6)[0] << ", "  << tcStub->getBooleanList(inl6)[1] << endl;
82         vector<char> inl7;
83         inl7.push_back('c');
84         inl7.push_back('e');
85         cout << "Return value: " << tcStub->getCharList(inl7)[0] << ", "  << tcStub->getCharList(inl7)[1] << endl;
86         cout << "==== ENUM ====" << endl;
87         Enum en;
88         en = APPLE;
89         Enum res = tcStub->handleEnum(en);
90         cout << "Return value: " << res << endl;
91         vector<Enum> vecEn;
92         vecEn.push_back(APPLE);
93         vecEn.push_back(ORANGE);
94         vecEn.push_back(APPLE);
95         vecEn.push_back(GRAPE);
96         vector<Enum> vecRes = tcStub->handleEnumArray(vecEn);
97         for (Enum en : vecRes) {
98                 cout << "Enum value: " << en << endl;
99         }
100         vector<Enum> vecRes2 = tcStub->handleEnumList(vecEn);
101         for (Enum en : vecRes2) {
102                 cout << "Enum value: " << en << endl;
103         }
104         cout << "==== STRUCT ====" << endl;
105         Struct str;
106         str.name = "Rahmadi";
107         str.value = 0.123;
108         str.year = 2016;
109         Struct resStr = tcStub->handleStruct(str);
110         cout << "Name: " << resStr.name << endl;
111         cout << "Value:" << resStr.value << endl;
112         cout << "Year" << resStr.year << endl;
113         Struct str2;
114         str2.name = "Trimananda";
115         str2.value = 0.124;
116         str2.year = 2017;
117         vector<Struct> vecStr;
118         vecStr.push_back(str);
119         vecStr.push_back(str2);
120         vector<Struct> vecRetStr = tcStub->handleStructArray(vecStr);
121         for (Struct st : vecRetStr) {
122                 cout << "Name: " << st.name << endl;
123                 cout << "Value:" << st.value << endl;
124                 cout << "Year" << st.year << endl;
125         }
126         vector<Struct> vecRetStr2 = tcStub->handleStructList(vecStr);
127         for (Struct st : vecRetStr2) {
128                 cout << "Name: " << st.name << endl;
129                 cout << "Value:" << st.value << endl;
130                 cout << "Year" << st.year << endl;
131         }*/
132         cout << "==== CALLBACK ====" << endl;
133         CallBackInterface *cbSingle = new CallBack(2354);
134         tcStub->registerCallback(cbSingle);
135         cout << "Return value from callback: " << tcStub->callBack() << endl;
136         CallBackInterface *cb1 = new CallBack(23);
137         CallBackInterface *cb2 = new CallBack(33);
138         CallBackInterface *cb3 = new CallBack(43);
139         vector<CallBackInterface*> cb;
140         cb.push_back(cb1);
141         cb.push_back(cb2);
142         cb.push_back(cb3);
143         tcStub->registerCallbackArray(cb);
144         cout << "Return value from callback: " << tcStub->callBack() << endl;
145         CallBackInterface *cb4 = new CallBack(53);
146         CallBackInterface *cb5 = new CallBack(63);
147         CallBackInterface *cb6 = new CallBack(73);
148         vector<CallBackInterface*> cblist;
149         cblist.push_back(cb4);
150         cblist.push_back(cb5);
151         cblist.push_back(cb6);
152         tcStub->registerCallbackList(cblist);
153         cout << "Return value from callback: " << tcStub->callBack() << endl;
154
155         cout << "==== OTHERS ====" << endl;
156         cout << "Return value: " << tcStub->getA() << endl;
157         cout << "Return value: " << tcStub->setAndGetA(123) << endl;
158         cout << "Return value: " << tcStub->setACAndGetA("string", 123) << endl;
159         vector<string> input;
160         input.push_back("123");
161         input.push_back("456");
162         input.push_back("987");
163
164         cout << "Return value: " << tcStub->sumArray(input) << endl;
165         
166         return 0;
167 }