Switch config change notifier to event hooking

This commit is contained in:
Daniel 2019-10-09 16:36:26 +02:00
parent 21264f4d1f
commit f4d19ee757
2 changed files with 8 additions and 16 deletions

View file

@ -10,7 +10,12 @@ import (
"github.com/safing/portmaster/core/structure" "github.com/safing/portmaster/core/structure"
) )
const (
configChangeEvent = "config change"
)
var ( var (
module *modules.Module
dataRoot *utils.DirStructure dataRoot *utils.DirStructure
) )
@ -22,7 +27,8 @@ func SetDataRoot(root *utils.DirStructure) {
} }
func init() { func init() {
modules.Register("config", prep, start, nil, "base", "database") module = modules.Register("config", prep, start, nil, "base", "database")
module.RegisterEvent(configChangeEvent)
} }
func prep() error { func prep() error {

View file

@ -17,9 +17,6 @@ var (
validityFlag = abool.NewBool(true) validityFlag = abool.NewBool(true)
validityFlagLock sync.RWMutex validityFlagLock sync.RWMutex
changedSignal = make(chan struct{})
changedSignalLock sync.Mutex
) )
func getValidityFlag() *abool.AtomicBool { func getValidityFlag() *abool.AtomicBool {
@ -28,13 +25,6 @@ func getValidityFlag() *abool.AtomicBool {
return validityFlag return validityFlag
} }
// Changed signals if any config option was changed.
func Changed() <-chan struct{} {
changedSignalLock.Lock()
defer changedSignalLock.Unlock()
return changedSignal
}
func signalChanges() { func signalChanges() {
// refetch and save release level and expertise level // refetch and save release level and expertise level
updateReleaseLevel() updateReleaseLevel()
@ -46,11 +36,7 @@ func signalChanges() {
validityFlag = abool.NewBool(true) validityFlag = abool.NewBool(true)
validityFlagLock.Unlock() validityFlagLock.Unlock()
// trigger change signal: signal listeners that a config option was changed. module.TriggerEvent(configChangeEvent, nil)
changedSignalLock.Lock()
close(changedSignal)
changedSignal = make(chan struct{})
changedSignalLock.Unlock()
} }
// setConfig sets the (prioritized) user defined config. // setConfig sets the (prioritized) user defined config.