#include <vector>
#include <set>
-#include "IoTRMICall.hpp"
-#include "IoTRMIObject.hpp"
+#include "IoTRMIComm.hpp"
+#include "IoTRMICommClient.hpp"
+#include "IoTRMICommServer.hpp"
using namespace std;
private:
LightBulb *mainObj;
- vector<int> ports;
- string callbackAddress;
- IoTRMIObject *rmiObj;
-
- const static int object0Id = 0; //LightBulbSmart
+ IoTRMIComm *rmiComm;
+ char* methodBytes;
+ int methodLen;
+ int objectId = 1;
static set<int> set0Allowed;
-
+ // Synchronization variables
+ bool methodReceived = false;
+ bool didAlreadyInitWaitInvoke = false;
public:
- LightBulb_Skeleton(LightBulb *_mainObj, string _callbackAddress, int _port) {
- bool _bResult = false;
- mainObj = _mainObj;
- callbackAddress = _callbackAddress;
- rmiObj = new IoTRMIObject(_port, &_bResult);
- ___waitRequestInvokeMethod();
- }
-
- ~LightBulb_Skeleton() {
- if (rmiObj != NULL) {
- delete rmiObj;
- rmiObj = NULL;
- }
- }
-
- void init() {
- mainObj->init();
- }
-
- void turnOff() {
- mainObj->turnOff();
- }
-
- void turnOn() {
- mainObj->turnOn();
- }
-
- bool getState() {
- return mainObj->getState();
- }
-
- void setColor(double _hue, double _saturation, double _brightness) {
- mainObj->setColor(_hue, _saturation, _brightness);
- }
-
- void setTemperature(int _temperature) {
- mainObj->setTemperature(_temperature);
- }
-
- double getBrightness() {
- return mainObj->getBrightness();
- }
-
- double getHue() {
- return mainObj->getHue();
- }
-
- double getSaturation() {
- return mainObj->getSaturation();
- }
-
- int getTemperature() {
- return mainObj->getTemperature();
- }
-
- double getBrightnessRangeLowerBound() {
- return mainObj->getBrightnessRangeLowerBound();
- }
-
- double getBrightnessRangeUpperBound() {
- return mainObj->getBrightnessRangeUpperBound();
- }
-
- double getHueRangeLowerBound() {
- return mainObj->getHueRangeLowerBound();
- }
-
- double getHueRangeUpperBound() {
- return mainObj->getHueRangeUpperBound();
- }
-
- double getSaturationRangeLowerBound() {
- return mainObj->getSaturationRangeLowerBound();
- }
-
- double getSaturationRangeUpperBound() {
- return mainObj->getSaturationRangeUpperBound();
- }
-
- int getTemperatureRangeLowerBound() {
- return mainObj->getTemperatureRangeLowerBound();
- }
-
- int getTemperatureRangeUpperBound() {
- return mainObj->getTemperatureRangeUpperBound();
- }
-
- void ___init() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- init();
- }
-
- void ___turnOff() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- turnOff();
- }
-
- void ___turnOn() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- turnOn();
- }
-
- void ___getState() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- bool retVal = getState();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "boolean");
- }
-
- void ___setColor() {
- string paramCls[] = { "double", "double", "double" };
- int numParam = 3;
- double _hue;
- double _saturation;
- double _brightness;
- void* paramObj[] = { &_hue, &_saturation, &_brightness };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- setColor(_hue, _saturation, _brightness);
- }
-
- void ___setTemperature() {
- string paramCls[] = { "int" };
- int numParam = 1;
- int _temperature;
- void* paramObj[] = { &_temperature };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- setTemperature(_temperature);
- }
-
- void ___getBrightness() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getBrightness();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getHue() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getHue();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getSaturation() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getSaturation();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getTemperature() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- int retVal = getTemperature();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "int");
- }
-
- void ___getBrightnessRangeLowerBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getBrightnessRangeLowerBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getBrightnessRangeUpperBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getBrightnessRangeUpperBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getHueRangeLowerBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getHueRangeLowerBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getHueRangeUpperBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getHueRangeUpperBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getSaturationRangeLowerBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getSaturationRangeLowerBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getSaturationRangeUpperBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- double retVal = getSaturationRangeUpperBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "double");
- }
-
- void ___getTemperatureRangeLowerBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- int retVal = getTemperatureRangeLowerBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "int");
- }
-
- void ___getTemperatureRangeUpperBound() {
- string paramCls[] = { };
- int numParam = 0;
- void* paramObj[] = { };
- rmiObj->getMethodParams(paramCls, numParam, paramObj);
- int retVal = getTemperatureRangeUpperBound();
- void* retObj = &retVal;
- rmiObj->sendReturnObj(retObj, "int");
- }
-
- void ___waitRequestInvokeMethod() {
- while (true) {
- rmiObj->getMethodBytes();
- int _objectId = rmiObj->getObjectId();
- int methodId = rmiObj->getMethodId();
- if (_objectId == object0Id) {
- if (set0Allowed.find(methodId) == set0Allowed.end()) {
- cerr << "Object with object Id: " << _objectId << " is not allowed to access method: " << methodId << endl;
- return;
- }
- }
- else {
- cerr << "Object Id: " << _objectId << " not recognized!" << endl;
- return;
- }
- switch (methodId) {
- case 0: ___init(); break;
- case 1: ___turnOff(); break;
- case 2: ___turnOn(); break;
- case 3: ___getState(); break;
- case 4: ___setColor(); break;
- case 5: ___setTemperature(); break;
- case 6: ___getBrightness(); break;
- case 7: ___getHue(); break;
- case 8: ___getSaturation(); break;
- case 9: ___getTemperature(); break;
- case 10: ___getBrightnessRangeLowerBound(); break;
- case 11: ___getBrightnessRangeUpperBound(); break;
- case 12: ___getHueRangeLowerBound(); break;
- case 13: ___getHueRangeUpperBound(); break;
- case 14: ___getSaturationRangeLowerBound(); break;
- case 15: ___getSaturationRangeUpperBound(); break;
- case 16: ___getTemperatureRangeLowerBound(); break;
- case 17: ___getTemperatureRangeUpperBound(); break;
- default:
- cerr << "Method Id " << methodId << " not recognized!" << endl;
- throw exception();
- }
- }
- }
-
+ LightBulb_Skeleton();
+ LightBulb_Skeleton(LightBulb*_mainObj, int _portSend, int _portRecv);
+ LightBulb_Skeleton(LightBulb*_mainObj, IoTRMIComm *rmiComm, int _objectId);
+ ~LightBulb_Skeleton();
+ bool didInitWaitInvoke();
+ void init();
+ void turnOff();
+ void turnOn();
+ bool getState();
+ void setColor(double _hue, double _saturation, double _brightness);
+ void setTemperature(int _temperature);
+ double getBrightness();
+ double getHue();
+ double getSaturation();
+ int getTemperature();
+ double getBrightnessRangeLowerBound();
+ double getBrightnessRangeUpperBound();
+ double getHueRangeLowerBound();
+ double getHueRangeUpperBound();
+ double getSaturationRangeLowerBound();
+ double getSaturationRangeUpperBound();
+ int getTemperatureRangeLowerBound();
+ int getTemperatureRangeUpperBound();
+ void ___init(LightBulb_Skeleton* skel);
+ void ___turnOff(LightBulb_Skeleton* skel);
+ void ___turnOn(LightBulb_Skeleton* skel);
+ void ___getState(LightBulb_Skeleton* skel);
+ void ___setColor(LightBulb_Skeleton* skel);
+ void ___setTemperature(LightBulb_Skeleton* skel);
+ void ___getBrightness(LightBulb_Skeleton* skel);
+ void ___getHue(LightBulb_Skeleton* skel);
+ void ___getSaturation(LightBulb_Skeleton* skel);
+ void ___getTemperature(LightBulb_Skeleton* skel);
+ void ___getBrightnessRangeLowerBound(LightBulb_Skeleton* skel);
+ void ___getBrightnessRangeUpperBound(LightBulb_Skeleton* skel);
+ void ___getHueRangeLowerBound(LightBulb_Skeleton* skel);
+ void ___getHueRangeUpperBound(LightBulb_Skeleton* skel);
+ void ___getSaturationRangeLowerBound(LightBulb_Skeleton* skel);
+ void ___getSaturationRangeUpperBound(LightBulb_Skeleton* skel);
+ void ___getTemperatureRangeLowerBound(LightBulb_Skeleton* skel);
+ void ___getTemperatureRangeUpperBound(LightBulb_Skeleton* skel);
+ void ___waitRequestInvokeMethod(LightBulb_Skeleton* skel);
};
-set<int> LightBulb_Skeleton::set0Allowed { 2, 10, 1, 3, 11, 8, 12, 7, 13, 9, 6, 16, 17, 4, 0, 14, 15, 5 };
+set<int> LightBulb_Skeleton::set0Allowed { 2, 6, 1, 3, 4, 8, 0, 5, 7, 9 };
#endif