* @version 1.0
* @since 2017-01-27
*/
-public class IoTRMICommClient extends IoTRMIComm {
+public final class IoTRMICommClient extends IoTRMIComm {
/**
* Class Properties
if (packetBytes != null) {
int packetType = IoTRMIComm.getPacketType(packetBytes);
if (packetType == IoTRMIUtil.METHOD_TYPE) {
- System.out.println("Method packet: " + Arrays.toString(packetBytes));
+ //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));
+ //System.out.println("Return value packet: " + Arrays.toString(packetBytes));
returnQueue.offer(packetBytes);
} else
throw new Error("IoTRMICommClient: Packet type is unknown: " + packetType);
public synchronized void sendReturnObj(Object retObj, byte[] methodBytes) {
// Send back return value
- byte[] retObjBytes = IoTRMIUtil.getObjectBytes(retObj);
+ //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 = 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) {