diff options
author | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-15 23:43:08 -0500 |
---|---|---|
committer | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-15 23:43:08 -0500 |
commit | 54b0fab72106672ea1d9ca4d81d782b6bf1c6820 (patch) | |
tree | 3928fbfc9e0021d15326caa4500b98db13b0a75b /src/com/benburwell/planes/sbs/TCPDataSource.java | |
parent | e2ae5749a522b0d4d2657a2cac571b1524d33cfa (diff) |
Implement data table
Diffstat (limited to 'src/com/benburwell/planes/sbs/TCPDataSource.java')
-rw-r--r-- | src/com/benburwell/planes/sbs/TCPDataSource.java | 63 |
1 files changed, 53 insertions, 10 deletions
diff --git a/src/com/benburwell/planes/sbs/TCPDataSource.java b/src/com/benburwell/planes/sbs/TCPDataSource.java index 6c0e51d..2224d36 100644 --- a/src/com/benburwell/planes/sbs/TCPDataSource.java +++ b/src/com/benburwell/planes/sbs/TCPDataSource.java @@ -10,20 +10,67 @@ import java.net.*; */ public class TCPDataSource implements DataSource { private List<DataListener> subscribers = new ArrayList<>(); + private String host; + private int port; + private Thread clientThread = null; + private SocketClient client = null; public TCPDataSource(String host, int port) { - new Thread(() -> { + this.host = host; + this.port = port; + } + + public void subscribe(DataListener listener) { + this.subscribers.add(listener); + } + + public void open() { + this.client = new SocketClient(this.host, this.port); + this.clientThread = new Thread(this.client); + this.clientThread.start(); + } + + public void close() { + if (this.client != null) { + this.client.terminate(); + try { + this.clientThread.join(); + } catch (InterruptedException ignored) {} + } + } + + private class SocketClient implements Runnable { + private String host; + private int port; + private Socket clientSocket = null; + + public SocketClient(String host, int port) { + this.host = host; + this.port = port; + } + + public void terminate() { + if (this.clientSocket != null) { + try { + this.clientSocket.close(); + } catch (IOException e) { + System.out.println("Got exception closing socket: " + e.getMessage()); + } + } + } + + @Override + public void run() { System.out.println("Starting socket client"); - Socket clientSocket; BufferedReader socketReader; try { - clientSocket = new Socket(host, port); + this.clientSocket = new Socket(this.host, this.port); } catch (IOException e) { - System.out.println("Could not connect to " + host + " on port " + port + ": " + e.getMessage()); + System.out.println("Could not connect to " + this.host + " on port " + this.port + ": " + e.getMessage()); return; } try { - socketReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + socketReader = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream())); } catch (IOException e) { System.out.println("Could not create socket reader: " + e.getMessage()); return; @@ -47,10 +94,6 @@ public class TCPDataSource implements DataSource { System.out.println(e.getMessage()); } } - }).start(); - } - - public void subscribe(DataListener listener) { - this.subscribers.add(listener); + } } } |