From bbe2edae83744cd510ab2d0de604618ddf77c334 Mon Sep 17 00:00:00 2001 From: Theodora-Mara Pislar <tmp1u19@soton.ac.uk> Date: Tue, 27 Apr 2021 13:14:11 +0100 Subject: [PATCH] Dstores can now join the Controller --- src/Controller.java | 25 ++++++++++++++++++++++--- src/Dstore.java | 22 +++++++++++++++++++++- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/Controller.java b/src/Controller.java index 3d53363..e33510a 100644 --- a/src/Controller.java +++ b/src/Controller.java @@ -1,5 +1,7 @@ import java.io.*; import java.net.*; +import java.util.ArrayList; +import java.util.List; public class Controller { @@ -20,24 +22,41 @@ public class Controller { int rebalance_period = Integer.parseInt(args[3]); System.out.println("Started"); + List<Socket> ports = new ArrayList<>(); try { ServerSocket socket = new ServerSocket(cport); - socket.setSoTimeout(10 * timeout); for(;;) { try { if(R > 0) { - Socket client = socket.accept(); + System.out.println("waiting for Dstore to join"); + Socket client = socket.accept(); // establish a connection between client and server + System.out.print(R + ": "); + ports.add(client); R = R - 1; - } else { + BufferedReader in = new BufferedReader( + new InputStreamReader(client.getInputStream())); + String line; + while((line = in.readLine()) != null) + System.out.println(line + " received"); + client.close(); + + } else { + break; } + } catch (Exception e1) { System.out.println(e1); } } + /* + #TODO + - use threads to connect multiple clients to a server + */ + } catch (IOException e) { System.out.println("error" + e); } diff --git a/src/Dstore.java b/src/Dstore.java index bb258a8..9dfb9ed 100644 --- a/src/Dstore.java +++ b/src/Dstore.java @@ -1,3 +1,6 @@ +import java.io.*; +import java.net.*; + public class Dstore { public static void main (String[] args) { @@ -11,6 +14,23 @@ public class Dstore { // where to store the data locally String file_folder = args[3]; - System.out.println("Adding"); + InetAddress ip; + + try { + ip = InetAddress.getLocalHost(); + Socket socket = new Socket(); + socket.connect(new InetSocketAddress(ip, cport), timeout); + + for(;;) { + PrintWriter out = new PrintWriter(socket.getOutputStream()); + out.println("adding Dstore"); + out.flush(); + System.out.println("Dstore was added"); + Thread.sleep(1000); + } + + } catch (Exception e) { + System.out.println("error " + e); + } } } \ No newline at end of file -- GitLab