private String strObjName;
private String strObjClassName;
private String strObjClassInterfaceName;
+ private String strObjStubClsIntfaceName;
private String strIoTMasterHostAdd;
private String strIoTSlaveControllerHostAdd;
private String strIoTSlaveObjectHostAdd;
private static final String STR_NO_PROTOCOL = "nopro";
private static final String STR_SELF_MAC_ADD = "00:00:00:00:00:00";
private static final String STR_INTERFACE_CLS_CFG = "INTERFACE_CLASS";
+ private static final String STR_INT_STUB_CLS_CFG = "INTERFACE_STUB_CLASS";
private static final String STR_FILE_TRF_CFG = "ADDITIONAL_ZIP_FILE";
private static final String STR_YES = "Yes";
private static final String STR_NO = "No";
strObjName = null;
strObjClassName = null;
strObjClassInterfaceName = null;
+ strObjStubClsIntfaceName = null;
strIoTMasterHostAdd = null;
strIoTSlaveControllerHostAdd = null;
strIoTSlaveObjectHostAdd = null;
// Extract the interface name for RMI
// e.g. ProximitySensorInterface, TempSensorInterface, etc.
- String strObjCfgFile = STR_IOT_CODE_PATH + strObjClassName + "/" + strObjClassName + STR_CFG_FILE_EXT;
+
+String strObjCfgFile = STR_IOT_CODE_PATH + strObjClassName + "/" + strObjClassName + STR_CFG_FILE_EXT;
strObjClassInterfaceName = parseConfigFile(strObjCfgFile, STR_INTERFACE_CLS_CFG);
+ strObjStubClsIntfaceName = parseConfigFile(strObjCfgFile, STR_INT_STUB_CLS_CFG);
// Create an object name, e.g. ProximitySensorImplPS1
strObjName = strObjClassName + strFieldObjectID;
// Check first if host exists
// Naming for objects ProximitySensor becomes ProximitySensor0, ProximitySensor1, etc.
commHan.addPortConnection(strIoTSlaveObjectHostAdd, strObjName);
commHan.addActiveControllerObject(strFieldObjectID, strObjName, strObjClassName, strObjClassInterfaceName,
- strIoTSlaveObjectHostAdd, arrFieldValues, arrFieldClasses);
+ strObjStubClsIntfaceName, strIoTSlaveObjectHostAdd, arrFieldValues, arrFieldClasses);
// ROUTING POLICY: IoTMaster and device/controller object
// Master-slave communication
routerConfig.configureRouterMainPolicies(STR_ROUTER_ADD, strIoTMasterHostAdd,
* @params arrFieldClasses Array of field classes
* @return void
*/
- private void createObject(String strObjName, String strObjClassName, String strObjClassInterfaceName,
+ private void createObject(String strObjName, String strObjClassName, String strObjClassInterfaceName, String strObjStubClsIntfaceName,
String strIoTSlaveObjectHostAdd, String strFieldObjectID, Object[] arrFieldValues, Class[] arrFieldClasses)
throws IOException, FileNotFoundException, ClassNotFoundException, InterruptedException {
// Pack object information to create object on a IoTSlave
Message msgObjIoTSlave = new MessageCreateObject(IoTCommCode.CREATE_OBJECT, strIoTSlaveObjectHostAdd,
- strObjClassName, strObjName, strObjClassInterfaceName, commHan.getRMIRegPort(strObjName),
+ strObjClassName, strObjName, strObjClassInterfaceName, strObjStubClsIntfaceName, commHan.getRMIRegPort(strObjName),
commHan.getRMIStubPort(strObjName), arrFieldValues, arrFieldClasses);
// Send message
commMasterToSlave(msgObjIoTSlave, "Sending object information", inStream, outStream);
}
}
// End the session
+ // TODO: Change this later
outStream.writeObject(new MessageSimple(IoTCommCode.END_SESSION));
// PROFILING
synchronized(this) {
try {
createObject(strObjName, objCrtInfo.getObjectClassName(), objCrtInfo.getObjectClassInterfaceName(),
- objCrtInfo.getIoTSlaveObjectHostAdd(), commHan.getFieldObjectID(strObjName),
- commHan.getArrayFieldValues(strObjName), commHan.getArrayFieldClasses(strObjName));
+ objCrtInfo.getObjectStubClassInterfaceName(), objCrtInfo.getIoTSlaveObjectHostAdd(),
+ commHan.getFieldObjectID(strObjName), commHan.getArrayFieldValues(strObjName),
+ commHan.getArrayFieldClasses(strObjName));
} catch (IOException |
ClassNotFoundException |
InterruptedException ex) {
// Call the method to create an object
instrumentObject(strObjID);
objInitHand.addObjectIntoField(strFieldName, strIoTSlaveObjectHostAdd, strObjName,
- strObjClassName, strObjClassInterfaceName, commHan.getRMIRegPort(strObjName),
+ strObjClassName, strObjClassInterfaceName, strObjStubClsIntfaceName, commHan.getRMIRegPort(strObjName),
commHan.getRMIStubPort(strObjName));
}
}
// Get the first object controller host address
String strFirstIoTSlaveObjectHostAdd = strIoTSlaveObjectHostAdd;
objInitHand.addObjectIntoField(strFieldName, strIoTSlaveObjectHostAdd, strObjName,
- strObjClassName, strObjClassInterfaceName, commHan.getRMIRegPort(strObjName),
- commHan.getRMIStubPort(strObjName));
+ strObjClassName, strObjClassInterfaceName, strObjStubClsIntfaceName,
+ commHan.getRMIRegPort(strObjName), commHan.getRMIStubPort(strObjName));
// Operate on the second set
arrFieldClasses = relationInstrumenter.secondFieldClasses(iRow);
arrFieldValues = relationInstrumenter.secondFieldValues(iRow);
// Get the second object controller host address
String strSecondIoTSlaveObjectHostAdd = strIoTSlaveObjectHostAdd;
objInitHand.addSecondObjectIntoField(strFieldName, strIoTSlaveObjectHostAdd, strObjName,
- strObjClassName, strObjClassInterfaceName, commHan.getRMIRegPort(strObjName),
- commHan.getRMIStubPort(strObjName));
+ strObjClassName, strObjClassInterfaceName, strObjStubClsIntfaceName,
+ commHan.getRMIRegPort(strObjName), commHan.getRMIStubPort(strObjName));
// ROUTING POLICY: first and second controller objects in IoTRelation
routerConfig.configureRouterMainPolicies(STR_ROUTER_ADD, strFirstIoTSlaveObjectHostAdd,
// == COMMUNICATION WITH IOTSLAVE CONTROLLER TO FILL IN IOTSET
commMasterToSlave(new MessageGetObject(IoTCommCode.GET_IOTSET_OBJECT, objInitInfo.getIoTSlaveObjectHostAdd(),
objInitInfo.getObjectName(), objInitInfo.getObjectClassName(), objInitInfo.getObjectClassInterfaceName(),
- objInitInfo.getRMIRegistryPort(), objInitInfo.getRMIStubPort()),
+ objInitInfo.getObjectStubClassInterfaceName(), objInitInfo.getRMIRegistryPort(), objInitInfo.getRMIStubPort()),
"Get IoTSet object!", inStream, outStream);
}
// == COMMUNICATION WITH IOTSLAVE CONTROLLER TO REINITIALIZE IOTSET FIELD
// == COMMUNICATION WITH IOTSLAVE CONTROLLER TO FILL IN IOTRELATION (FIRST OBJECT)
commMasterToSlave(new MessageGetObject(IoTCommCode.GET_IOTRELATION_FIRST_OBJECT,
objInitInfo.getIoTSlaveObjectHostAdd(), objInitInfo.getObjectName(), objInitInfo.getObjectClassName(),
- objInitInfo.getObjectClassInterfaceName(), objInitInfo.getRMIRegistryPort(), objInitInfo.getRMIStubPort()),
+ objInitInfo.getObjectClassInterfaceName(), objInitInfo.getObjectStubClassInterfaceName(),
+ objInitInfo.getRMIRegistryPort(), objInitInfo.getRMIStubPort()),
"Get IoTRelation first object!", inStream, outStream);
ObjectInitInfo objSecObj = (ObjectInitInfo) it.next();
// == COMMUNICATION WITH IOTSLAVE CONTROLLER TO FILL IN IOTRELATION (SECOND OBJECT)
commMasterToSlave(new MessageGetObject(IoTCommCode.GET_IOTRELATION_SECOND_OBJECT,
objSecObj.getIoTSlaveObjectHostAdd(), objSecObj.getObjectName(), objSecObj.getObjectClassName(),
- objSecObj.getObjectClassInterfaceName(), objSecObj.getRMIRegistryPort(), objSecObj.getRMIStubPort()),
+ objSecObj.getObjectClassInterfaceName(), objInitInfo.getObjectStubClassInterfaceName(),
+ objSecObj.getRMIRegistryPort(), objSecObj.getRMIStubPort()),
"Get IoTRelation second object!", inStream, outStream);
}
// == COMMUNICATION WITH IOTSLAVE CONTROLLER TO REINITIALIZE IOTRELATION FIELD