From acaa363153c09d25ce42670d8f0f877ca415f076 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 12 Jan 2020 22:20:52 +0100 Subject: [PATCH] Add send method + update documentation --- doc/classdiagram.xml | 2 +- doc/protocol.md | 1 + src/exception/InternalError.java | 2 ++ src/server/ServerManagementUDP.java | 25 +++++++++++++++++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 src/exception/InternalError.java diff --git a/doc/classdiagram.xml b/doc/classdiagram.xml index 0cc7494..e6dfb8c 100644 --- a/doc/classdiagram.xml +++ b/doc/classdiagram.xml @@ -1 +1 @@ -7VzZduI4EP0azul+IAcvbI9hSXfPkAwn6XVe5ghbgDrCYmQRoL++JVvehW2CTc/ip1hlWVi6Vbeuy3JaxnhzeEfBdn1PbIhbesc+tIxJS9c10+zzP8Jy9C0DQ/cNK4ps2SkyPKEfUBo70rpDNnQTHRkhmKFt0mgRx4EWS9gApWSf7LYkOPmrW7CCGcOTBXDW+gXZbC1nofcj+3uIVuvgl7Xe0D+zAUFnORN3DWyyj5mMacsYU0KYf7Q5jCEWixesi3/d3Ymz4Y1R6LAyF/zh2t9A+7fN7cNqD8a7D+DL4KkdzMNlx2DG0OYLIJuEsjVZEQfgaWQdUbJzbCiG7fBW1GdGyJYbNW78Dhk7SjTBjhFuWrMNlmf5HdPjV3H9jdkPDd/kgF5jcki0jvHWHFK0gQzS0GjfCqh50yEO9C13CGN5PrtScvFcsqOWnPaR4NWU2dbjHv/+cXpcPL9Hs7bEkgG6giynn2b4HcXaxX5BAvEOEn679Mg7UIgBQy9J5wLSR1dhvwhGfiCRVKOad9svAO/kL40xEpNPY+3u0QYDb8mWxGEB7AISgNHK4ccWv06s9OgFUoZ4YNzKE0yAPbLWCNszcCQ7sT4uA9Zz0BqtCUU/+LAgwJ2fpkx6hd5L9HgSV0q8KHR5n3mAl5Yy3YNDouMMuEwaLIIx2LpoEU5jw6FDzogwRjZF7iBmCA+5+Mmzg6EMaslqfdncRxSh9aRtHaOHwFY54pqWgTwDNkYe0C6j5DkkM7FGSx4qY4IJjQIoQB/DJVNgv0G27VGBuwUWclYfvcBva5Fl5l04MSLLo1wGw2MQBhjwURKQYLCAeE5cxBAR41O/72hLkMO8teqOWt2JZ6FsTBw+CYA8+CBHfw+FByiAzY2OYrQlutxVS6E7qAtcXQHuSBgIv06kGuS8eZvBm8+OhXin8D0fcj/ck+iaWXSFifBrl9jj4zV3FOgoEE8iO+KrOe7cdAXG+pi3taj9y2A3zHKwB+5RPe79DO4PXC3onTuRgBsyr4jMu0aSzHWjJJsHDnIJ8EpVppnFbJ4VPXGBVajhIgmWkF83erdAgZWMtsB3i6VTv2rpJC+dC4aJUG53kyhrqVTsa0F5UVxGp8bRtPxx/AlnxvH8IJzNBZyQ1XZNoi/iz39NptezMm56sODWW62G7+vhe6N3Rb5Xw240QV02qM/A+/pBrczmXUVMM56+3bycvsBEhJSoZMiY03qZwkY84x8Q8ysqXdkKyyn8OMrlopEopsQuClRAWJEpLQHK1lPCEl5lqkAF6oVKoZtSCoam3XRfJxb6WuFQdeuFLLX4taB74IAV3DRVoeoSyyAtMYfZxGKYqifIbgV1IXV9d5CBv82bT4xyTucHC+DCCaLQYkT+mqKCEKOZspnFw+Dk475IBWKwHSOuJLczVJ1RGpfTCUANQ23VuWwKaPJ7ZfCaJeHt1SXftJ4C3lh9ziZ7BxNgvwnDjmMKHbCBb0UuXHtvqfTOA2GysMPHMw633prFDkfxwMXIZWHgiuJfrGNTB6zWwcJH/iIP08y6eFzlYdUWhE7mv7oLM71huvw2fK3cSidgxVDVyS115a6TAeoJUu5qkdz6NJk3iqsixWUWV25NVaCaVaR6tQNkKzhCcH32iJqzNBaABCzeW/m85eWDGWf0GI3nybREJz8CuFfNeWCnzi0Rj/L4QHPOv4Sj82HSZAyVB+YH9SWKU+mH/dreIOiN4qwPXq1TkmfqKikpnup9fUh3TkoMqgllS4kFXfcR/r3jaxUJU+ob3qauk0IWOYjdSap6c6KPtYbWc0Qz0dAbdxWZE8I3ME+5fKGn7ni3PSmh1Re4fq1MfbOJXonfz+8aaPRGcdccYINyAWYERHdJiHXvna/0Ac6+v5t/op//XPzFQL+dJVBfyDXaLdJuGUAVcu6kdtNTYt3McqqyTD+sgFSViGc5NZJX26y2CnnBjoRZp2GFkr5xOuYufo9jViCqlLdXYlfG/0RTVQ9u2R2UddG9qkI7avbX1Qq5XhLyCvbXKW+vRFGtiefiRK6lqjCmYj9FTQ9HSlh/0ScNZb5BSNVSC1+i51FV/B16juy+tF7LZwWOsQ7SvU6Wc430/rhu6rOU8/rzA/8OXlumVS5hsMHyyj4S7NFoxXZohPs1CvZoJD+TuSnapnlFf1R8JJNTtLjCNzF5dxkj+1TZoXmsqyQbdNPZYHDF3XXqYG++jblExA1zRdwVN9epwc0+tf/Dd9cVfeJYnpnjjHsOdDXsmevpyag3gue5c1/hpgfKvCKp7gWu2p96/3H1qJWWj5em61fJx/Tm7J6ZLx/T/YN2vfIxWy143DmOR9oZHbEGW3G4peQFcScRr1wQhfYHoR2WQGAV94Qgm8xSrL+QabqSFD1IrbHitbmuehA//6U5b0ZfuPvLH/2fAGP6Ew== \ No newline at end of file +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 \ No newline at end of file diff --git a/doc/protocol.md b/doc/protocol.md index 06d6a7f..51fed50 100644 --- a/doc/protocol.md +++ b/doc/protocol.md @@ -9,3 +9,4 @@ All messages begins with `P2P-JAVA-PROJECT VERSION 1.0\n` (this version of the p - The response to `LIST` request is in the format `LIST\n\n\n[…]\n\n` - The response to `DOWNLOAD` request is `LOAD \n` or `NOT FOUND\n` if the file doesn't exists. - The server send a `PROTOCOL ERROR\n` message if it doesn't understands what the client sent. +- The server send a `INTERNAL ERROR\n` message if it encounters an internal error. diff --git a/src/exception/InternalError.java b/src/exception/InternalError.java new file mode 100644 index 0000000..c738615 --- /dev/null +++ b/src/exception/InternalError.java @@ -0,0 +1,2 @@ +package exception; +public class InternalError extends Exception {} diff --git a/src/server/ServerManagementUDP.java b/src/server/ServerManagementUDP.java index b4a8d00..1bddbd0 100644 --- a/src/server/ServerManagementUDP.java +++ b/src/server/ServerManagementUDP.java @@ -6,6 +6,7 @@ import java.net.Datagram.Packet; import java.net.Datagram.Socket; import exception.ProtocolError; import exception.NotFound; +import exception.InternalError; /** Implementation of P2P-JAVA-PROJECT VERSION 1.0 protocol for UDP. @@ -85,6 +86,8 @@ public class ServerManagementUDP implements Runnable { } catch (ProtocolError e) { // wrong version or wrong implementation res += sendProtocolError(); + } catch (InternalError e) { + res += sendInternalError(); } catch (NotFound e) { res += sendNotFound(); } @@ -118,9 +121,20 @@ public class ServerManagementUDP implements Runnable { * @param filename name of the file to be send * @return data to be send * @throws NotFound + * @throws InternalError */ - private String upload(String filename) throws NotFound { - // TODO + private String upload(String filename) throws NotFound, InternalError { + File file = new File(filename); + if (!file.exists() || !file.isFile()) { + throw NotFound; + } + String res = "LOAD " + file.length(); + "\n" + try { + res += new String(Files.readAllBytes(Paths.get(filename))); + } catch (IOException e) { + throw InternalError; + } + return res; } /** Prepare the data to be send if file list is requested @@ -147,5 +161,12 @@ public class ServerManagementUDP implements Runnable { private String sendNotFound() { return "NOT FOUND\n" } + + /** Prepare data to be send if internal error encounterred + * @return data to be send + */ + private String sendInternalError() { + return "INTERNAL ERROR\n" + } }