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()
|
protocolRepository := repository.CreateProtocolRepository()
|
||||||
|
|
||||||
// Création des Writers
|
// 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)
|
protocolRepository.AddWriter(&helloRule)
|
||||||
|
|
||||||
// Création des Readers
|
// 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)
|
protocolRepository.AddReader(&eraseFileRule)
|
||||||
|
|
||||||
multicast := network.CreateClientMulticast(MULTICAST_ADDRESS, MULTICAST_SECOND, protocolRepository)
|
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 Permet de récupérer le nom de la commande
|
||||||
GetCmd() string
|
GetCmd() string
|
||||||
|
|
||||||
// Execute Permet d'exécuter l'action implémentée par une règle
|
// 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
|
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 Permet de vérifier la validité d'une donnée censée suivre les règles d'un protocol
|
||||||
Match(data string) bool
|
Match(data string) bool
|
||||||
|
@ -38,3 +38,8 @@ func (m RegexMatcher) Build(cmd string, datas ...string) (string, bool) {
|
|||||||
return "", false
|
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 {
|
for _, reader := range repo.protocolReaders {
|
||||||
if (*reader).Match(data) { // Exécuter si match
|
if (*reader).Match(data) { // Exécuter si match
|
||||||
// Récupérer résultat à renvoyer (Donc donner ProtocolRepository aux reader ?!)
|
// 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
|
// CreateEraseFileRule Création d'une instance de EraseFileRule
|
||||||
func CreateEraseFileRule(pattern string) *EraseFileRule {
|
func CreateEraseFileRule(pattern string) protocol.IProtocolReader {
|
||||||
return &EraseFileRule{
|
return &EraseFileRule{
|
||||||
Cmd: EraseFileRuleName,
|
Cmd: EraseFileRuleName,
|
||||||
matcher: protocol.CreateRegexMatcher(pattern),
|
matcher: protocol.CreateRegexMatcher(pattern),
|
||||||
@ -26,12 +26,14 @@ func (rule EraseFileRule) GetCmd() string {
|
|||||||
return rule.Cmd
|
return rule.Cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rule EraseFileRule) Execute(data string) string {
|
func (rule EraseFileRule) Execute(data string) (string, bool) {
|
||||||
|
|
||||||
if rule.Match(data) {
|
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 {
|
} else {
|
||||||
return "Parsing : EraseFileRule command fichier non-supprimé"
|
return "Parsing : EraseFileRule command incorrecte", false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user