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  }