Cleaning up drivers/Cpp, Cpp/Lifxtest, virtuals, and iotrmi/C++ (revisiting the C...
[iot2.git] / benchmarks / drivers / Cpp / LifxLightBulb / LightBulb_Skeleton.hpp
index b70b21dd3e6c04b7a7f4bb24ba312101fd81ead7..82fa32a3a4f732c9d842875972a85731cd00ee34 100644 (file)
@@ -5,8 +5,9 @@
 
 #include <vector>
 #include <set>
-#include "IoTRMICall.hpp"
-#include "IoTRMIObject.hpp"
+#include "IoTRMIComm.hpp"
+#include "IoTRMICommClient.hpp"
+#include "IoTRMICommServer.hpp"
 
 using namespace std;
 
@@ -15,321 +16,59 @@ class LightBulb_Skeleton : public LightBulb
        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 };
-
-//typedef LightBulb_Skeleton* create_t(LightBulb *_mainObj, string _callbackAddress, int _port);
-//typedef void destroy_t(LightBulb_Skeleton*);
+set<int> LightBulb_Skeleton::set0Allowed { 2, 6, 1, 3, 4, 8, 0, 5, 7, 9 };
 #endif