void ___printInt(IoTRMIObject* rmiObj);
void ___setInt(IoTRMIObject* rmiObj);
- const static int size = 2;
- const static string methodSignatures[size];
-
private:
CallBackInterface *cb;
int objectId = 0;
};
-const string CallBack_CBSkeleton::methodSignatures[CallBack_CBSkeleton::size] = {
-
- "intprintInt()",
- "voidsetInt(int)"
-};
-
-
// Constructor
CallBack_CBSkeleton::CallBack_CBSkeleton(CallBackInterface* _cb, int _objectId) {
int printInt();
void setInt(int _i);
- const static int size = 2;
- const static string methodSignatures[size];
-
private:
IoTRMICall *rmiCall;
};
-const string CallBack_CBStub::methodSignatures[CallBack_CBStub::size] = {
-
- "intprintInt()",
- "voidsetInt(int)"
-};
-
-
// Constructor
CallBack_CBStub::CallBack_CBStub() {
void ___printInt();
void ___setInt();
- const static int size = 2;
- const static string methodSignatures[size];
-
private:
CallBackInterface *cb;
IoTRMIObject *rmiObj;
};
-const string CallBack_Skeleton::methodSignatures[CallBack_Skeleton::size] = {
-
- "intprintInt()",
- "voidsetInt(int)"
-};
-
-
// Constructor
CallBack_Skeleton::CallBack_Skeleton(CallBackInterface* _cb, int _port) {
int printInt();
void setInt(int _i);
- const static int size = 2;
- const static string methodSignatures[size];
-
private:
IoTRMICall *rmiCall;
};
-const string CallBack_Stub::methodSignatures[CallBack_Stub::size] = {
-
- "intprintInt()",
- "voidsetInt(int)"
-};
-
-
// Constructor
CallBack_Stub::CallBack_Stub() {
int ___enumSize();
void ___handleEnum(int enumsize1);
- const static int size = 12;
- const static string methodSignatures[size];
-
private:
TestClassInterface *tc;
IoTRMIObject *rmiObj;
};
-const string TestClass_Skeleton::methodSignatures[TestClass_Skeleton::size] = {
- "voidsetA(int)", // 0
- "voidsetB(float)", // 1
- "voidsetC(string)", // 2
- "sumArray(string[])", // 3
- //"sumArray(int[])",
- "intsetAndGetA(int)", // 4
- "intsetACAndGetA(string,int)", // 5
- "intcallBack()", // 6
- "voidregisterCallBack(CallBackInterface)", // 7
- "voidregisterCallBack(CallBackInterface[])", // 8
- "registercallback", // 9
- "handleStruct(StructJ[])", // 10
- "structsize" // 11
-};
-
-
int TestClass_Skeleton::objIdCnt = 0;
void TestClass_Skeleton::___handleEnum(int enumsize1) {
- string paramCls[enumsize1];
- void* paramObj[enumsize1];
- int numParam = enumsize1;
- // define array of everything
- int param1[enumsize1];
- for(int i=0; i < enumsize1; i++) {
- paramCls[i] = "int";
- paramObj[i] = ¶m1[i];
- }
+ int numParam = 1;
+ string paramCls[] = { "int[]" };
+ vector<int> paramInt;
+ void* paramObj[] = { ¶mInt };
+ // Receive the array of integers
rmiObj->getMethodParams(paramCls, numParam, paramObj);
- vector<EnumC> en(enumsize1);
- for (int i=0; i < enumsize1; i++) {
- en[i] = (EnumC) param1[i];
+ int enumSize1 = paramInt.size();
+ vector<EnumC> en(enumSize1);
+ for (int i=0; i < enumSize1; i++) {
+ en[i] = (EnumC) paramInt[i];
}
//handleEnum(en);
// if void, just "handleEnum(en)"
case 10: ___handleStruct(structsize1); break;
case 11: structsize1 = ___structSize(); break;
case 12: ___handleEnum(enumsize1); break;
- case 13: enumsize1 = ___enumSize(); break;
default:
string error = "Method Id not recognized!";
throw error;
cout << "Return value: " << tcStub->sumArray(input) << endl;
- /*CallBackInterface *cb1 = new CallBack(23);
+ CallBackInterface *cb1 = new CallBack(23);
CallBackInterface *cb2 = new CallBack(33);
CallBackInterface *cb3 = new CallBack(43);
vector<CallBackInterface*> cb;
cb.push_back(cb2);
cb.push_back(cb3);
tcStub->registerCallback(cb);
+ /*CallBackInterface *cb4 = new CallBack(53);
+ CallBackInterface *cb5 = new CallBack(63);
+ CallBackInterface *cb6 = new CallBack(73);
+ vector<CallBackInterface*> cbsec;
+ cb.push_back(cb4);
+ cb.push_back(cb5);
+ cb.push_back(cb6);
+ tcStub->registerCallback(cbsec);*/
cout << "Return value from callback: " << tcStub->callBack() << endl;
vector<data> dataset;
tcStub->handleStruct(dataset);
- delete tcStub;
- delete cb1;
- delete cb2;
- delete cb3;*/
-
vector<EnumC> vecEn;
vecEn.push_back(APPLE);
vecEn.push_back(ORANGE);
cout << "EnumC: " << en << endl;
}
+ delete tcStub;
+ delete cb1;
+ delete cb2;
+ delete cb3;
+
return 0;
}
void ____init_CallBack(); // thread
void ____registerCallBack(); // tell the other side that we are ready
- const static int size = 12;
- const static string methodSignatures[size];
-
private:
int intA;
float floatB;
int TestClass_Stub::objIdCnt = 0;
-const string TestClass_Stub::methodSignatures[TestClass_Stub::size] = {
- "voidsetA(int)", // 0
- "voidsetB(float)", // 1
- "voidsetC(string)", // 2
- "sumArray(string[])", // 3
- //"sumArray(int[])",
- "intsetAndGetA(int)", // 4
- "intsetACAndGetA(string,int)", // 5
- "intcallBack()", // 6
- "voidregisterCallBack(CallBackInterface)", // 7
- "voidregisterCallBack(CallBackInterface[])", // 8
- "registercallback", // 9
- "handleStruct(StructJ[])", // 10
- "structsize" // 11
-};
-
-
TestClass_Stub::TestClass_Stub() {
address = "";
vector<EnumC> TestClass_Stub::handleEnum(vector<EnumC> vecEn) {
int numParam = 1;
- int methodId = 13;
- string retType = "void";
- string paramCls[] = { "int" };
- int enumsize = vecEn.size();
- void* paramObj[] = { &enumsize };
- void* retObj = NULL;
- rmiCall->remoteCall(objectId, methodId, retType, paramCls, paramObj, numParam, retObj);
-
- int numParam2 = vecEn.size();
- int methodId2 = 12;
- string retType2 = "int[]";
- string paramCls2[numParam2];
+ int numEl = vecEn.size();
+ int methodId = 12;
+ string retType = "int[]";
+ string paramCls[] = { "int[]" };
// Need to define this container for integer version of enum
- int paramEnum[numParam2];
- void* paramObj2[numParam2];
- for(int i = 0; i < numParam2; i++) {
- paramCls2[i] = "int";
- paramEnum[i] = (int) vecEn[i]; // cast enum to integer
- paramObj2[i] = ¶mEnum[i];
+ vector<int> paramInt(numEl);
+ for(int i = 0; i < numEl; i++) {
+ paramInt[i] = (int) vecEn[i]; // cast enum to integer
}
- vector<int> retEnumInt(numParam2);
+ void* paramObj[] = { ¶mInt };
// if no return value just
// void* retObj2 = NULL;
// This is with return value:
- void* retObj2 = &retEnumInt;
- rmiCall->remoteCall(objectId, methodId2, retType2, paramCls2, paramObj2, numParam2, retObj2);
+ vector<int> retEnumInt;
+ void* retObj = &retEnumInt;
+ rmiCall->remoteCall(objectId, methodId, retType, paramCls, paramObj, numParam, retObj);
int enumsize1 = retEnumInt.size();
vector<EnumC> retVal(enumsize1);
for (int i=0; i < enumsize1; i++) {
}
- public int ___enumSize() {
-
- Object[] paramObj = rmiObj.getMethodParams(new Class<?>[] { int.class },
- new Class<?>[] { null });
- return (int) paramObj[0];
- }
+ public void ___handleEnum() throws IOException {
-
- public void ___handleEnum(int enumSize1) throws IOException {
-
- Class<?>[] paramCls = new Class<?>[enumSize1];
- Class<?>[] paramClsVal = new Class<?>[enumSize1];
- for(int i=0; i < enumSize1; i++) {
- paramCls[i] = int.class;
- paramClsVal[i] = null;
- }
- Object[] paramObj = rmiObj.getMethodParams(paramCls,
- paramClsVal);
+ Object[] paramObj = rmiObj.getMethodParams(new Class<?>[] { int[].class },
+ new Class<?>[] { null });
// Encoder/decoder
+ int paramInt[] = (int[]) paramObj[0];
+ int enumSize1 = paramInt.length;
EnumJ[] enumJ = EnumJ.values();
EnumJ[] data = new EnumJ[enumSize1];
for (int i=0; i < enumSize1; i++) {
- data[i] = enumJ[(int) paramObj[i]];
+ data[i] = enumJ[paramInt[i]];
}
// if void, just "handleEnum(data)"
// this is when we have return value EnumJ[]
// Struct handling (3 is the size of the struct)
case 10: ___handleStruct(structSize1); break;
case 11: structSize1 = ___structSize(); break;
- case 12: ___handleEnum(enumSize1); break;
- case 13: enumSize1 = ___enumSize(); break;
+ case 12: ___handleEnum(); break;
default:
throw new Error("Method Id not recognized!");
}
public EnumJ[] handleEnum(EnumJ[] en) {
- // Send length info first
- int methodId = 13;
- Class<?> retType = void.class;
- Class<?>[] paramCls = new Class<?>[] { int.class };
- Object[] paramObj = new Object[] { en.length };
- rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
-
- int methodId2 = 12;
- Class<?> retType2 = int[].class;
- // Calculate the size of the array
- Class<?>[] paramCls2 = new Class<?>[en.length];
- Object[] paramObj2 = new Object[en.length];
+ int methodId = 12;
+ Class<?> retType = int[].class;
// Handle with for loop
+ int paramInt[] = new int[en.length];
for(int i = 0; i < en.length; i++) {
- paramCls2[i] = int.class;
- paramObj2[i] = en[i].ordinal();
+ paramInt[i] = en[i].ordinal();
}
+
+ Class<?>[] paramCls = new Class<?>[] { int[].class };
+ Object[] paramObj = new Object[] { paramInt };
+
// if no return value just
- // rmiCall.remoteCall(objectId, methodId2, retType2, null, paramCls2, paramObj2);
+ // rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
// This is with return value:
Object retObj =
- rmiCall.remoteCall(objectId, methodId2, retType2, null, paramCls2, paramObj2);
+ rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
int[] retEnumInt = (int[]) retObj;
int enumsize1 = retEnumInt.length;
// Encoder/decoder