merge
This commit is contained in:
parent
3166b7726a
commit
99713dbd17
@ -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){
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
@ -18,6 +20,9 @@ public class UDPHandler implements Runnable {
|
|||||||
private ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE);
|
private ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE);
|
||||||
|
|
||||||
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 parts[] = data.split("-");
|
||||||
|
|
||||||
|
String fileAndChunk[] = parts[0].split("|");
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String data = sb.toString();
|
// This should be the answer to a prior FIND_NODE -> mark this RPC ID as
|
||||||
|
// received
|
||||||
String parts[] = data.split("-");
|
node.receivedRPC(fromID, rpcID);
|
||||||
|
|
||||||
// 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 });
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user