diff --git a/ws2012/P2P/uebungen/11/src/CLI.java b/ws2012/P2P/uebungen/11/src/CLI.java index b6cd5db7..aaf3d441 100644 --- a/ws2012/P2P/uebungen/11/src/CLI.java +++ b/ws2012/P2P/uebungen/11/src/CLI.java @@ -1,8 +1,10 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.net.InetSocketAddress; import java.util.logging.LogManager; +import node.Identifier; import node.Node; import node.NodeIdentifier; @@ -45,6 +47,12 @@ public class CLI { case "leave": node.leave(); break; + case "store": + // TODO not implemented + // Zum testen: + Identifier fileID = new Identifier(8, Identifier.getStaticIdentifier(8).getBytes()); + node.store(fileID); + break; default: System.out.println("Unknown command."); break; diff --git a/ws2012/P2P/uebungen/11/src/node/Node.java b/ws2012/P2P/uebungen/11/src/node/Node.java index a9a53e76..6c1c8d08 100644 --- a/ws2012/P2P/uebungen/11/src/node/Node.java +++ b/ws2012/P2P/uebungen/11/src/node/Node.java @@ -313,13 +313,21 @@ public class Node { return routingTable.getEntries(); } - public void StorePair(Identifier key, NodeIdentifier id) { + public void storePair(Identifier key, NodeIdentifier id) { System.out.println(values.size()); System.out.println(key.toString()); values.put(key, id); System.out.println(values.size()); } + public void store(Identifier key) { + Set nodes = routingTable.getClosestNodesTo(key); + + for(NodeIdentifier node: nodes) { + sendStore(node, key); + } + } + public boolean hasKey(Identifier key) { return values.containsKey(key); } diff --git a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java index f3306b0c..9ccb4c98 100644 --- a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java +++ b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java @@ -216,11 +216,11 @@ public class UDPHandler implements Runnable { } private void receiveStore(NodeIdentifier fromID, Identifier rpc_id) { - //TODO Cast geht an dieser stelle nicht, getIDFromBuffer() müsste man für - // FileID implementieren. Identifier fileID = getIDFromBuffer(); - node.StorePair(fileID, fromID); + System.out.println("Received store from " + fromID.toString()); + + node.storePair(fileID, fromID); } public void terminate() {