diff --git a/ws2012/P2P/uebungen/11/src/node/ChunkIdentifier.java b/ws2012/P2P/uebungen/11/src/node/ChunkIdentifier.java new file mode 100644 index 00000000..3bc9143f --- /dev/null +++ b/ws2012/P2P/uebungen/11/src/node/ChunkIdentifier.java @@ -0,0 +1,36 @@ +package node; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class ChunkIdentifier extends Identifier { + + private String chunkID; + private FileIdentifier fileID; + + public ChunkIdentifier(int size, byte[] bytes, FileIdentifier fileID, String chunkID) { + super(size, bytes); + + this.fileID = fileID; + + //calculate SHA-256 Hash of chunckID + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(chunkID.getBytes()); + this.chunkID = md.digest().toString(); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + public String getChunkID() { + return this.chunkID; + } + + public FileIdentifier getFileID(){ + return this.fileID; + } + +} diff --git a/ws2012/P2P/uebungen/11/src/node/FileIdentifier.java b/ws2012/P2P/uebungen/11/src/node/FileIdentifier.java index fdcb8be7..bd5cdef1 100644 --- a/ws2012/P2P/uebungen/11/src/node/FileIdentifier.java +++ b/ws2012/P2P/uebungen/11/src/node/FileIdentifier.java @@ -1,16 +1,28 @@ package node; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + public class FileIdentifier extends Identifier { - private String key; + private String fileID; - public FileIdentifier(int size, byte[] bytes, String key) { + public FileIdentifier(int size, byte[] bytes, String fileID) { super(size, bytes); - this.key = key; - // TODO: key muss noch gehasht werden + + //calculate SHA-256 Hash of key + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(fileID.getBytes()); + this.fileID = md.digest().toString(); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } public String getKey() { - return this.key; + return this.fileID; } } diff --git a/ws2012/P2P/uebungen/11/src/node/Node.java b/ws2012/P2P/uebungen/11/src/node/Node.java index 6c1c8d08..91e69573 100644 --- a/ws2012/P2P/uebungen/11/src/node/Node.java +++ b/ws2012/P2P/uebungen/11/src/node/Node.java @@ -181,6 +181,15 @@ public class Node { new Object[] { fileID, receiver }); } } + + public void sendData(NodeIdentifier receiver, FileIdentifier fileID, ChunkIdentifier chunckID){ + + //TODO: implement + + + + } + public void sendPing(NodeIdentifier receiver, MessageCallback cb) { boolean successful = send(receiver, MessageType.PING, null, true, cb); diff --git a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java index 9ccb4c98..b5b813eb 100644 --- a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java +++ b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java @@ -136,6 +136,10 @@ public class UDPHandler implements Runnable { break; case MessageType.DATA: //TODO implemnt + + //rpcID splitten ? -> [0] fileID, [1] partID ?!?!?! + receiveData(fromID, fileID, partID); + LOGGER.log(Level.INFO, "Received DATA from {0}", new Object[] { from.toString() }); break; @@ -217,6 +221,12 @@ public class UDPHandler implements Runnable { private void receiveStore(NodeIdentifier fromID, Identifier rpc_id) { Identifier fileID = getIDFromBuffer(); + + //TODO Cast geht an dieser stelle nicht, getIDFromBuffer() müsste man für + // FileID implementieren. + + // warum speichern wir nicht einfach die rpc_od ??? + fileID = rpc_id; System.out.println("Received store from " + fromID.toString());