mirror of
https://github.com/safing/portbase
synced 2025-04-20 01:19:08 +00:00
32 lines
788 B
Go
32 lines
788 B
Go
package config
|
|
|
|
import (
|
|
"github.com/tevino/abool"
|
|
)
|
|
|
|
// ValidityFlag is a flag that signifies if the configuration has been changed. It is not safe for concurrent use.
|
|
type ValidityFlag struct {
|
|
flag *abool.AtomicBool
|
|
}
|
|
|
|
// NewValidityFlag returns a flag that signifies if the configuration has been changed.
|
|
// It always starts out as invalid. Refresh to start with the current value.
|
|
func NewValidityFlag() *ValidityFlag {
|
|
vf := &ValidityFlag{
|
|
flag: abool.New(),
|
|
}
|
|
return vf
|
|
}
|
|
|
|
// IsValid returns if the configuration is still valid.
|
|
func (vf *ValidityFlag) IsValid() bool {
|
|
return vf.flag.IsSet()
|
|
}
|
|
|
|
// Refresh refreshes the flag and makes it reusable.
|
|
func (vf *ValidityFlag) Refresh() {
|
|
validityFlagLock.RLock()
|
|
defer validityFlagLock.RUnlock()
|
|
|
|
vf.flag = validityFlag
|
|
}
|