Adding DlinkAlarm as a driver for D-Link alarm/siren - replacing EspAlarm board
[iot2.git] / iotjava / iotruntime / IoTTCP.java
1 package iotruntime;\r
2 \r
3 // Java packages\r
4 import java.io.IOException;\r
5 import java.net.UnknownHostException;\r
6 import java.net.SocketException;\r
7 import java.net.Socket;\r
8 import java.net.InetAddress;\r
9 import java.net.InetSocketAddress;\r
10 import java.net.ServerSocket;\r
11 import java.io.InputStream;\r
12 import java.io.OutputStream;\r
13 \r
14 import iotruntime.slave.IoTDeviceAddress;\r
15 \r
16 /** Class IoTTCP is a wrapper class that provides\r
17  *  minimum interfaces for user to interact with IoT\r
18  *  devices in our system\r
19  *\r
20  * @author      Rahmadi Trimananda <rahmadi.trimananda @ uci.edu>\r
21  * @version     1.0\r
22  * @since       2016-02-18\r
23  */\r
24 public final class IoTTCP {\r
25 \r
26         /**\r
27          * IoTTCP class properties\r
28          */\r
29         private Socket socket;\r
30 \r
31         protected IoTTCP(Socket _socket) {\r
32                 socket = _socket;\r
33         }\r
34         \r
35     /**\r
36          * Class constructor - no binding at first\r
37          */\r
38     public IoTTCP() {\r
39         socket = new Socket();\r
40     }\r
41 \r
42 \r
43         public IoTTCP(IoTDeviceAddress iotDevAdd) throws UnknownHostException, IOException {\r
44 \r
45                 String strHostAddress = iotDevAdd.getHostAddress();\r
46                 int iSrcPort = iotDevAdd.getSourcePortNumber();\r
47                 int iDstPort = iotDevAdd.getDestinationPortNumber();\r
48 \r
49                 socket = new Socket(strHostAddress, iDstPort, InetAddress.getLocalHost(), iSrcPort);\r
50         }\r
51         \r
52         /**\r
53          * bindAndConnect() method\r
54          */\r
55         public void bindAndConnect(IoTDeviceAddress iotDevAdd, boolean bindToLocal) throws UnknownHostException, IOException {\r
56 \r
57                 String strHostAddress = iotDevAdd.getHostAddress();\r
58                 int iDstPort = iotDevAdd.getDestinationPortNumber();\r
59 \r
60         // Check if we need to bind to a specific port locally\r
61         if (bindToLocal) {\r
62                 int iSrcPort = iotDevAdd.getSourcePortNumber();\r
63                 socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), iSrcPort));\r
64         }\r
65         socket.connect(new InetSocketAddress(strHostAddress, iDstPort));\r
66         }\r
67 \r
68         /**\r
69          * getInputStream() method\r
70          */\r
71         public InputStream getInputStream() throws UnknownHostException, IOException {\r
72 \r
73                 return socket.getInputStream();\r
74         }\r
75 \r
76         /**\r
77          * getOutputStream() method\r
78          */\r
79         public OutputStream getOutputStream() throws UnknownHostException, IOException {\r
80 \r
81                 return socket.getOutputStream();\r
82         }\r
83 \r
84         /**\r
85         * setReuseAddress(boolean on) method\r
86         */\r
87         public void setReuseAddress(boolean on) throws SocketException {\r
88 \r
89                 socket.setReuseAddress(on);\r
90         }\r
91 \r
92 \r
93         /**\r
94          * close() method\r
95          */\r
96         public void close() throws UnknownHostException, IOException {\r
97 \r
98                 socket.close();\r
99         }\r
100 }\r