github.com/safing/portbase@v0.19.5/config/validity.go (about) 1 package config 2 3 import ( 4 "github.com/tevino/abool" 5 ) 6 7 // ValidityFlag is a flag that signifies if the configuration has been changed. It is not safe for concurrent use. 8 type ValidityFlag struct { 9 flag *abool.AtomicBool 10 } 11 12 // NewValidityFlag returns a flag that signifies if the configuration has been changed. 13 // It always starts out as invalid. Refresh to start with the current value. 14 func NewValidityFlag() *ValidityFlag { 15 vf := &ValidityFlag{ 16 flag: abool.New(), 17 } 18 return vf 19 } 20 21 // IsValid returns if the configuration is still valid. 22 func (vf *ValidityFlag) IsValid() bool { 23 return vf.flag.IsSet() 24 } 25 26 // Refresh refreshes the flag and makes it reusable. 27 func (vf *ValidityFlag) Refresh() { 28 validityFlagLock.RLock() 29 defer validityFlagLock.RUnlock() 30 31 vf.flag = validityFlag 32 }