X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=iotjava%2Fiotruntime%2Fmaster%2FCommunicationHandler.java;h=fd4340828242297ea6e8a5768a92347139488a1e;hb=7cab636b00bf5afcc441c9e4bdd4d6f4f0e2cf95;hp=1026b0cbb48a8a98e1c371adf62c8862d09a2c83;hpb=599d490dfb2d36edde42dceda38b725e08e0485f;p=iot2.git diff --git a/iotjava/iotruntime/master/CommunicationHandler.java b/iotjava/iotruntime/master/CommunicationHandler.java index 1026b0c..fd43408 100644 --- a/iotjava/iotruntime/master/CommunicationHandler.java +++ b/iotjava/iotruntime/master/CommunicationHandler.java @@ -67,7 +67,8 @@ public final class CommunicationHandler { private Map hmRMIRegPort; private Map hmRMIStubPort; private Set hsDevicePort; - private Set hsCallbackPort; + private Set hsAllPorts; + private Map hmAdditionalPort; private int iNumOfObjects; private int iNumOfHosts; private boolean bVerbose; @@ -96,12 +97,40 @@ public final class CommunicationHandler { hmRMIRegPort = new HashMap(); hmRMIStubPort = new HashMap(); hsDevicePort = new HashSet(); - hsCallbackPort = new HashSet(); + hsAllPorts = new HashSet(); + hmAdditionalPort = new HashMap(); iNumOfObjects = 0; iNumOfHosts = 0; bVerbose = _bVerbose; RuntimeOutput.print("CommunicationHandler: Creating a new CommunicationHandler object!", bVerbose); } + + /** + * Method clearCommunicationHandler() + *

+ * Clear the data structure + * + * @return void + */ + public void clearCommunicationHandler() { + + listActiveControllerObj.clear(); + listFieldObjectID.clear(); + listObjCrtInfo.clear(); + listArrFieldValues.clear(); + listArrFieldClasses.clear(); + hmActiveObj.clear(); + hmHostAdd.clear(); + hmHostList.clear(); + hmComPort.clear(); + hmRMIRegPort.clear(); + hmRMIStubPort.clear(); + hsDevicePort.clear(); + hmAdditionalPort.clear(); + iNumOfObjects = 0; + iNumOfHosts = 0; + RuntimeOutput.print("CommunicationHandler: Clearing CommunicationHandler object's data structure!", bVerbose); + } /** * Method addPortConnection() @@ -139,6 +168,8 @@ public final class CommunicationHandler { // Check port existence in HashMap } while (portIsAvailable(iComPort) == false); hmComPort.put(iNumOfObjects, iComPort); + // hsAllPorts tracks all the existing and used port numbers + hsAllPorts.add(iComPort); int iRMIRegPort = 0; do { @@ -146,6 +177,7 @@ public final class CommunicationHandler { // Check port existence in HashMap } while (portIsAvailable(iRMIRegPort) == false); hmRMIRegPort.put(iNumOfObjects, iRMIRegPort); + hsAllPorts.add(iRMIRegPort); int iRMIStubPort = 0; do { @@ -153,6 +185,7 @@ public final class CommunicationHandler { // Check port existence in HashMap } while (portIsAvailable(iRMIStubPort) == false); hmRMIStubPort.put(iNumOfObjects, iRMIStubPort); + hsAllPorts.add(iRMIStubPort); iNumOfObjects++; } @@ -170,7 +203,7 @@ public final class CommunicationHandler { * @return void */ public void addActiveControllerObject(String strFieldObjectID, String strObjName, String strObjClassName, - String strObjClassInterfaceName, String strIoTSlaveObjectHostAdd, Object[] arrFieldValues, + String strObjClassInterfaceName, String strObjStubClsIntfaceName, String strIoTSlaveObjectHostAdd, Object[] arrFieldValues, Class[] arrFieldClasses) { listActiveControllerObj.add(strObjName); @@ -178,35 +211,10 @@ public final class CommunicationHandler { listArrFieldValues.add(arrFieldValues); listArrFieldClasses.add(arrFieldClasses); ObjectCreationInfo objCrtInfo = new ObjectCreationInfo(strIoTSlaveObjectHostAdd, strObjName, - strObjClassName, strObjClassInterfaceName); + strObjClassName, strObjClassInterfaceName, strObjStubClsIntfaceName); listObjCrtInfo.add(objCrtInfo); } - - /** - * Method getCallbackPort() - *

- * Get a new port for new connections for callback objects in the program. - * This newly generated port number will be recorded. - * - * @return int[] A set of callback ports - */ - public int[] getCallbackPorts(int numOfPorts) { - - int[] ports = new int[numOfPorts]; - - for(int i = 0; i < numOfPorts; i++) { - do { - ports[i] = random.nextInt(INT_MAX_PORT - INT_MIN_PORT + 1) + INT_MIN_PORT; - // Check port existence in HashMap - } while (portIsAvailable(ports[i]) == false); - hsCallbackPort.add(ports[i]); - } - - return ports; - } - - /** * Method addDevicePort() *

@@ -219,7 +227,34 @@ public final class CommunicationHandler { public void addDevicePort(int iDevPort) { hsDevicePort.add(iDevPort); + // Track this port number + hsAllPorts.add(iDevPort); + } + + /** + * Method addAdditionalPort() + *

+ * Add a new port for new connections for any objects in the program. + * This newly generated port number will be recorded. + * + * @return int One new port + */ + public int addAdditionalPort(String sAObject) { + + hmActiveObj.put(sAObject, iNumOfObjects); + + int iAdditionalPort = 0; + do { + iAdditionalPort = random.nextInt(INT_MAX_PORT - INT_MIN_PORT + 1) + INT_MIN_PORT; + // Check port existence in HashMap + } while (portIsAvailable(iAdditionalPort) == false); + hmAdditionalPort.put(iNumOfObjects, iAdditionalPort); + // Track this port number + hsAllPorts.add(iAdditionalPort); + + iNumOfObjects++; + return iAdditionalPort; } /** @@ -234,18 +269,23 @@ public final class CommunicationHandler { */ public boolean portIsAvailable(int iPortNumber) { - if (hmComPort.containsValue(iPortNumber) == true) { + /*if (hmComPort.containsValue(iPortNumber) == true) { return false; } else if (hmRMIRegPort.containsValue(iPortNumber) == true) { return false; } else if (hmRMIStubPort.containsValue(iPortNumber) == true) { return false; - } else if (hsDevicePort.contains(iPortNumber) == true) { + } else if (hmAdditionalPort.containsValue(iPortNumber) == true) { return false; - } else if (hsCallbackPort.contains(iPortNumber) == true) { + } else if (hsDevicePort.contains(iPortNumber) == true) { return false; } else { return true; + }*/ + if (hsAllPorts.contains(iPortNumber)) { + return false; + } else { + return true; } } @@ -335,6 +375,19 @@ public final class CommunicationHandler { return hmComPort.get(hmActiveObj.get(sAObject)); } + /** + * Method getAdditionalPort() + *

+ * User finds a port number using Object name + * + * @param sAObject String active object name + * @return Integer + */ + public Integer getAdditionalPort(String sAObject) { + + return hmAdditionalPort.get(hmActiveObj.get(sAObject)); + } + /** * Method getRMIRegPort() *

@@ -447,13 +500,13 @@ public final class CommunicationHandler { RuntimeOutput.print("Communication Port: " + hmComPort.get(iIndex), bVerbose); RuntimeOutput.print("RMI Registry Port: " + hmRMIRegPort.get(iIndex), bVerbose); RuntimeOutput.print("RMI Stub Port: " + hmRMIStubPort.get(iIndex), bVerbose); + RuntimeOutput.print("\n", bVerbose); } } for(int iPort : hsDevicePort) { - RuntimeOutput.print("Device Port: " + iPort, bVerbose); - } + RuntimeOutput.print("\n", bVerbose); } }