* Class Constants
*/
private int objectId = 0; // Default value is 0
-
+ // This is permission system for callback objects
+ private static Integer[] object0Permission = { 0, 1 }; // object0 is the callback object
+ private List<Integer> set0Allowed;
/**
* Properties and constants for Callbacks!
ports = _ports;
rmiCall = new IoTRMICall(_port, _address, _rev);
+ set0Allowed = Arrays.asList(object0Permission);
+
// Only for callbacks!!!
listCBObj = new ArrayList<CallBackInterface>();
___initCallBack();
Thread thread = new Thread() {
public void run() {
try{
- System.out.println("Created server with port: " + ports[0]);
rmiObj = new IoTRMIObject(ports[0]);
- Object retObj = null;
while (true) {
byte[] method = rmiObj.getMethodBytes();
+ // Permission checking
+ int methId = IoTRMIObject.getMethodId(method);
+ if (!set0Allowed.contains(methId))
+ throw new Error("CallBack_CBSkeleton: This object is not allowed to access method " + methId);
+
int objId = IoTRMIObject.getObjectId(method);
CallBack_CBSkeleton skel = (CallBack_CBSkeleton) listCBObj.get(objId);
if (skel != null) {
paramCls2[pos] = int.class;
paramObj2[pos++] = data[i].year;
}
- System.out.println(Arrays.toString(paramObj2));
+ //System.out.println(Arrays.toString(paramObj2));
Object retObj = rmiCall.remoteCall(objectId, methodId2, retType2, null, paramCls2, paramObj2);
// RETURN STRUCT
// Get the length of the struct first