mirror of
https://github.com/binlaab/nanofiles.git
synced 2026-07-01 16:47:30 +02:00
quemen redes
This commit is contained in:
@@ -10,7 +10,7 @@ public class PeerMessage {
|
||||
|
||||
|
||||
|
||||
|
||||
public static final byte HASH_LENGTH = 40;
|
||||
private byte opcode;
|
||||
|
||||
/*
|
||||
@@ -18,6 +18,11 @@ public class PeerMessage {
|
||||
* específicos para crear mensajes con otros campos, según sea necesario
|
||||
*
|
||||
*/
|
||||
private boolean last;
|
||||
private long fileSize;
|
||||
private String fileHash;
|
||||
private byte filenameLong;
|
||||
private String filenameVal;
|
||||
|
||||
|
||||
|
||||
@@ -40,9 +45,49 @@ public class PeerMessage {
|
||||
return opcode;
|
||||
}
|
||||
|
||||
public boolean isLast() {
|
||||
return last;
|
||||
}
|
||||
|
||||
public void setLast(boolean last) {
|
||||
this.last = last;
|
||||
}
|
||||
|
||||
public boolean getLast() {
|
||||
return last;
|
||||
}
|
||||
|
||||
public long getFileSize() {
|
||||
return fileSize;
|
||||
}
|
||||
|
||||
public void setFileSize(long fileSize) {
|
||||
this.fileSize = fileSize;
|
||||
}
|
||||
|
||||
public String getFileHash() {
|
||||
return fileHash;
|
||||
}
|
||||
|
||||
public void setFileHash(String fileHash) {
|
||||
this.fileHash = fileHash;
|
||||
}
|
||||
|
||||
public byte getFilenameLong() {
|
||||
return filenameLong;
|
||||
}
|
||||
|
||||
public void setFilenameLong(byte filenameLong) {
|
||||
this.filenameLong = filenameLong;
|
||||
}
|
||||
|
||||
public String getFilenameVal() {
|
||||
return filenameVal;
|
||||
}
|
||||
|
||||
public void setFilenameVal(String filenameVal) {
|
||||
this.filenameVal = filenameVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Método de clase para parsear los campos de un mensaje y construir el objeto
|
||||
@@ -65,6 +110,31 @@ public class PeerMessage {
|
||||
PeerMessage message = new PeerMessage();
|
||||
byte opcode = dis.readByte();
|
||||
switch (opcode) {
|
||||
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
|
||||
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
|
||||
case PeerMessageOps.OPCODE_PEER_FILE: {
|
||||
boolean last = false;
|
||||
byte lastVal = dis.readByte();
|
||||
|
||||
if (lastVal == 1) {
|
||||
last = true;
|
||||
}
|
||||
long fileSize = dis.readLong();
|
||||
|
||||
byte[] fileHash = new byte[HASH_LENGTH];
|
||||
dis.readFully(fileHash);
|
||||
|
||||
byte filenameLong = dis.readByte();
|
||||
byte[] filenameVal = new byte[filenameLong];
|
||||
|
||||
dis.readFully(filenameVal);
|
||||
|
||||
message.setLast(last);
|
||||
message.setFileSize(fileSize);
|
||||
message.setFileHash(new String(fileHash));
|
||||
message.setFilenameLong(filenameLong);
|
||||
message.setFilenameVal(new String(filenameVal));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -87,6 +157,21 @@ public class PeerMessage {
|
||||
|
||||
dos.writeByte(opcode);
|
||||
switch (opcode) {
|
||||
case PeerMessageOps.OPCODE_REQUEST_PEER_FILES:
|
||||
case PeerMessageOps.OPCODE_PEER_FILES_ERROR: break;
|
||||
case PeerMessageOps.OPCODE_PEER_FILE: {
|
||||
byte lastVal = 0;
|
||||
if (last) {
|
||||
lastVal = 1;
|
||||
}
|
||||
|
||||
dos.writeByte(lastVal);
|
||||
dos.writeLong(fileSize);
|
||||
dos.write(fileHash.getBytes());
|
||||
dos.write(filenameLong);
|
||||
dos.write(filenameVal.getBytes());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,9 @@ public class PeerMessageOps {
|
||||
* los diferentes tipos de mensajes del protocolo de comunicación con un par
|
||||
* servidor de ficheros (valores posibles del campo "operation").
|
||||
*/
|
||||
|
||||
public static final byte OPCODE_REQUEST_PEER_FILES = 1;
|
||||
public static final byte OPCODE_PEER_FILE = 2;
|
||||
public static final byte OPCODE_PEER_FILES_ERROR = 3;
|
||||
|
||||
|
||||
|
||||
@@ -22,14 +24,14 @@ public class PeerMessageOps {
|
||||
* su representación textual a "valid_operations_str" EN EL MISMO ORDEN.
|
||||
*/
|
||||
private static final Byte[] _valid_opcodes = { OPCODE_INVALID_CODE,
|
||||
|
||||
|
||||
|
||||
OPCODE_REQUEST_PEER_FILES,
|
||||
OPCODE_PEER_FILE,
|
||||
OPCODE_PEER_FILES_ERROR
|
||||
};
|
||||
private static final String[] _valid_operations_str = { "INVALID_OPCODE",
|
||||
|
||||
|
||||
|
||||
"REQUEST_PEER_FILES",
|
||||
"PEER_FILE",
|
||||
"PEER_FILES_ERROR"
|
||||
};
|
||||
|
||||
private static Map<String, Byte> _operation_to_opcode;
|
||||
|
||||
Reference in New Issue
Block a user