mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-07-06 06:04:08 +00:00
Update vendor (#1265)
This commit is contained in:
78
vendor/github.com/wiggin77/cfg/srcmap.go
generated
vendored
Normal file
78
vendor/github.com/wiggin77/cfg/srcmap.go
generated
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
package cfg
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// SrcMap is a configuration `Source` backed by a simple map.
|
||||
type SrcMap struct {
|
||||
AbstractSourceMonitor
|
||||
m map[string]string
|
||||
lm time.Time
|
||||
}
|
||||
|
||||
// NewSrcMap creates an empty `SrcMap`.
|
||||
func NewSrcMap() *SrcMap {
|
||||
sm := &SrcMap{}
|
||||
sm.m = make(map[string]string)
|
||||
sm.lm = time.Now()
|
||||
sm.freq = time.Minute
|
||||
return sm
|
||||
}
|
||||
|
||||
// NewSrcMapFromMap creates a `SrcMap` containing a copy of the
|
||||
// specified map.
|
||||
func NewSrcMapFromMap(mapIn map[string]string) *SrcMap {
|
||||
sm := NewSrcMap()
|
||||
sm.PutAll(mapIn)
|
||||
return sm
|
||||
}
|
||||
|
||||
// Put inserts or updates a value in the `SrcMap`.
|
||||
func (sm *SrcMap) Put(key string, val string) {
|
||||
sm.mutex.Lock()
|
||||
sm.m[key] = val
|
||||
sm.lm = time.Now()
|
||||
sm.mutex.Unlock()
|
||||
}
|
||||
|
||||
// PutAll inserts a copy of `mapIn` into the `SrcMap`
|
||||
func (sm *SrcMap) PutAll(mapIn map[string]string) {
|
||||
sm.mutex.Lock()
|
||||
defer sm.mutex.Unlock()
|
||||
|
||||
for k, v := range mapIn {
|
||||
sm.m[k] = v
|
||||
}
|
||||
sm.lm = time.Now()
|
||||
}
|
||||
|
||||
// GetProps fetches all the properties from a source and returns
|
||||
// them as a map.
|
||||
func (sm *SrcMap) GetProps() (m map[string]string, err error) {
|
||||
sm.mutex.RLock()
|
||||
m = sm.m
|
||||
sm.mutex.RUnlock()
|
||||
return
|
||||
}
|
||||
|
||||
// GetLastModified returns the time of the latest modification to any
|
||||
// property value within the source. If a source does not support
|
||||
// modifying properties at runtime then the zero value for `Time`
|
||||
// should be returned to ensure reload events are not generated.
|
||||
func (sm *SrcMap) GetLastModified() (last time.Time, err error) {
|
||||
sm.mutex.RLock()
|
||||
last = sm.lm
|
||||
sm.mutex.RUnlock()
|
||||
return
|
||||
}
|
||||
|
||||
// GetMonitorFreq returns the frequency as a `time.Duration` between
|
||||
// checks for changes to this config source. Defaults to 1 minute
|
||||
// unless changed with `SetMonitorFreq`.
|
||||
func (sm *SrcMap) GetMonitorFreq() (freq time.Duration) {
|
||||
sm.mutex.RLock()
|
||||
freq = sm.freq
|
||||
sm.mutex.RUnlock()
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user