Post-traitement du moteur Axe¶
Un plugin de post-processing est un module go exportant une variable
AxePostProcessor
qui implémente l'interface AxePostProcessor
(définie
dans
git.canopsis.net/canopsis/go-revolution/cmd/engine-axe/plugins.go
).
Les plugins sont compilés avec go build -buildmode=plugin
, qui crée un
fichier .so
. Ils doivent être recompilés à chaque version de Canopsis.
Le code ci-dessous est un exemple minimal de plugin :
package main import ( "log" "git.canopsis.net/canopsis/go-revolution/lib/canopsis/alarm" "git.canopsis.net/canopsis/go-revolution/lib/canopsis/types" ) type dummyPostProcessor struct{} // Init est appelé une fois au démarrage du moteur axe. Le moteur plante si // cette méthode renvoie une erreur. func (d dummyPostProcessor) Init() error { log.Println("dummy.Init") return nil } // Beat est appelé à chaque beat du moteur axe. Si cette méthode renvoie une // erreur, elle est loggée, et l'exécution du moteur continue. func (d dummyPostProcessor) Beat() error { log.Println("dummy.Beat") return nil } // ProcessEvent est appelé à chaque fois que le moteur axe a terminé le // traitement d'un événement. Si cette méthode renvoie une erreur, elle est // loggée, et l'exécution du moteur continue. func (d dummyPostProcessor) ProcessEvent(alarmService alarm.Service, event types.Event, alarmChange types.AlarmChange) error { log.Printf("dummy.ProcessEvent: %+v\n", event) return nil } // ProcessAlarms est appelé quand plusieurs alarmes sont modifiées par lot. Si // cette méthode renvoie une erreur, elle est loggée, et l'exécution du moteur // continue. func (d dummyPostProcessor) ProcessAlarms(alarmService alarm.Service, alarms []types.Alarm, change types.AlarmChangeType) error { log.Println("dummy.ProcessAlarms") return nil } // Crée un objet AxePostProcessor de type dummyPostProcessor. var AxePostProcessor dummyPostProcessor