+bool Room_Skeleton::didInitWaitInvoke() {
+ return didAlreadyInitWaitInvoke;
+}
+
+int Room_Skeleton::getRoomID() {
+ return mainObj->getRoomID();
+}
+
+void Room_Skeleton::___getRoomID(Room_Skeleton* skel) {
+ char* localMethodBytes = new char[methodLen];
+ memcpy(localMethodBytes, skel->methodBytes, methodLen);
+ didGetMethodBytes.exchange(true);
+ string paramCls[] = { };
+ int numParam = 0;
+ void* paramObj[] = { };
+ rmiComm->getMethodParams(paramCls, numParam, paramObj, localMethodBytes);
+ int retVal = getRoomID();
+ void* retObj = &retVal;
+ rmiComm->sendReturnObj(retObj, "int", localMethodBytes);
+ delete[] localMethodBytes;
+}
+
+void Room_Skeleton::___waitRequestInvokeMethod(Room_Skeleton* skel) {
+ skel->didAlreadyInitWaitInvoke = true;
+ while (true) {
+ if (!methodReceived) {
+ continue;
+ }
+ skel->methodBytes = skel->rmiComm->getMethodBytes();
+ skel->methodLen = skel->rmiComm->getMethodLength();
+ methodReceived = false;
+ int _objectId = skel->rmiComm->getObjectId(skel->methodBytes);
+ int methodId = skel->rmiComm->getMethodId(skel->methodBytes);
+ if (_objectId == objectId) {
+ if (set0Allowed.find(methodId) == set0Allowed.end()) {
+ cerr << "Object with object Id: " << _objectId << " is not allowed to access method: " << methodId << endl;
+ return;
+ }
+ }
+ else {
+ continue;
+ }
+ switch (methodId) {
+ case 0: {
+ thread th0 (&Room_Skeleton::___getRoomID, skel, skel);
+ th0.detach(); break;
+ }
+ default:
+ cerr << "Method Id " << methodId << " not recognized!" << endl;
+ return;
+ }
+ }
+}
+
+extern "C" void* createRoom_Skeleton(void** params) {
+ // Args: *_mainObj, int _portSend, int _portRecv
+ return new Room_Skeleton((Room*) params[0], *((int*) params[1]), *((int*) params[2]));
+}
+
+extern "C" void destroyRoom_Skeleton(void* t) {
+ Room_Skeleton* obj = (Room_Skeleton*) t;
+ delete obj;
+}