/**
* sendReturnObj() overloaded to send multiple return objects for structs
*/
- public void sendReturnObj(Class<?>[] retCls, Object[] retObj) throws IOException {
+ public void sendReturnObj(Class<?>[] retCls, Object[] retObj, byte[] methodBytes) throws IOException {
// Send back return value
byte[] retObjBytes = returnToBytes(retCls, retObj);
- rmiServer.sendBytes(retObjBytes);
+ // Send return value together with OBJECT_ID and METHOD_ID for arbitration
+ byte[] retAllBytes = new byte[IoTRMIUtil.OBJECT_ID_LEN + IoTRMIUtil.METHOD_ID_LEN + retObjBytes.length];
+ // Copy OBJECT_ID and METHOD_ID
+ System.arraycopy(methodBytes, 0, retAllBytes, 0, IoTRMIUtil.OBJECT_ID_LEN + IoTRMIUtil.METHOD_ID_LEN);
+ // Copy array of bytes (return object)
+ rmiServer.sendBytes(retAllBytes);
}