empezada implementación peerdl, cambiar DEFAULT_DIRECTORY_HOSTNAME en NanoFiles

This commit is contained in:
binlaab
2026-04-27 09:54:27 +02:00
parent b179408874
commit dc00963c08
7 changed files with 195 additions and 59 deletions

View File

@@ -89,6 +89,7 @@ public class PeerMessage {
}
public void setFilenameVal(String filenameVal) {
this.filenameLong = (byte) filenameVal.length();
this.filenameVal = filenameVal;
}
@@ -130,6 +131,8 @@ public class PeerMessage {
PeerMessage message = new PeerMessage(opcode);
switch (opcode) {
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
case PeerMessageOps.OPCODE_FILE_NOT_FOUND:
case PeerMessageOps.OPCODE_AMBIGUOUS:
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
case PeerMessageOps.OPCODE_PEER_FILE: {
@@ -137,6 +140,7 @@ public class PeerMessage {
byte lastVal = dis.readByte();
if (lastVal == 1) {
System.out.println("rmfis - last = " + last);
last = true;
}
long fileSize = dis.readLong();
@@ -158,19 +162,22 @@ public class PeerMessage {
}
case PeerMessageOps.OPCODE_REQUEST_PEER_DL: {
// buscar archivo supongo
}
case PeerMessageOps.OPCODE_PEER_DL: {
int longitudSubHash = (int) dis.readByte();
byte[] subHash = new byte[longitudSubHash];
dis.readFully(subHash);
message.setFileHash(new String(subHash));
message.setChunkNum(dis.readInt());
break;
}
case PeerMessageOps.OPCODE_PEER_DL: {
int length = dis.readInt();
byte[] datos = new byte[length];
dis.readFully(datos);
message.setFileData(datos);
break;
}
default:
System.err.println("PeerMessage.readMessageFromInputStream doesn't know how to parse this message opcode: "
@@ -193,6 +200,8 @@ public class PeerMessage {
System.out.println(opcode);
switch (opcode) {
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
case PeerMessageOps.OPCODE_FILE_NOT_FOUND:
case PeerMessageOps.OPCODE_AMBIGUOUS:
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
case PeerMessageOps.OPCODE_PEER_FILE: {
byte lastVal = 0;
@@ -207,9 +216,20 @@ public class PeerMessage {
dos.write(filenameVal.getBytes());
break;
}
case PeerMessageOps.OPCODE_REQUEST_PEER_DL: {
byte[] hash = fileHash.getBytes();
dos.writeByte((byte) hash.length);
dos.write(hash);
dos.writeInt(chunkNum);
break;
}
case PeerMessageOps.OPCODE_PEER_DL: {
dos.writeInt(fileData.length);
dos.write(fileData);
break;
}
default:
System.err.println("PeerMessage.writeMessageToOutputStream found unexpected message opcode " + opcode + "("

View File

@@ -20,6 +20,7 @@ public class PeerMessageOps {
public static final byte OPCODE_FILE_NOT_FOUND = 5;
public static final byte OPCODE_AMBIGUOUS = 6;
public static final byte OPCODE_PEER_DL = 7;
public static final byte OPCODE_PEER_DL_ERROR = 8;
@@ -36,7 +37,8 @@ public class PeerMessageOps {
OPCODE_REQUEST_PEER_DL,
OPCODE_FILE_NOT_FOUND,
OPCODE_AMBIGUOUS,
OPCODE_PEER_DL
OPCODE_PEER_DL,
OPCODE_PEER_DL_ERROR
};
private static final String[] _valid_operations_str = { "INVALID_OPCODE",
"REQUEST_PEER_FILES",
@@ -45,7 +47,8 @@ public class PeerMessageOps {
"REQUEST_PEER_DL",
"FILE_NOT_FOUND",
"FILE_AMBIGUOUS",
"PEER_DL"
"PEER_DL",
"PEER_DL_ERROR"
};
private static Map<String, Byte> _operation_to_opcode;