From 858c8ff72c7bc4ace5b8a72efe00800d23def28a Mon Sep 17 00:00:00 2001 From: Andreas Bichinger Date: Sat, 7 May 2022 11:43:11 +0200 Subject: [PATCH] fix(model): emit events --- model/model.go | 26 ++++++++++++++++++++------ storage/controller.go | 5 ++++- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/model/model.go b/model/model.go index 02691c7..88b8d5d 100644 --- a/model/model.go +++ b/model/model.go @@ -248,25 +248,39 @@ func (m *Model) BuildMatcherFromDef(mDef *defs.MatcherDef) (matcher.IMatcher, er func (m *Model) AddRule(rule []string) (bool, error) { key := rule[0] sec := key[0] + var added bool + var err error switch sec { case 'p': - return m.addPolicyRule(key, rule[1:]) + added, err = m.addPolicyRule(key, rule[1:]) case 'g': - return m.addRoleRule(key, rule[1:]) + added, err = m.addRoleRule(key, rule[1:]) + default: + return false, fmt.Errorf(str.ERR_POLICY_NOT_FOUND, key) + } + if added { + m.Emitter.EmitEvent(RULE_ADDED, rule) } - return false, fmt.Errorf(str.ERR_POLICY_NOT_FOUND, key) + return added, err } func (m *Model) RemoveRule(rule []string) (bool, error) { key := rule[0] sec := key[0] + var removed bool + var err error switch sec { case 'p': - return m.removePolicyRule(key, rule[1:]) + removed, err = m.removePolicyRule(key, rule[1:]) case 'g': - return m.removeRoleRule(key, rule[1:]) + removed, err = m.removeRoleRule(key, rule[1:]) + default: + return false, fmt.Errorf(str.ERR_POLICY_NOT_FOUND, key) + } + if removed { + m.Emitter.EmitEvent(RULE_REMOVED, rule) } - return false, fmt.Errorf(str.ERR_POLICY_NOT_FOUND, key) + return removed, err } func (m *Model) addPolicyRule(key string, rule []string) (bool, error) { diff --git a/storage/controller.go b/storage/controller.go index 705176e..2c9e208 100644 --- a/storage/controller.go +++ b/storage/controller.go @@ -105,7 +105,10 @@ func (sc *StorageController) addOp(opc opcode, rule []string) { if sc.autosave { sc.wait-- if sc.wait <= 0 { - sc.Flush() + err := sc.Flush() + if err != nil { + panic(err) + } } } }