1 package iotcode.AmcrestCamera;
3 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.Arrays;
8 import java.util.HashMap;
9 import java.util.concurrent.atomic.AtomicBoolean;
10 import iotrmi.Java.IoTRMIComm;
11 import iotrmi.Java.IoTRMICommClient;
12 import iotrmi.Java.IoTRMICommServer;
13 import iotrmi.Java.IoTRMIUtil;
15 import iotcode.interfaces.*;
17 public class CameraSmartCallback_Stub implements CameraSmartCallback {
19 private int objectId = 0;
20 private IoTRMIComm rmiComm;
21 // Synchronization variables
24 public CameraSmartCallback_Stub(int _localPortSend, int _localPortRecv, int _portSend, int _portRecv, String _skeletonAddress, int _rev) throws Exception {
25 if (_localPortSend != 0 && _localPortRecv != 0) {
26 rmiComm = new IoTRMICommClient(_localPortSend, _localPortRecv, _portSend, _portRecv, _skeletonAddress, _rev);
29 rmiComm = new IoTRMICommClient(_portSend, _portRecv, _skeletonAddress, _rev);
31 IoTRMIUtil.mapStub.put(objectId, this);
34 public CameraSmartCallback_Stub(IoTRMIComm _rmiComm, int _objectId) throws Exception {
39 public void newCameraFrameAvailable(Camera _camera) {
40 int[] objIdSent0 = new int[1];
42 if (!IoTRMIUtil.mapSkel.containsKey(_camera)) {
43 int newObjIdSent = rmiComm.getObjectIdCounter();
44 objIdSent0[0] = newObjIdSent;
45 rmiComm.decrementObjectIdCounter();
46 Camera_Skeleton skel0 = new Camera_Skeleton(_camera, rmiComm, newObjIdSent);
47 IoTRMIUtil.mapSkel.put(_camera, skel0);
48 IoTRMIUtil.mapSkelId.put(_camera, newObjIdSent);
49 Thread thread = new Thread() {
52 skel0.___waitRequestInvokeMethod();
53 } catch (Exception ex) {
55 throw new Error("Exception when trying to run ___waitRequestInvokeMethod() for Camera_Skeleton!");
60 while(!skel0.didAlreadyInitWaitInvoke());
64 int newObjIdSent = IoTRMIUtil.mapSkelId.get(_camera);
65 objIdSent0[0] = newObjIdSent;
67 } catch (Exception ex) {
69 throw new Error("Exception when generating skeleton objects!");
73 Class<?> retType = void.class;
74 Class<?>[] paramCls = new Class<?>[] { int[].class };
75 Object[] paramObj = new Object[] { objIdSent0 };
76 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);