Creating new directory for all Java benchmarks
[iot2.git] / benchmarks / Java / IrrigationController / SprinklerSmart_Stub.java
1 package IrrigationController;
2
3 import java.io.IOException;
4 import java.util.List;
5 import java.util.ArrayList;
6 import java.util.Arrays;
7 import iotrmi.Java.IoTRMICall;
8 import iotrmi.Java.IoTRMIObject;
9
10 import iotcode.interfaces.*;
11
12 public class SprinklerSmart_Stub implements SprinklerSmart {
13
14         private IoTRMICall rmiCall;
15         private String callbackAddress;
16         private int[] ports;
17
18         private final static int objectId = 0;
19         
20
21         public SprinklerSmart_Stub(int _port, String _skeletonAddress, String _callbackAddress, int _rev, int[] _ports) throws Exception {
22                 callbackAddress = _callbackAddress;
23                 ports = _ports;
24                 rmiCall = new IoTRMICall(_port, _skeletonAddress, _rev);
25         }
26
27         public boolean doesHaveZoneTimers() {
28                 int methodId = 4;
29                 Class<?> retType = boolean.class;
30                 Class<?>[] paramCls = new Class<?>[] {  };
31                 Object[] paramObj = new Object[] {  };
32                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
33                 return (boolean)retObj;
34         }
35
36         public List<ZoneState> getZoneStates() {
37                 int methodId = 2;
38                 Class<?> retType = int.class;
39                 Class<?>[] paramCls = new Class<?>[] {  };
40                 Object[] paramObj = new Object[] {  };
41                 Object retLenObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
42                 int retLen = (int) retLenObj;
43                 Class<?>[] retCls = new Class<?>[3*retLen];
44                 Class<?>[] retClsVal = new Class<?>[3*retLen];
45                 int retPos = 0;
46                 for(int i = 0; i < retLen; i++) {
47                         retCls[retPos] = int.class;
48                         retClsVal[retPos++] = null;
49                         retCls[retPos] = boolean.class;
50                         retClsVal[retPos++] = null;
51                         retCls[retPos] = int.class;
52                         retClsVal[retPos++] = null;
53                 }
54                 Object[] retObj = rmiCall.getStructObjects(retCls, retClsVal);
55                 List<ZoneState> structRet = new ArrayList<ZoneState>();
56                 int retObjPos = 0;
57                 for(int i = 0; i < retLen; i++) {
58                         ZoneState structRetMem = new ZoneState();
59                         structRetMem.zoneNumber = (int) retObj[retObjPos++];
60                         structRetMem.onOffState = (boolean) retObj[retObjPos++];
61                         structRetMem.duration = (int) retObj[retObjPos++];
62                         structRet.add(structRetMem);
63                 }
64                 return structRet;
65         }
66
67         public void init() {
68                 int methodId = 0;
69                 Class<?> retType = void.class;
70                 Class<?>[] paramCls = new Class<?>[] {  };
71                 Object[] paramObj = new Object[] {  };
72                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
73         }
74
75         public void setZone(int _zone, boolean _onOff, int _onDurationSeconds) {
76                 int methodId = 1;
77                 Class<?> retType = void.class;
78                 Class<?>[] paramCls = new Class<?>[] { int.class, boolean.class, int.class };
79                 Object[] paramObj = new Object[] { _zone, _onOff, _onDurationSeconds };
80                 rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
81         }
82
83         public int getNumberOfZones() {
84                 int methodId = 3;
85                 Class<?> retType = int.class;
86                 Class<?>[] paramCls = new Class<?>[] {  };
87                 Object[] paramObj = new Object[] {  };
88                 Object retObj = rmiCall.remoteCall(objectId, methodId, retType, null, paramCls, paramObj);
89                 return (int)retObj;
90         }
91
92 }