Tranformation d'une commande (chaine de char) en tableau. Il est donc désormais possible de lire une commande et l'interprêter
This commit is contained in:
parent
09d4834cdf
commit
233f7ac582
@ -20,11 +20,11 @@ func main() {
|
||||
protocolRepository := repository.CreateProtocolRepository()
|
||||
|
||||
// Création des Writers
|
||||
helloRule := writers.CreateHelloRule("^(HELLO) ([A-Za-z0-9]{5,20}) ([0-9]{1,5})\r\n$")
|
||||
helloRule := writers.CreateHelloRule("^HELLO ([A-Za-z0-9]{5,20}) ([0-9]{1,5})\r\n$")
|
||||
protocolRepository.AddWriter(&helloRule)
|
||||
|
||||
// Création des Readers
|
||||
eraseFileRule := readers.CreateEraseFileRule("^(ERASEFILE) ([A-Za-z0-9.]{50,200})\r\n$")
|
||||
eraseFileRule := readers.CreateEraseFileRule("^ERASEFILE ([A-Za-z0-9.]{50,200})\r\n$")
|
||||
protocolRepository.AddReader(&eraseFileRule)
|
||||
|
||||
multicast := network.CreateClientMulticast(MULTICAST_ADDRESS, MULTICAST_SECOND, protocolRepository)
|
||||
|
@ -5,8 +5,8 @@ type IProtocolReader interface {
|
||||
// GetCmd Permet de récupérer le nom de la commande
|
||||
GetCmd() string
|
||||
|
||||
// Execute Permet d'exécuter l'action implémentée par une règle
|
||||
Execute(data string) string
|
||||
// Execute Permet d'exécuter l'action implémentée par une règle. Retourne le message (rule) de retour et bool pour savoir si tout s'est bien passé ou non
|
||||
Execute(data string) (string, bool)
|
||||
|
||||
// Match Permet de vérifier la validité d'une donnée censée suivre les règles d'un protocol
|
||||
Match(data string) bool
|
||||
|
@ -38,3 +38,8 @@ func (m RegexMatcher) Build(cmd string, datas ...string) (string, bool) {
|
||||
return "", false
|
||||
}
|
||||
}
|
||||
|
||||
// Parse Permet de récupérer les différentes données de la chaine sur base du regex
|
||||
func (m RegexMatcher) Parse(data string) []string {
|
||||
return m.matcher.FindAllStringSubmatch(data, -1)[0]
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ func (repo ProtocolRepository) ExecuteReader(data string) (string, bool) {
|
||||
for _, reader := range repo.protocolReaders {
|
||||
if (*reader).Match(data) { // Exécuter si match
|
||||
// Récupérer résultat à renvoyer (Donc donner ProtocolRepository aux reader ?!)
|
||||
return (*reader).Execute(data), true
|
||||
return (*reader).Execute(data)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ type EraseFileRule struct {
|
||||
}
|
||||
|
||||
// CreateEraseFileRule Création d'une instance de EraseFileRule
|
||||
func CreateEraseFileRule(pattern string) *EraseFileRule {
|
||||
func CreateEraseFileRule(pattern string) protocol.IProtocolReader {
|
||||
return &EraseFileRule{
|
||||
Cmd: EraseFileRuleName,
|
||||
matcher: protocol.CreateRegexMatcher(pattern),
|
||||
@ -26,12 +26,14 @@ func (rule EraseFileRule) GetCmd() string {
|
||||
return rule.Cmd
|
||||
}
|
||||
|
||||
func (rule EraseFileRule) Execute(data string) string {
|
||||
func (rule EraseFileRule) Execute(data string) (string, bool) {
|
||||
|
||||
if rule.Match(data) {
|
||||
return "Parsing : EraseFileRule command fichier supprimé"
|
||||
values := rule.matcher.Parse(data)
|
||||
println(values[1], " est le hash du fichier à supprimer")
|
||||
return "Parsing : Fichier avec le hash " + values[1] + " supprimé", true
|
||||
} else {
|
||||
return "Parsing : EraseFileRule command fichier non-supprimé"
|
||||
return "Parsing : EraseFileRule command incorrecte", false
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user