This commit is contained in:
Michael Scholz 2013-02-10 15:14:37 +01:00
parent 3166b7726a
commit 99713dbd17
2 changed files with 63 additions and 14 deletions

View File

@ -414,6 +414,10 @@ public class Node {
return send(n, MessageType.LEAVE, null, false, null); return send(n, MessageType.LEAVE, null, false, null);
} }
public void storeFile(File file){
files.add(file);
}
private void sendFile(NodeIdentifier nodeID, File file){ private void sendFile(NodeIdentifier nodeID, File file){

View File

@ -1,5 +1,7 @@
package node; package node;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@ -19,6 +21,9 @@ public class UDPHandler implements Runnable {
private Node node; private Node node;
private String[] tempData;
public UDPHandler(Node node) { public UDPHandler(Node node) {
this.node = node; this.node = node;
} }
@ -200,25 +205,65 @@ public class UDPHandler implements Runnable {
private void receiveData(NodeIdentifier fromID, Identifier rpcID) { private void receiveData(NodeIdentifier fromID, Identifier rpcID) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
while (buffer.hasRemaining()) { while (buffer.hasRemaining()) {
sb.append(buffer.get()); sb.append(buffer.get());
} }
String data = sb.toString(); String data = sb.toString();
String parts[] = data.split("-"); String parts[] = data.split("-");
// This should be the answer to a prior FIND_NODE -> mark this RPC ID as String fileAndChunk[] = parts[0].split("|");
// received
node.receivedRPC(fromID, rpcID); String fileID = fileAndChunk[0];
int chunkID = Integer.parseInt(fileAndChunk[1]);
data = parts[1];
if(data.charAt(data.length()) == '!'){ //last chunk
//file zusammensetzen und im zielnode speichern
File file = new File("fileID");
FileWriter fw;
try {
fw = new FileWriter(file);
for(int i = 0; i < tempData.length; i++){
fw.write(tempData[i]);
}
fw.flush();
//store file in node
node.storeFile(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
tempData[chunkID] = data;
}
// 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 });
LOGGER.log(Level.INFO, "Received [DATA] [{0}] from Node {1})",
new Object[] { data.toString(), fromID });
} }
private void receivePong(NodeIdentifier fromID, Identifier rpcID) { private void receivePong(NodeIdentifier fromID, Identifier rpcID) {
LOGGER.log(Level.INFO, "Received [PONG] from {0}", LOGGER.log(Level.INFO, "Received [PONG] from {0}",
new Object[] { fromID }); new Object[] { fromID });