This commit is contained in:
binlaab
2026-04-30 12:31:11 +02:00
parent 72899acd74
commit b87b710c50
6 changed files with 125 additions and 4 deletions

View File

@@ -43,6 +43,11 @@ public class DirMessage {
private static final String FIELDNAME_PEERS = "serverPeers";
private static final String FIELDNAME_FILENAME = "filename";
private static final String FIELDNAME_FILEDATA = "filedata";
private static final String FIELDNAME_FILESIZE = "filesize";
private static final String FIELDNAME_FILEHASH = "filehash";
/**
* Tipo del mensaje, de entre los tipos definidos en PeerMessageOps.
*/
@@ -58,6 +63,11 @@ public class DirMessage {
private FileInfo[] fileList;
private Map<String, InetSocketAddress> peerList;
private String filename;
private String filedata;
private String fileHash;
private long fileSize;
/*
* TODO: (Boletín MensajesASCII) Crear un atributo correspondiente a cada uno de
* los campos de los diferentes mensajes de este protocolo.
@@ -67,6 +77,7 @@ public class DirMessage {
operation = op;
}
public DirMessage(String op, String nick, String ip, int puerto) {
this(op);
this.nick = nick;
@@ -75,15 +86,28 @@ public class DirMessage {
}
public DirMessage(String op, String nick) {
public DirMessage(String op, String field) {
this(op);
this.nick = nick;
if (op.equals(DirMessageOps.OPERATION_SERVE) || op.equals(DirMessageOps.OPERATION_STOP_SERVE)) {
this.nick = field;
} else if (op.equals(DirMessageOps.OPERATION_REQUEST_DIRDL)) {
this.fileHash = field;
}
}
public DirMessage(String op, FileInfo[] filelist) {
this(op);
this.fileList = filelist;
}
public DirMessage(String op, String filename, String data, long size, String hash) {
this(op);
this.filename = filename;
this.filedata = data;
this.fileSize = size;
this.fileHash = hash;
}
/*
* TODO: (Boletín MensajesASCII) Crear diferentes constructores adecuados para
@@ -161,6 +185,37 @@ public class DirMessage {
this.peerList = peers;
}
public String getFilename() {
return this.filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getFiledata() {
return this.filedata;
}
public void setFiledata(String data) {
this.filedata = data;
}
public String getHash() {
return this.fileHash;
}
public void setHash(String h) {
this.fileHash = h;
}
public long getFileSize() {
return this.fileSize;
}
public void setFileSize(Long fs) {
this.fileSize = fs;
}
/**
* Método que convierte un mensaje codificado como una cadena de caracteres, a
@@ -245,6 +300,25 @@ public class DirMessage {
m.setPeers(peersList);
break;
}
case FIELDNAME_FILENAME: {
m.setFilename(value);
break;
}
case FIELDNAME_FILEDATA: {
m.setFiledata(value);
break;
}
case FIELDNAME_FILESIZE: {
m.setFileSize(Long.parseLong(value));
}
case FIELDNAME_FILEHASH: {
m.setHash(value);
break;
}
default:
System.err.println("PANIC: DirMessage.fromString - message with unknown field name " + fieldName);
@@ -307,6 +381,16 @@ public class DirMessage {
}
}
break;
case DirMessageOps.OPERATION_REQUEST_DIRDL:
sb.append(FIELDNAME_FILEHASH + DELIMITER + this.fileHash + END_LINE);
break;
case DirMessageOps.OPERATION_DIRDL: // data name size hash
sb.append(FIELDNAME_FILENAME + DELIMITER + this.filename + END_LINE);
sb.append(FIELDNAME_FILEDATA + DELIMITER + this.filedata + END_LINE);
sb.append(FIELDNAME_FILESIZE + DELIMITER + this.fileSize + END_LINE);
sb.append(FIELDNAME_FILEHASH + DELIMITER + this.fileHash + END_LINE);
break;
default:
break;
}

View File

@@ -26,6 +26,11 @@ public class DirMessageOps {
public static final String OPERATION_STOP_SERVE = "stopServe";
public static final String OPERATION_STOP_SERVE_OK = "stopServeOk";
public static final String OPERATION_STOP_SERVE_ERROR = "stopServeError";
public static final String OPERATION_REQUEST_DIRDL = "dirdl";
public static final String OPERATION_FILE_NOT_FOUND = "fileNotFound";
public static final String OPERATION_FILE_AMBIGUOUS = "fileAmbiguous";
public static final String OPERATION_DIRDL = "dirdlData";
// TODO: definir las operaciones del protocolo de directorio