1 package SmartLightsController;
3 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.Arrays;
7 import iotrmi.Java.IoTRMICall;
8 import iotrmi.Java.IoTRMIObject;
10 import iotcode.interfaces.*;
12 public class CameraSmartCallback_Stub implements CameraSmartCallback {
14 private IoTRMICall rmiCall;
15 private String callbackAddress;
18 private final static int objectId = 0;
19 // Callback properties
20 private IoTRMIObject rmiObj;
21 List<Camera> listCallbackObj;
22 private static int objIdCnt = 0;
23 private final static int object0Id = 0; //CameraSmart
24 private static Integer[] object0Permission = { 8, 7, 9, 6, 2, 1, 4, 3, 0, 10, 5 };
25 private static List<Integer> set0Allowed;
28 public CameraSmartCallback_Stub(int _port, String _skeletonAddress, String _callbackAddress, int _rev, int[] _ports) throws Exception {
29 callbackAddress = _callbackAddress;
31 rmiCall = new IoTRMICall(_port, _skeletonAddress, _rev);
32 set0Allowed = new ArrayList<Integer>(Arrays.asList(object0Permission));
33 listCallbackObj = new ArrayList<Camera>();
37 public void newCameraFrameAvailable(Camera _camera) {
39 Camera_CallbackSkeleton skel0 = new Camera_CallbackSkeleton(_camera, callbackAddress, objIdCnt++);
40 listCallbackObj.add(skel0);
41 } catch (Exception ex) {
43 throw new Error("Exception when generating skeleton objects!");
47 Class<?> retType = void.class;
48 Class<?>[] paramCls = new Class<?>[] { int.class };
49 Object[] paramObj = new Object[] { new Integer(1) };
50 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
53 public void ___initCallBack() {
54 Thread thread = new Thread() {
57 rmiObj = new IoTRMIObject(ports[0]);
59 byte[] method = rmiObj.getMethodBytes();
60 int methodId = IoTRMIObject.getMethodId(method);
61 if (!set0Allowed.contains(methodId)) {
62 throw new Error("Callback object for Camera is not allowed to access method: " + methodId);
64 int objId = IoTRMIObject.getObjectId(method);
65 Camera_CallbackSkeleton skel = (Camera_CallbackSkeleton) listCallbackObj.get(objId);
67 skel.invokeMethod(rmiObj);
69 throw new Error("Camera: Object with Id " + objId + " not found!");
72 } catch (Exception ex) {
74 throw new Error("Error instantiating class Camera_CallbackSkeleton!");
81 Class<?> retType = void.class;
82 Class<?>[] paramCls = new Class<?>[] { int[].class, String.class, int.class };
83 Object[] paramObj = new Object[] { ports, callbackAddress, 0 };
84 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);