From ab8030bd7190eaef679b93208b30ccdc03f59aee Mon Sep 17 00:00:00 2001 From: Denis Date: Sat, 9 Feb 2013 17:41:47 +0100 Subject: [PATCH] implemented sendStore, only one problem with casting Identifier to FileIdentifier, look at TODO in UDPHandler --- ws2012/P2P/uebungen/11/src/node/Node.java | 13 ++++++++++++- ws2012/P2P/uebungen/11/src/node/UDPHandler.java | 9 +++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ws2012/P2P/uebungen/11/src/node/Node.java b/ws2012/P2P/uebungen/11/src/node/Node.java index d9b26e44..ad654ca4 100644 --- a/ws2012/P2P/uebungen/11/src/node/Node.java +++ b/ws2012/P2P/uebungen/11/src/node/Node.java @@ -125,7 +125,7 @@ public class Node { } } - void sendFindValue(NodeIdentifier receiver, Identifier idToFind) { + void sendFindValue(NodeIdentifier receiver, FileIdentifier idToFind) { boolean successful = send(receiver, MessageType.FIND_VALUE, idToFind.getBytes(), true, null); @@ -172,6 +172,15 @@ public class Node { new Object[] { closeNodes.size(), receiver, idToFind, rpcID }); } } + + public void sendStore(NodeIdentifier receiver, FileIdentifier fileID) { + boolean successful = send(receiver, MessageType.STORE, fileID.getBytes(), true, null); + + if (successful) { + LOGGER.log(Level.INFO, "Sending [STORE {0}] to node {1}", + new Object[] { fileID, receiver }); + } + } public void sendPing(NodeIdentifier receiver, MessageCallback cb) { boolean successful = send(receiver, MessageType.PING, null, true, cb); @@ -305,6 +314,8 @@ public class Node { } public void StorePair(FileIdentifier key, NodeIdentifier id) { + System.out.println("Key: " + key.getKey()); + System.out.println("Node: " + id.getAddress()); values.put(key, id); } diff --git a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java index aac1b59a..35168196 100644 --- a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java +++ b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java @@ -130,6 +130,7 @@ public class UDPHandler implements Runnable { break; case MessageType.STORE: //TODO implemnt + receiveStore(fromID, rpcID); LOGGER.log(Level.INFO, "Received STORE from {0}", new Object[] { from.toString() }); break; @@ -213,6 +214,14 @@ public class UDPHandler implements Runnable { node.sendClosestNodesTo(fromID, idToFind, rpc_id); } + + private void receiveStore(NodeIdentifier fromID, Identifier rpc_id) { + //TODO Cast geht an dieser stelle nicht, getIDFromBuffer() müsste man für + // FileID implementieren. + FileIdentifier fileID = (FileIdentifier) getIDFromBuffer(); + + node.StorePair(fileID, fromID); + } public void terminate() { running = false;