1 package IrrigationController;
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 WeatherGatewaySmart_Stub implements WeatherGatewaySmart {
19 private int objectId = 3;
20 private IoTRMIComm rmiComm;
21 // Synchronization variables
22 private AtomicBoolean retValueReceived3 = new AtomicBoolean(false);
23 private AtomicBoolean retValueReceived6 = new AtomicBoolean(false);
24 private AtomicBoolean retValueReceived5 = new AtomicBoolean(false);
25 private AtomicBoolean retValueReceived4 = new AtomicBoolean(false);
28 public WeatherGatewaySmart_Stub(int _localPortSend, int _localPortRecv, int _portSend, int _portRecv, String _skeletonAddress, int _rev) throws Exception {
29 if (_localPortSend != 0 && _localPortRecv != 0) {
30 rmiComm = new IoTRMICommClient(_localPortSend, _localPortRecv, _portSend, _portRecv, _skeletonAddress, _rev);
33 rmiComm = new IoTRMICommClient(_portSend, _portRecv, _skeletonAddress, _rev);
35 rmiComm.registerStub(objectId, 3, retValueReceived3);
36 rmiComm.registerStub(objectId, 6, retValueReceived6);
37 rmiComm.registerStub(objectId, 5, retValueReceived5);
38 rmiComm.registerStub(objectId, 4, retValueReceived4);
39 IoTRMIUtil.mapStub.put(objectId, this);
42 public WeatherGatewaySmart_Stub(IoTRMIComm _rmiComm, int _objectId) throws Exception {
45 rmiComm.registerStub(objectId, 3, retValueReceived3);
46 rmiComm.registerStub(objectId, 6, retValueReceived6);
47 rmiComm.registerStub(objectId, 5, retValueReceived5);
48 rmiComm.registerStub(objectId, 4, retValueReceived4);
51 public double getInchesPerWeek() {
53 Class<?> retType = double.class;
54 Class<?>[] paramCls = new Class<?>[] { };
55 Object[] paramObj = new Object[] { };
56 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
57 // Waiting for return value
58 while (!retValueReceived3.get());
59 Object retObj = rmiComm.getReturnValue(retType, null);
60 retValueReceived3.set(false);
61 rmiComm.setGetReturnBytes();
63 return (double)retObj;
66 public double getInchesPerMinute() {
68 Class<?> retType = double.class;
69 Class<?>[] paramCls = new Class<?>[] { };
70 Object[] paramObj = new Object[] { };
71 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
72 // Waiting for return value
73 while (!retValueReceived6.get());
74 Object retObj = rmiComm.getReturnValue(retType, null);
75 retValueReceived6.set(false);
76 rmiComm.setGetReturnBytes();
78 return (double)retObj;
81 public int getDaysToWaterOn() {
83 Class<?> retType = int.class;
84 Class<?>[] paramCls = new Class<?>[] { };
85 Object[] paramObj = new Object[] { };
86 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
87 // Waiting for return value
88 while (!retValueReceived5.get());
89 Object retObj = rmiComm.getReturnValue(retType, null);
90 retValueReceived5.set(false);
91 rmiComm.setGetReturnBytes();
96 public void registerCallback(WeatherGatewayCallback _callbackTo) {
97 int[] objIdSent0 = new int[1];
99 if (!IoTRMIUtil.mapSkel.containsKey(_callbackTo)) {
100 int newObjIdSent = rmiComm.getObjectIdCounter();
101 objIdSent0[0] = newObjIdSent;
102 rmiComm.decrementObjectIdCounter();
103 WeatherGatewayCallback_Skeleton skel0 = new WeatherGatewayCallback_Skeleton(_callbackTo, rmiComm, newObjIdSent);
104 IoTRMIUtil.mapSkel.put(_callbackTo, skel0);
105 IoTRMIUtil.mapSkelId.put(_callbackTo, newObjIdSent);
106 Thread thread = new Thread() {
109 skel0.___waitRequestInvokeMethod();
110 } catch (Exception ex) {
111 ex.printStackTrace();
112 throw new Error("Exception when trying to run ___waitRequestInvokeMethod() for WeatherGatewayCallback_Skeleton!");
117 while(!skel0.didAlreadyInitWaitInvoke());
121 int newObjIdSent = IoTRMIUtil.mapSkelId.get(_callbackTo);
122 objIdSent0[0] = newObjIdSent;
124 } catch (Exception ex) {
125 ex.printStackTrace();
126 throw new Error("Exception when generating skeleton objects!");
130 Class<?> retType = void.class;
131 Class<?>[] paramCls = new Class<?>[] { int[].class };
132 Object[] paramObj = new Object[] { objIdSent0 };
133 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
138 Class<?> retType = void.class;
139 Class<?>[] paramCls = new Class<?>[] { };
140 Object[] paramObj = new Object[] { };
141 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
144 public void start() {
146 Class<?> retType = void.class;
147 Class<?>[] paramCls = new Class<?>[] { };
148 Object[] paramObj = new Object[] { };
149 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
154 Class<?> retType = void.class;
155 Class<?>[] paramCls = new Class<?>[] { };
156 Object[] paramObj = new Object[] { };
157 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
160 public int getWeatherZipCode() {
162 Class<?> retType = int.class;
163 Class<?>[] paramCls = new Class<?>[] { };
164 Object[] paramObj = new Object[] { };
165 rmiComm.remoteCall(objectId, methodId, paramCls, paramObj);
166 // Waiting for return value
167 while (!retValueReceived4.get());
168 Object retObj = rmiComm.getReturnValue(retType, null);
169 retValueReceived4.set(false);
170 rmiComm.setGetReturnBytes();