diff --git a/testing/ClientMain.class b/ClientAndLoggers/ClientMain.class similarity index 88% rename from testing/ClientMain.class rename to ClientAndLoggers/ClientMain.class index 27b4b0711be390b9e87535c87d214850f4561f7f..a51da4fd2f5f2b375bfa6a9dd450c8d797f44c1b 100644 Binary files a/testing/ClientMain.class and b/ClientAndLoggers/ClientMain.class differ diff --git a/testing/ClientMain.java b/ClientAndLoggers/ClientMain.java similarity index 98% rename from testing/ClientMain.java rename to ClientAndLoggers/ClientMain.java index 0c124ad351c700dbce50edee6eba64001eac82c5..3f79c95b65126fc49f0afc6934ddc11c9810c55b 100644 --- a/testing/ClientMain.java +++ b/ClientAndLoggers/ClientMain.java @@ -1,6 +1,5 @@ import java.io.File; import java.io.IOException; -import java.util.Random; public class ClientMain { diff --git a/testing/ControllerLogger.java b/ClientAndLoggers/ControllerLogger.java similarity index 100% rename from testing/ControllerLogger.java rename to ClientAndLoggers/ControllerLogger.java diff --git a/testing/DstoreLogger.java b/ClientAndLoggers/DstoreLogger.java similarity index 100% rename from testing/DstoreLogger.java rename to ClientAndLoggers/DstoreLogger.java diff --git a/testing/Logger.java b/ClientAndLoggers/Logger.java similarity index 100% rename from testing/Logger.java rename to ClientAndLoggers/Logger.java diff --git a/testing/Protocol.java b/ClientAndLoggers/Protocol.java similarity index 99% rename from testing/Protocol.java rename to ClientAndLoggers/Protocol.java index 53ae5fb9d540a65ea1aec266bd63f9beefe4c44d..6c800cb8353680e56601366c7fb00b982eaaeef9 100644 --- a/testing/Protocol.java +++ b/ClientAndLoggers/Protocol.java @@ -1,4 +1,3 @@ - public class Protocol { // messages from Clients diff --git a/testing/client-1.0.2.jar b/ClientAndLoggers/client-1.0.2.jar similarity index 100% rename from testing/client-1.0.2.jar rename to ClientAndLoggers/client-1.0.2.jar diff --git a/ClientAndLoggers/test.txt b/ClientAndLoggers/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..abd91bd4652ea1bfd4969a0a8585cc2f8acb645f --- /dev/null +++ b/ClientAndLoggers/test.txt @@ -0,0 +1 @@ +a test file \ No newline at end of file diff --git a/Dstores/dstore/test.txt b/Dstores/dstore/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..abd91bd4652ea1bfd4969a0a8585cc2f8acb645f --- /dev/null +++ b/Dstores/dstore/test.txt @@ -0,0 +1 @@ +a test file \ No newline at end of file diff --git a/dstore/test2.txt b/Dstores/dstore/test2.txt similarity index 100% rename from dstore/test2.txt rename to Dstores/dstore/test2.txt diff --git a/Dstores/dstore2/test.txt b/Dstores/dstore2/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..abd91bd4652ea1bfd4969a0a8585cc2f8acb645f --- /dev/null +++ b/Dstores/dstore2/test.txt @@ -0,0 +1 @@ +a test file \ No newline at end of file diff --git a/dstore2/test2.txt b/Dstores/dstore2/test2.txt similarity index 100% rename from dstore2/test2.txt rename to Dstores/dstore2/test2.txt diff --git a/dstore2/test3.txt b/Dstores/dstore2/test3.txt similarity index 100% rename from dstore2/test3.txt rename to Dstores/dstore2/test3.txt diff --git a/Dstores/dstore3/test.txt b/Dstores/dstore3/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..abd91bd4652ea1bfd4969a0a8585cc2f8acb645f --- /dev/null +++ b/Dstores/dstore3/test.txt @@ -0,0 +1 @@ +a test file \ No newline at end of file diff --git a/dstore3/test2.txt b/Dstores/dstore3/test2.txt similarity index 100% rename from dstore3/test2.txt rename to Dstores/dstore3/test2.txt diff --git a/dstore3/test3.txt b/Dstores/dstore3/test3.txt similarity index 100% rename from dstore3/test3.txt rename to Dstores/dstore3/test3.txt diff --git a/dstore3/test4.txt b/Dstores/dstore3/test4.txt similarity index 100% rename from dstore3/test4.txt rename to Dstores/dstore3/test4.txt diff --git a/dstore/test.txt b/dstore/test.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/dstore2/test.txt b/dstore2/test.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/dstore3/test.txt b/dstore3/test.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/ftp/Controller.java b/src/ftp/Controller.java index 3efbd6efa22f729606be673f2f631a89caaadfff..45b985e57e50b269b28a5ddc783af16ad8ae6de3 100644 --- a/src/ftp/Controller.java +++ b/src/ftp/Controller.java @@ -63,7 +63,6 @@ public class Controller extends Server { String command = args[0]; if (command.equals("JOIN")) { - Integer port = Integer.parseInt(args[1]); send("LIST", client); @@ -83,11 +82,9 @@ public class Controller extends Server { send("ACK", client); - } else if (command.equals("STORE")) { - String filename = args[1]; Long filesize = Long.parseLong(args[2]); @@ -105,12 +102,12 @@ public class Controller extends Server { collect(Collectors.joining(" ")); - send("STORE_TO " + ports, client); + file.setStoreAcksQuota(r); + send("STORE_TO " + ports, client); } else if (command.equals("STORE_ACK")) { - String filename = args[1]; DstoreFile file = fileIndex.get(filename); @@ -119,8 +116,9 @@ public class Controller extends Server { if ( file.ackCheck() ) { file.setStoreInProgress(false); file.setStoreComplete(true); - } + threadIDOutput("Store of file " + filename + " complete"); + } } } diff --git a/src/ftp/Dstore.java b/src/ftp/Dstore.java index 315694ec9bfb3c638d95649abb14583d89b408be..63af0af77baaa006491d562d5b65159acd3576db 100644 --- a/src/ftp/Dstore.java +++ b/src/ftp/Dstore.java @@ -37,8 +37,7 @@ public class Dstore extends Server { this.file_folder = file_folder; - Socket controller = null; - connectToController(controller); + Socket controller = connectToController(); if (controller != null) { @@ -52,17 +51,19 @@ public class Dstore extends Server { - public Socket connectToController(Socket controller) { + public Socket connectToController() { + Socket controller = null; + Boolean joined = false; for (int i = 0; (i < 10) && !joined; i++) { try { controller = new Socket("localhost",cport); joined = true; } catch (IOException e) { threadIDErr(e.getMessage()); - } - try {threadIDErr("Retrying Connection..."); Thread.sleep(1000);} - catch (InterruptedException e) {threadIDErr(e.getMessage());} + try {threadIDErr("Retrying Connection..."); Thread.sleep(1000);} + catch (InterruptedException exc) {threadIDErr(exc.getMessage());} + } } return controller; @@ -87,35 +88,36 @@ public class Dstore extends Server { protected void handleRequest(String request, Socket client) { String args[] = request.split(" "); - switch(args[0]) { - case "LIST": - File folder = new File(file_folder); + String command = args[0]; + + if (command.equals("LIST")) { + File folder = new File(file_folder); - //todo use stream instead - // - List<String> files = new ArrayList<String>() {{ - for (File file : folder.listFiles()) add(file.getName() + " " + file.length()); - }}; - // todo use joining instead of reduce - // - String ident = files.get(0); - files.remove(0); + //todo use stream instead + // + List<String> files = new ArrayList<String>() {{ + for (File file : folder.listFiles()) add(file.getName() + " " + file.length()); + }}; - String fileMessage = files.stream() - .reduce( ident, (file1, file2) -> (file1 + "|" + file2) ); + // todo use joining instead of reduce + // + String ident = files.get(0); + files.remove(0); + String fileMessage = files.stream() + .reduce(ident, (file1, file2) -> (file1 + "|" + file2)); - send(fileMessage, client); + send(fileMessage, client); - String response = readSocket(client); - if (response.equals("ACK")) threadIDOutput("Successfully joined Controller"); - break; + String response = readSocket(client); + if (response.equals("ACK")) threadIDOutput("Successfully joined Controller"); + } - case "STORE": + else if (command.equals("STORE")) { String filename = args[1]; Long filesize = Long.parseLong(args[2]); @@ -129,14 +131,12 @@ public class Dstore extends Server { } - Socket controller = null; - connectToController(controller); + Socket controller = connectToController(); if (controller != null) { send("STORE_ACK " + filename, controller); - } - else threadIDErr("Unable to connect to Controller"); - } + } else threadIDErr("Unable to connect to Controller"); + } } @@ -150,10 +150,14 @@ public class Dstore extends Server { FileOutputStream out = new FileOutputStream(outputFile); + threadIDOutput("Starting file Read..."); + while ((buflen = in.read(buf)) != -1) { out.write(buf,0,buflen); } + threadIDOutput("Finished file Write"); + in.close(); out.close(); diff --git a/src/ftp/DstoreConnection.java b/src/ftp/DstoreConnection.java index b77ca1725fd444b5dfef67b8ccd101d679106551..b9ae67189e09de550057872399c07040294f8350 100644 --- a/src/ftp/DstoreConnection.java +++ b/src/ftp/DstoreConnection.java @@ -24,9 +24,9 @@ public class DstoreConnection { - public void addFile(String filename, Long filesize) { file_index.addFile(filename,filesize).addDstore(this); } + public void addFile(String filename, Long filesize) { DstoreFile file = file_index.addFile(filename,filesize); } - public void addFile(DstoreFile file) { file_index.put(file.getFilename(),file).addDstore(this); } + public void addFile(DstoreFile file) { file_index.put(file.getFilename(),file); } diff --git a/src/ftp/Server.java b/src/ftp/Server.java index aba6c7ccf5e46a7c1987ed83e01fd9f7c8c5ebd8..5a70e66f48152b2a5d5b1170d6a5516e9471731a 100644 --- a/src/ftp/Server.java +++ b/src/ftp/Server.java @@ -26,6 +26,8 @@ public abstract class Server { } catch (Exception e) { threadIDErr("Exception thrown: " + e.getMessage()); } + + threadIDOutput("Thread Stopping"); } }).start(); } catch (Exception e) { diff --git a/testing/test.txt b/testing/test.txt deleted file mode 100644 index d800886d9c86731ae5c4a62b0b77c437015e00d2..0000000000000000000000000000000000000000 --- a/testing/test.txt +++ /dev/null @@ -1 +0,0 @@ -123 \ No newline at end of file