Modification système de ProtocolReader.java qui permet de lire/ecrire un fichier sur le réseau.

This commit is contained in:
Benjamin 2022-03-05 12:12:12 +01:00
parent f0461537f6
commit a1b3463d3b
3 changed files with 78 additions and 1 deletions

View File

@ -1,5 +1,7 @@
package lightcontainer.protocol; package lightcontainer.protocol;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -17,12 +19,41 @@ public abstract class ProtocolReader {
STOREBACKEND STOREBACKEND
} }
public enum FileOptions {
/**
* Ne lire/ecrire aucun fichier
*/
NONE,
/**
* Lire un fichier : Implementer la méthode 'read'
*/
READ,
/**
* Ecrire un fichier : Implementer la méthode 'write'
*/
WRITE
}
/**
* Modèle utilisé par tout les résultats des règles de protocol.
* Lorsqu'il retourne son résultat, on vérifie si il y a une demande de lecture/écriture de fichier depuis le réseau. Si oui on appel ces méthodes, sinon on ne fait rien.
* Ensuite on regarde après l'exécution de ces méthode ou non si il y a une commande de retour ou non et l'envoyons au receiver spécifié par la commande.
*/
public abstract class ProtocolResult { public abstract class ProtocolResult {
/**
* Permet de déterminer si la class souhaite lire ou écrire un fichier.
*/
private final FileOptions option;
/** /**
* Command qui sera renvoyée par exemple au client * Command qui sera renvoyée par exemple au client
*/ */
private String resultCommand; private String resultCommand;
/** /**
* Désigne vers ou cette commande est envoyée. * Désigne vers ou cette commande est envoyée.
* ResultCmdReceiver.CLIENT : Signifie que cette commande va être directement revoyée au client. * ResultCmdReceiver.CLIENT : Signifie que cette commande va être directement revoyée au client.
@ -31,18 +62,60 @@ public abstract class ProtocolReader {
private ResultCmdReceiver receiver; private ResultCmdReceiver receiver;
/**
* Spécifier une option correct afin de permettre au système de détecter ce qu'il doit exécuter.
* @param option Option
*/
public ProtocolResult(FileOptions option) {
this.option = option;
}
public ResultCmdReceiver getReceiver() { public ResultCmdReceiver getReceiver() {
return receiver; return receiver;
} }
/**
* Récupérer la commande à envoyer
* @return
*/
public String getResultCommand() { public String getResultCommand() {
return resultCommand; return resultCommand;
} }
/**
* Mettre la commande à envoyer
* @param resultCommand Commande à envoyer
* @param receiver Le receveur de cette commande
*/
public void setResultCommand(String resultCommand, ResultCmdReceiver receiver) { public void setResultCommand(String resultCommand, ResultCmdReceiver receiver) {
this.resultCommand = resultCommand; this.resultCommand = resultCommand;
this.receiver = receiver; this.receiver = receiver;
} }
/**
* Permet de récupérer l'option associée au protocol.
* @return L'option associée
*/
public FileOptions getOption() {
return option;
}
/**
* Permet de lire un fichier. Cad reçevoir le contenu d'un fichier provenant du réseau.
* Redéfinissez cette méthode pour l'utiliser
* @param reader Buffer rempli du fichier
*/
public void read(BufferedReader reader) {}
/**
* Permet d'écrire un fichier. Cad reçevoir le contenu d'un fichier provenant du réseau
* @param writer Buffer à remplir, et qui sera envoyer au destinataire
*/
public void write(BufferedWriter writer) {}
} }
/** /**

View File

@ -2,6 +2,7 @@ package lightcontainer.protocol.rules.reader;
import lightcontainer.protocol.ProtocolReader; import lightcontainer.protocol.ProtocolReader;
import java.io.BufferedReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -26,6 +27,7 @@ public class HelloRule extends ProtocolReader {
private final int port; private final int port;
public Result(String domain, int port) { public Result(String domain, int port) {
super(FileOptions.NONE);
this.domain = domain; this.domain = domain;
this.port = port; this.port = port;
} }
@ -37,6 +39,8 @@ public class HelloRule extends ProtocolReader {
public int getPort() { public int getPort() {
return port; return port;
} }
} }

View File

@ -24,7 +24,7 @@ public class SigninRule extends ProtocolReader {
private final String password; private final String password;
public Result(String login, String password) { public Result(String login, String password) {
super(FileOptions.NONE);
this.login = login; this.login = login;
this.password = password; this.password = password;
} }