From 372841eef1e4eaef686e7a97ef928c202874d7d2 Mon Sep 17 00:00:00 2001 From: Jonathan Roemer Date: Mon, 27 Apr 2015 13:50:57 -0400 Subject: [PATCH] Moving networking code and threading the server's listener. --- src/networking/ServerNetworking.java | 2 +- src/networking/ThermostatNetworking.java | 4 +- src/server/server.java | 65 ++++++++++++++++++++---- src/thermostat/ThermostatDevice.java | 6 --- 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/src/networking/ServerNetworking.java b/src/networking/ServerNetworking.java index a75ac67..242b112 100644 --- a/src/networking/ServerNetworking.java +++ b/src/networking/ServerNetworking.java @@ -11,7 +11,7 @@ public class ServerNetworking { - String thermostatIP; + String thermostatIP; // Listens on receiveCurrentTempPORT and outputs the received int to console public void receiveCurrentTemp() throws Exception { diff --git a/src/networking/ThermostatNetworking.java b/src/networking/ThermostatNetworking.java index e2f3075..b390815 100644 --- a/src/networking/ThermostatNetworking.java +++ b/src/networking/ThermostatNetworking.java @@ -40,7 +40,7 @@ public void receiveDesiredTemp() throws Exception { } // Sends the current temperature on port sendCurrentTempPORT - public void sendInfo(int currentTemperature) + public void sendInfo(int currentTemperature, String serverIP) throws Exception { // Open a sending port Socket sender = new Socket(serverIP, 7000); @@ -57,6 +57,7 @@ public void sendInfo(int currentTemperature) } } + /* // Send multicast messages to the server to update the database's IP entry public void updateIP() throws Exception { // Instantiate the DatagramPacket and buffer size @@ -73,5 +74,6 @@ public void updateIP() throws Exception { } } + */ } diff --git a/src/server/server.java b/src/server/server.java index 0c6adca..f775f69 100644 --- a/src/server/server.java +++ b/src/server/server.java @@ -1,5 +1,9 @@ package server; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.io.Serializable; +import java.net.ServerSocket; +import java.net.Socket; import java.util.Hashtable; import InputOutput.*; @@ -8,9 +12,13 @@ public class server extends ServerNetworking implements Thermostatable, Serializable { private static server instance = null; - public static server getInstance(){ + public static server getInstance() { if (instance == null){ - instance = new server(); + try { + instance = new server(); + } catch (Exception e) { + e.printStackTrace(); + } } return instance; } @@ -21,18 +29,18 @@ public static server getInstance(){ String thermostatIP; // Database object Database dataStorage; + // Threaded network listener so we don't block other operations + Thread serverListenerThread; - public server() { + public server() throws Exception { // Default admin user String adminpassword = "admin"; String ip = "127.0.0.1"; String email = "admin@uconn.edu"; + String serialnumber = "1.1"; Database dataStorage = new Database(this); dataStorage.createUser(email, adminpassword, ip, null); - } - - public void receiveCurrentTemp() throws Exception { - super.receiveCurrentTemp(); + // this.startServerListenerThread(); } public boolean createUser(String email, String password, String ip, String serialpermission) { @@ -73,9 +81,46 @@ public void setDesiredTempForSerialNumber(String serialnumber, String desiredtem public String getDevicesFromEmail(String email) { return null; } - - public void datastructureLogEvent(String query) { - } + + public void sendDesiredTemp(int desiredTemperature, String thermostatIP) { + this.sendDesiredTemp(desiredTemperature, thermostatIP); + } + // Threading + /* + public void startServerListenerThread() { + Runnable runnable = new Runnable() { + public void run() { + try { + ServerSocket listener = new ServerSocket(7001); + while (true) { + try { + while (true) { + //sets the socket to an accept state + Socket socket = listener.accept(); + try { + // Creates a new input stream reader + BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); + // Parses the input stream + int currentTemperature = Integer.parseInt(input.readLine()); + // Outputs the desired temperature to the console and writes to disk + System.out.printf("The desired temperature is: %d \n", currentTemperature); + } finally { + socket.close(); + } + } + } finally { + listener.close(); + } + } + } finally { + + } + } + }; + } + */ + public void datastructureLogEvent(String query) { + } } \ No newline at end of file diff --git a/src/thermostat/ThermostatDevice.java b/src/thermostat/ThermostatDevice.java index 6947543..7b63e36 100644 --- a/src/thermostat/ThermostatDevice.java +++ b/src/thermostat/ThermostatDevice.java @@ -62,10 +62,4 @@ public void actionPerformed(ActionEvent e) { } } -/* - public String getServerIP() { - return - } - */ - }