ffd6c42e75d522711e81396f12835aa9a08a4dda
[iot2.git] / iotjava / iotrmi / C++ / sample / CallBack_CBSkeleton.hpp
1 #ifndef _CALLBACK_CBSKELETON_HPP__
2 #define _CALLBACK_CBSKELETON_HPP__
3
4 #include <iostream>
5 #include "CallBackInterface.hpp"
6 #include "../IoTRMIObject.hpp"
7
8
9 using namespace std;
10
11 class CallBack_CBSkeleton : public CallBackInterface {
12         public:
13                 CallBack_CBSkeleton(CallBackInterface* _cb, int _objectId);
14                 ~CallBack_CBSkeleton();
15
16                 void                    invokeMethod(IoTRMIObject* rmiObj);
17                 int                             printInt();
18                 void                    setInt(int _i);
19
20                 void                    ___printInt(IoTRMIObject* rmiObj);
21                 void                    ___setInt(IoTRMIObject* rmiObj);
22
23                 const static int                size = 2;
24                 const static string     methodSignatures[size];
25
26         private:
27                 CallBackInterface       *cb;
28                 int                                     objectId = 0;
29 };
30
31
32 const string CallBack_CBSkeleton::methodSignatures[CallBack_CBSkeleton::size] = {
33
34         "intprintInt()",
35         "voidsetInt(int)"
36 };
37
38
39 // Constructor
40 CallBack_CBSkeleton::CallBack_CBSkeleton(CallBackInterface* _cb, int _objectId) {
41
42         cb = _cb;
43         objectId = _objectId;
44 }
45
46
47 CallBack_CBSkeleton::~CallBack_CBSkeleton() {
48
49 }
50
51
52 int CallBack_CBSkeleton::printInt() {
53
54         return cb->printInt();
55 }
56
57
58 void CallBack_CBSkeleton::___printInt(IoTRMIObject* rmiObj) {
59
60         string paramCls[] = { };
61         int numParam = 0;
62         void* paramObj[] = { };
63         rmiObj->getMethodParams(paramCls, numParam, paramObj);
64         int retVal = printInt();
65         void* retObj = &retVal;
66         rmiObj->sendReturnObj(retObj, "int");
67 }
68
69
70 void CallBack_CBSkeleton::setInt(int _i) {
71
72         cb->setInt(_i);
73 }
74
75
76 void CallBack_CBSkeleton::___setInt(IoTRMIObject* rmiObj) {
77
78         string paramCls[] = { "int" };
79         int numParam = 1;
80         int param1 = 1;
81         void* paramObj[] = { &param1 };
82         rmiObj->getMethodParams(paramCls, numParam, paramObj);
83         setInt(param1);
84 }
85
86
87 void CallBack_CBSkeleton::invokeMethod(IoTRMIObject* rmiObj) {
88
89         int methodId = rmiObj->getMethodId();
90         
91         switch (methodId) {
92                 case 0 : ___printInt(rmiObj); break;
93                 case 1 : ___setInt(rmiObj); break;
94                 default:
95                         string error = "Method Id not recognized!";
96                         throw error;
97         }
98 }
99
100
101 #endif
102