From f3793804bff009bd94d85a74a98f0482cc07dbf5 Mon Sep 17 00:00:00 2001 From: Michael Scholz Date: Sun, 10 Feb 2013 14:22:08 +0100 Subject: [PATCH] update send date stuff --- ws2012/P2P/uebungen/11/src/node/Node.java | 15 ++++++-- .../P2P/uebungen/11/src/node/UDPHandler.java | 35 +++++++++++++++---- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/ws2012/P2P/uebungen/11/src/node/Node.java b/ws2012/P2P/uebungen/11/src/node/Node.java index 110542e1..93641a35 100644 --- a/ws2012/P2P/uebungen/11/src/node/Node.java +++ b/ws2012/P2P/uebungen/11/src/node/Node.java @@ -401,6 +401,8 @@ public class Node { int FILE_SIZE = (int)file.length(); + boolean eof = false; + int NUMBER_OF_CHUNKS = 0; byte[] temp = null; @@ -414,7 +416,8 @@ public class Node { while(totalBytesRead < FILE_SIZE){ int bytesReamaining = FILE_SIZE-totalBytesRead; if(bytesReamaining < CHUNK_SIZE){ - CHUNK_SIZE = bytesReamaining; + CHUNK_SIZE = bytesReamaining+1; + eof = true; } temp = new byte[CHUNK_SIZE]; int bytesRead = inStream.read(temp, 0, CHUNK_SIZE); @@ -424,8 +427,16 @@ public class Node { NUMBER_OF_CHUNKS++; } + //send chunk - String data = fileID.toString()+"|"+NUMBER_OF_CHUNKS+"-"+temp.toString(); + + String data = ""; + + if(eof){ + data = fileID.toString()+"|"+NUMBER_OF_CHUNKS+"-"+temp.toString()+"!"; + }else{ + data = fileID.toString()+"|"+NUMBER_OF_CHUNKS+"-"+temp.toString(); + } send(nodeID, MessageType.DATA, data.getBytes(), true, null); diff --git a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java index aff99ad1..129f2c21 100644 --- a/ws2012/P2P/uebungen/11/src/node/UDPHandler.java +++ b/ws2012/P2P/uebungen/11/src/node/UDPHandler.java @@ -130,11 +130,7 @@ public class UDPHandler implements Runnable { receiveStore(fromID, rpcID); break; case MessageType.DATA: - //TODO implemnt - - //rpcID splitten ? -> [0] fileID, [1] partID ?!?!?! - receiveData(fromID, fileID, partID); - + receiveData(fromID, rpcID); LOGGER.log(Level.INFO, "Received DATA from {0}", new Object[] { from.toString() }); break; @@ -168,7 +164,34 @@ public class UDPHandler implements Runnable { } } - private void receivePong(NodeIdentifier fromID, Identifier rpcID) { + + + + private void receiveData(NodeIdentifier fromID, Identifier rpcID) { + + StringBuilder sb = new StringBuilder(); + + while (buffer.hasRemaining()) { + sb.append(buffer.get()); + } + + String data = sb.toString(); + + String parts[] = data.split("-"); + + + + + // This should be the answer to a prior FIND_NODE -> mark this RPC ID as + // received + node.receivedRPC(fromID, rpcID); + + LOGGER.log(Level.INFO, "Received [DATA] [{0}] from Node {1})", + new Object[] { data.toString(), fromID }); + + } + + private void receivePong(NodeIdentifier fromID, Identifier rpcID) { LOGGER.log(Level.INFO, "Received [PONG] from {0}", new Object[] { fromID });