Ajout possibilité d'écrire un fichier sur le réseau
This commit is contained in:
parent
31e8ac2bd2
commit
f0e9815844
@ -5,15 +5,13 @@ package lightcontainer;
|
|||||||
|
|
||||||
import lightcontainer.domains.server.MulticastServerListener;
|
import lightcontainer.domains.server.MulticastServerListener;
|
||||||
import lightcontainer.domains.server.UnicastServerListener;
|
import lightcontainer.domains.server.UnicastServerListener;
|
||||||
import lightcontainer.interfaces.MulticastSPR;
|
|
||||||
import lightcontainer.interfaces.ProtocolRepository;
|
import lightcontainer.interfaces.ProtocolRepository;
|
||||||
import lightcontainer.protocol.ProtocolReader;
|
|
||||||
import lightcontainer.protocol.rules.reader.FilelistRule;
|
import lightcontainer.protocol.rules.reader.FilelistRule;
|
||||||
import lightcontainer.protocol.rules.reader.HelloRule;
|
import lightcontainer.protocol.rules.reader.HelloRule;
|
||||||
import lightcontainer.protocol.rules.reader.SavefileRule;
|
import lightcontainer.protocol.rules.reader.SavefileRule;
|
||||||
import lightcontainer.protocol.rules.reader.SigninRule;
|
import lightcontainer.protocol.rules.reader.SigninRule;
|
||||||
import lightcontainer.protocol.rules.writer.SignError;
|
import lightcontainer.protocol.rules.writer.SignErrorRule;
|
||||||
import lightcontainer.protocol.rules.writer.SignOk;
|
import lightcontainer.protocol.rules.writer.SignOkRule;
|
||||||
import lightcontainer.repository.ClientHandlerRepository;
|
import lightcontainer.repository.ClientHandlerRepository;
|
||||||
import lightcontainer.repository.FileFrontEnd;
|
import lightcontainer.repository.FileFrontEnd;
|
||||||
import lightcontainer.repository.ProtocolRepositoryImpl;
|
import lightcontainer.repository.ProtocolRepositoryImpl;
|
||||||
@ -38,8 +36,8 @@ public class App {
|
|||||||
protocolRep.addReader(new FilelistRule());
|
protocolRep.addReader(new FilelistRule());
|
||||||
protocolRep.addReader(new SavefileRule());
|
protocolRep.addReader(new SavefileRule());
|
||||||
|
|
||||||
protocolRep.addWriter(new SignOk());
|
protocolRep.addWriter(new SignOkRule());
|
||||||
protocolRep.addWriter(new SignError());
|
protocolRep.addWriter(new SignErrorRule());
|
||||||
|
|
||||||
new UnicastServerListener(clientRep, protocolRep, UNICAST_PORT);
|
new UnicastServerListener(clientRep, protocolRep, UNICAST_PORT);
|
||||||
new MulticastServerListener(storeRep, protocolRep, MULTICAST_IP, MULTICAST_PORT);
|
new MulticastServerListener(storeRep, protocolRep, MULTICAST_IP, MULTICAST_PORT);
|
||||||
|
@ -4,8 +4,8 @@ import lightcontainer.interfaces.ClientHandlerFFE;
|
|||||||
import lightcontainer.interfaces.ProtocolRepository;
|
import lightcontainer.interfaces.ProtocolRepository;
|
||||||
import lightcontainer.protocol.ProtocolReader;
|
import lightcontainer.protocol.ProtocolReader;
|
||||||
import lightcontainer.protocol.rules.reader.SigninRule;
|
import lightcontainer.protocol.rules.reader.SigninRule;
|
||||||
import lightcontainer.protocol.rules.writer.SignError;
|
import lightcontainer.protocol.rules.writer.SignErrorRule;
|
||||||
import lightcontainer.protocol.rules.writer.SignOk;
|
import lightcontainer.protocol.rules.writer.SignOkRule;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
@ -114,13 +114,13 @@ public class ClientHandler implements Runnable, AutoCloseable {
|
|||||||
SigninRule.Result signinResult = (SigninRule.Result) ruleResult;
|
SigninRule.Result signinResult = (SigninRule.Result) ruleResult;
|
||||||
if (signinResult.checkCredentials()) {
|
if (signinResult.checkCredentials()) {
|
||||||
this.login = signinResult.getLogin();
|
this.login = signinResult.getLogin();
|
||||||
writer.write(protocolRep.executeWriter(SignOk.NAME));
|
writer.write(protocolRep.executeWriter(SignOkRule.NAME));
|
||||||
writer.flush();
|
writer.flush();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (ClassCastException ignored) {}
|
} catch (ClassCastException ignored) {}
|
||||||
|
|
||||||
writer.write(protocolRep.executeWriter(SignError.NAME)); // Envoie SignError car echec de la connection
|
writer.write(protocolRep.executeWriter(SignErrorRule.NAME)); // Envoie SignError car echec de la connection
|
||||||
writer.flush();
|
writer.flush();
|
||||||
this.close(); // Fermeture de la connection
|
this.close(); // Fermeture de la connection
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package lightcontainer.protocol;
|
package lightcontainer.protocol;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.StringJoiner;
|
import java.util.StringJoiner;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -19,16 +21,17 @@ public abstract class ProtocolWriter {
|
|||||||
* Permet de récupérer le nom de la commande.
|
* Permet de récupérer le nom de la commande.
|
||||||
* @return Nom de la commande.
|
* @return Nom de la commande.
|
||||||
*/
|
*/
|
||||||
public String getCmdName() {
|
public final String getCmdName() {
|
||||||
return cmdName;
|
return cmdName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Permet de contruire une commande selon une règle établie.
|
* Permet de contruire une commande selon une règle établie.
|
||||||
* @param data Les données à ajouter dans la commande; L'ordre défini leur position dans la commande
|
* @param data Les données à ajouter dans la commande; L'ordre défini leur position dans la commande
|
||||||
* @return La commande construite
|
* @return La commande construite
|
||||||
*/
|
*/
|
||||||
public String execute(String... data) {
|
public final String execute(String... data) {
|
||||||
// Concatatène le nom de la commande avec les données (trim), avec un espace entre chaque
|
// Concatatène le nom de la commande avec les données (trim), avec un espace entre chaque
|
||||||
String command;
|
String command;
|
||||||
StringJoiner builder = new StringJoiner(" ", this.cmdName, "\r\n");
|
StringJoiner builder = new StringJoiner(" ", this.cmdName, "\r\n");
|
||||||
@ -42,4 +45,11 @@ public abstract class ProtocolWriter {
|
|||||||
Matcher ruleMatcher = this.rulePattern.matcher(command);
|
Matcher ruleMatcher = this.rulePattern.matcher(command);
|
||||||
return ruleMatcher.matches() ? command : null;
|
return ruleMatcher.matches() ? command : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Permet d'écrire un fichier sur le réseau. Cad envoyer le contenu d'un fichier sur le réseau.
|
||||||
|
* Redéfinissez cette méthode pour l'utiliser.
|
||||||
|
* @param writer Buffer à remplir qui sera envoyer via le réseau
|
||||||
|
*/
|
||||||
|
public void write(OutputStream writer) {}
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,13 @@ package lightcontainer.protocol.rules.writer;
|
|||||||
|
|
||||||
import lightcontainer.protocol.ProtocolWriter;
|
import lightcontainer.protocol.ProtocolWriter;
|
||||||
|
|
||||||
public class SignError extends ProtocolWriter {
|
public class SignErrorRule extends ProtocolWriter {
|
||||||
|
|
||||||
private static final String PATTERN = "^SIGN_ERROR\r\n$";
|
private static final String PATTERN = "^SIGN_ERROR\r\n$";
|
||||||
|
|
||||||
public static final String NAME = "SIGN_ERROR";
|
public static final String NAME = "SIGN_ERROR";
|
||||||
|
|
||||||
public SignError() {
|
public SignErrorRule() {
|
||||||
super(NAME, PATTERN);
|
super(NAME, PATTERN);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,13 +2,13 @@ package lightcontainer.protocol.rules.writer;
|
|||||||
|
|
||||||
import lightcontainer.protocol.ProtocolWriter;
|
import lightcontainer.protocol.ProtocolWriter;
|
||||||
|
|
||||||
public class SignOk extends ProtocolWriter {
|
public class SignOkRule extends ProtocolWriter {
|
||||||
|
|
||||||
private static final String PATTERN = "^SIGN_OK\r\n$";
|
private static final String PATTERN = "^SIGN_OK\r\n$";
|
||||||
|
|
||||||
public static final String NAME = "SIGN_OK";
|
public static final String NAME = "SIGN_OK";
|
||||||
|
|
||||||
public SignOk() {
|
public SignOkRule() {
|
||||||
super(NAME, PATTERN);
|
super(NAME, PATTERN);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user