just some fixes from find_node
This commit is contained in:
commit
a6b79c4b6b
@ -25,6 +25,7 @@ import routingtable.IRoutingTable;
|
||||
import routingtable.RoutingTableImpl;
|
||||
|
||||
public class Node {
|
||||
|
||||
private final static Logger LOGGER = Logger.getLogger(Node.class.getName());
|
||||
|
||||
/**
|
||||
@ -421,31 +422,34 @@ public class Node {
|
||||
private boolean sendLeave(NodeIdentifier n) {
|
||||
return send(n, MessageType.LEAVE, null, false, null);
|
||||
}
|
||||
|
||||
public void storeFile(File file){
|
||||
files.add(file);
|
||||
}
|
||||
|
||||
private void sendFile(NodeIdentifier nodeID, File file) {
|
||||
|
||||
// calculate chunk size
|
||||
int CHUNK_SIZE = BUFFER_SIZE - 15;
|
||||
|
||||
int FILE_SIZE = (int) file.length();
|
||||
|
||||
boolean eof = false;
|
||||
|
||||
int NUMBER_OF_CHUNKS = 0;
|
||||
byte[] temp = null;
|
||||
|
||||
int totalBytesRead = 0;
|
||||
|
||||
Identifier fileID = new Identifier(10, file.getName().getBytes());
|
||||
|
||||
try {
|
||||
InputStream inStream = new BufferedInputStream(new FileInputStream(
|
||||
file));
|
||||
|
||||
while (totalBytesRead < FILE_SIZE) {
|
||||
int bytesReamaining = FILE_SIZE - totalBytesRead;
|
||||
if (bytesReamaining < CHUNK_SIZE) {
|
||||
CHUNK_SIZE = bytesReamaining + 1;
|
||||
//calculate chunk size
|
||||
int CHUNK_SIZE = BUFFER_SIZE - 15;
|
||||
|
||||
int FILE_SIZE = (int)file.length();
|
||||
|
||||
boolean eof = false;
|
||||
|
||||
int NUMBER_OF_CHUNKS = 0;
|
||||
byte[] temp = null;
|
||||
|
||||
int totalBytesRead = 0;
|
||||
|
||||
Identifier fileID = new Identifier(10, file.getName().getBytes());
|
||||
|
||||
try {
|
||||
InputStream inStream = new BufferedInputStream(new FileInputStream(file));
|
||||
|
||||
while(totalBytesRead < FILE_SIZE){
|
||||
int bytesReamaining = FILE_SIZE-totalBytesRead;
|
||||
if(bytesReamaining < CHUNK_SIZE){
|
||||
CHUNK_SIZE = bytesReamaining+1;
|
||||
eof = true;
|
||||
}
|
||||
temp = new byte[CHUNK_SIZE];
|
||||
@ -481,7 +485,5 @@ public class Node {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,7 @@
|
||||
package node;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.ByteBuffer;
|
||||
@ -18,6 +20,9 @@ public class UDPHandler implements Runnable {
|
||||
private ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE);
|
||||
|
||||
private Node node;
|
||||
|
||||
|
||||
private String[] tempData;
|
||||
|
||||
public UDPHandler(Node node) {
|
||||
this.node = node;
|
||||
@ -203,25 +208,65 @@ public class UDPHandler implements Runnable {
|
||||
|
||||
private void receiveData(NodeIdentifier fromID, Identifier rpcID) {
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
while (buffer.hasRemaining()) {
|
||||
sb.append(buffer.get());
|
||||
}
|
||||
while (buffer.hasRemaining()) {
|
||||
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();
|
||||
|
||||
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 });
|
||||
// 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 });
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user