#define _TESTCLASS_SKELETON_HPP__
#include <iostream>
+#include <exception>
+#include <set>
#include "../IoTRMIObject.hpp"
#include "../IoTRMICall.hpp"
#include "CallBack_CBStub.hpp"
private:
TestClassInterface *tc;
IoTRMIObject *rmiObj;
+ // Permission setup
+ const static int object0Id = 0;
+ //const static int object0Permission[];
+ const static set<int> set0Allowed;
+
IoTRMICall *rmiCall;
static int objIdCnt;
vector<CallBackInterface*> vecCBObj;
};
+// Permission setup
+//const int TestClass_Skeleton::object0Id = 0;
+//const int TestClass_Skeleton::object0Permission[] = {0, 1, 2, 3, 4, 5};
+const set<int> TestClass_Skeleton::set0Allowed {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+
int TestClass_Skeleton::objIdCnt = 0;
}
-void TestClass_Skeleton::___handleEnum(int enumsize1) {
+void TestClass_Skeleton::___handleEnum() {
int numParam = 1;
string paramCls[] = { "int[]" };
void TestClass_Skeleton::___waitRequestInvokeMethod() {
int structsize1 = 0;
- int enumsize1 = 0;
+
// Loop continuously waiting for incoming bytes
while (true) {
rmiObj->getMethodBytes();
+ int _objectId = rmiObj->getObjectId();
int methodId = rmiObj->getMethodId();
+ if (_objectId == object0Id) {
+ // Multiplex based on object Id
+ // Complain if the method is not allowed
+ if (set0Allowed.find(methodId) == set0Allowed.end()) {
+ cerr << "TestClass_Skeleton: This object is not allowed to access method " << methodId << endl;
+ //exit(1);
+ throw exception();
+ }
+ // If we have more than 1 object Id...
+ //else if (_objectId == object1Id) {
+
+ } else {
+ cerr << "TestClass_Skeleton: Unrecognizable object Id: " << _objectId << endl;
+ throw exception();
+ //exit(1);
+ }
switch (methodId) {
case 0: ___setA(); break;
// Handle struct
case 10: ___handleStruct(structsize1); break;
case 11: structsize1 = ___structSize(); break;
- case 12: ___handleEnum(enumsize1); break;
+ case 12: ___handleEnum(); break;
default:
string error = "Method Id not recognized!";
throw error;