mirror of
https://github.com/binlaab/nanofiles.git
synced 2026-07-01 13:37:22 +02:00
uwu
This commit is contained in:
@@ -223,22 +223,39 @@ public class NFController {
|
||||
* clientStatus.
|
||||
*/
|
||||
boolean commandAllowed = true;
|
||||
switch (currentCommand) {
|
||||
case NFCommands.COM_MYFILES: {
|
||||
commandAllowed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case NFCommands.COM_PING: {
|
||||
|
||||
// ?????
|
||||
}
|
||||
|
||||
default:
|
||||
// System.err.println("ERROR: undefined behaviour for " + currentCommand + "
|
||||
// command!");
|
||||
}
|
||||
return commandAllowed;
|
||||
switch (currentCommand) {
|
||||
//Comandos SIEMPRE permitidos
|
||||
case NFCommands.COM_MYFILES:
|
||||
case NFCommands.COM_QUIT:
|
||||
case NFCommands.COM_HELP:
|
||||
case NFCommands.COM_NICK:
|
||||
commandAllowed = true;
|
||||
break;
|
||||
//Comandos permitidos:OFFLINE
|
||||
case NFCommands.COM_PING:
|
||||
commandAllowed = (currentState == OFFLINE);
|
||||
if (!commandAllowed) {
|
||||
System.err.println("* Ya estás conectado al directorio. No necesitas hacer ping de nuevo.");
|
||||
}
|
||||
break;
|
||||
//Comandos permitidos:ONLINE
|
||||
case NFCommands.COM_FILELIST_DIR:
|
||||
case NFCommands.COM_PEERLIST:
|
||||
case NFCommands.COM_SERVE:
|
||||
case NFCommands.COM_DOWNLOAD_DIR:
|
||||
case NFCommands.COM_FILELIST_PEER:
|
||||
case NFCommands.COM_DOWNLOAD_PEER:
|
||||
commandAllowed = (currentState == ONLINE);
|
||||
if (!commandAllowed) {
|
||||
System.err.println("* Comando no permitido en estado OFFLINE. Haz un 'ping' primero.");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
commandAllowed = false;
|
||||
System.err.println("ERROR: undefined behaviour for " + currentCommand + " command!");
|
||||
}
|
||||
return commandAllowed;
|
||||
}
|
||||
|
||||
private void updateCurrentState(boolean success) {
|
||||
@@ -248,12 +265,27 @@ public class NFController {
|
||||
* siguiente estado y así permitir unos u otros comandos en cada caso.
|
||||
*/
|
||||
if (!success) {
|
||||
return;
|
||||
}
|
||||
switch (currentCommand) {
|
||||
default:
|
||||
}
|
||||
|
||||
return; //Si falla, no cambiamos de estado
|
||||
}
|
||||
|
||||
switch (currentCommand) {
|
||||
case NFCommands.COM_PING:
|
||||
currentState = ONLINE;
|
||||
break;
|
||||
|
||||
case NFCommands.COM_QUIT:
|
||||
currentState = OFFLINE;
|
||||
break;
|
||||
|
||||
default:
|
||||
/*
|
||||
* Los únicos comandos que cambian el estado del autómata son el
|
||||
* 'ping' para ponerlo en ONLINE, y el 'quit' para ponerlo en
|
||||
* OFFLINE, por lo tanto, los demás comandos no alterarán el
|
||||
* estado del autómata
|
||||
*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void showMyLocalFiles() {
|
||||
|
||||
@@ -23,6 +23,8 @@ public class PeerMessage {
|
||||
private String fileHash;
|
||||
private byte filenameLong;
|
||||
private String filenameVal;
|
||||
|
||||
private byte[] fileData;
|
||||
|
||||
|
||||
|
||||
@@ -88,6 +90,14 @@ public class PeerMessage {
|
||||
public void setFilenameVal(String filenameVal) {
|
||||
this.filenameVal = filenameVal;
|
||||
}
|
||||
|
||||
public byte[] getFileData() {
|
||||
return fileData;
|
||||
}
|
||||
|
||||
public void setFileData(byte[] fileData) {
|
||||
this.fileData = fileData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Método de clase para parsear los campos de un mensaje y construir el objeto
|
||||
@@ -137,6 +147,16 @@ public class PeerMessage {
|
||||
message.setFilenameVal(new String(filenameVal));
|
||||
break;
|
||||
}
|
||||
|
||||
case PeerMessageOps.OPCODE_REQUEST_PEER_DL: {
|
||||
int longitudSubHash = (int)dis.readByte();
|
||||
byte[] subHash = new byte[longitudSubHash];
|
||||
dis.readFully(subHash);
|
||||
break;
|
||||
// buscar archivo supongo
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,12 @@ public class PeerMessageOps {
|
||||
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;
|
||||
|
||||
public static final byte OPCODE_REQUEST_PEER_DL = 4;
|
||||
public static final byte OPCODE_FILE_NOT_FOUND = 5;
|
||||
public static final byte OPCODE_AMBIGUOUS = 6;
|
||||
public static final byte OPCODE_PEER_DL = 7;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -26,12 +32,20 @@ public class PeerMessageOps {
|
||||
private static final Byte[] _valid_opcodes = { OPCODE_INVALID_CODE,
|
||||
OPCODE_REQUEST_PEER_FILES,
|
||||
OPCODE_PEER_FILE,
|
||||
OPCODE_PEER_FILES_ERROR
|
||||
OPCODE_PEER_FILES_ERROR,
|
||||
OPCODE_REQUEST_PEER_DL,
|
||||
OPCODE_FILE_NOT_FOUND,
|
||||
OPCODE_AMBIGUOUS,
|
||||
OPCODE_PEER_DL
|
||||
};
|
||||
private static final String[] _valid_operations_str = { "INVALID_OPCODE",
|
||||
"REQUEST_PEER_FILES",
|
||||
"PEER_FILE",
|
||||
"PEER_FILES_ERROR"
|
||||
"PEER_FILES_ERROR",
|
||||
"REQUEST_PEER_DL",
|
||||
"FILE_NOT_FOUND",
|
||||
"FILE_AMBIGUOUS",
|
||||
"PEER_DL"
|
||||
};
|
||||
|
||||
private static Map<String, Byte> _operation_to_opcode;
|
||||
|
||||
Reference in New Issue
Block a user