X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=iotjava%2Fiotrmi%2FJava%2FIoTRMICommClient.java;h=5c5c728c0373f6e12ca127f2efeb457d3ee40dd3;hb=7e8c0cabb7057ad561adbb8b6cc2a0fd5c41bbf4;hp=bf2f7c16d0d572d46d6d24b45d0d8c7d6db75c55;hpb=c6f36597028e7772b449d9200fd186762036431d;p=iot2.git diff --git a/iotjava/iotrmi/Java/IoTRMICommClient.java b/iotjava/iotrmi/Java/IoTRMICommClient.java index bf2f7c1..5c5c728 100644 --- a/iotjava/iotrmi/Java/IoTRMICommClient.java +++ b/iotjava/iotrmi/Java/IoTRMICommClient.java @@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * @version 1.0 * @since 2017-01-27 */ -public class IoTRMICommClient extends IoTRMIComm { +public final class IoTRMICommClient extends IoTRMIComm { /** * Class Properties @@ -73,15 +73,12 @@ public class IoTRMICommClient extends IoTRMIComm { if (packetBytes != null) { int packetType = IoTRMIComm.getPacketType(packetBytes); if (packetType == IoTRMIUtil.METHOD_TYPE) { - System.out.println("Method packet: " + Arrays.toString(packetBytes)); methodQueue.offer(packetBytes); } else if (packetType == IoTRMIUtil.RET_VAL_TYPE) { - System.out.println("Return value packet: " + Arrays.toString(packetBytes)); returnQueue.offer(packetBytes); } else throw new Error("IoTRMICommClient: Packet type is unknown: " + packetType); - } //else - // Thread.sleep(100); + } packetBytes = null; } catch (Exception ex) { ex.printStackTrace(); @@ -100,18 +97,25 @@ public class IoTRMICommClient extends IoTRMIComm { public synchronized void sendReturnObj(Object retObj, byte[] methodBytes) { // Send back return value - byte[] retObjBytes = IoTRMIUtil.getObjectBytes(retObj); + byte[] retObjBytes = null; + if (retObj != null) // Handle nullness + retObjBytes = IoTRMIUtil.getObjectBytes(retObj); // Send return value together with OBJECT_ID and METHOD_ID for arbitration int objMethIdLen = IoTRMIUtil.OBJECT_ID_LEN + IoTRMIUtil.METHOD_ID_LEN; int headerLen = objMethIdLen + IoTRMIUtil.PACKET_TYPE_LEN; - byte[] retAllBytes = new byte[headerLen + retObjBytes.length]; + byte[] retAllBytes = null; + if (retObj == null) // Handle nullness + retAllBytes = new byte[headerLen]; + else + retAllBytes = new byte[headerLen + retObjBytes.length]; // Copy OBJECT_ID and METHOD_ID System.arraycopy(methodBytes, 0, retAllBytes, 0, objMethIdLen); int packetType = IoTRMIUtil.RET_VAL_TYPE; // This is a return value byte[] packetTypeBytes = IoTRMIUtil.intToByteArray(packetType); System.arraycopy(packetTypeBytes, 0, retAllBytes, objMethIdLen, IoTRMIUtil.PACKET_TYPE_LEN); // Copy array of bytes (return object) - System.arraycopy(retObjBytes, 0, retAllBytes, headerLen, retObjBytes.length); + if (retObj != null) + System.arraycopy(retObjBytes, 0, retAllBytes, headerLen, retObjBytes.length); try { rmiClientSend.sendBytes(retAllBytes); } catch (IOException ex) {