增加转发开关
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type runtimeSettingsCache struct {
|
||||
mu sync.RWMutex
|
||||
settings runtimeSettingsSnapshot
|
||||
}
|
||||
|
||||
func newRuntimeSettingsCache(store *store) (*runtimeSettingsCache, error) {
|
||||
cache := &runtimeSettingsCache{}
|
||||
if err := cache.Reload(store); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return cache, nil
|
||||
}
|
||||
|
||||
func (c *runtimeSettingsCache) Reload(store *store) error {
|
||||
if store == nil {
|
||||
return fmt.Errorf("store is required")
|
||||
}
|
||||
settings, err := store.GetRuntimeSettings()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.mu.Lock()
|
||||
c.settings = settings
|
||||
c.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *runtimeSettingsCache) Snapshot() runtimeSettingsSnapshot {
|
||||
if c == nil {
|
||||
return runtimeSettingsSnapshot{}
|
||||
}
|
||||
c.mu.RLock()
|
||||
defer c.mu.RUnlock()
|
||||
return c.settings
|
||||
}
|
||||
|
||||
func (c *runtimeSettingsCache) AllowEncryptedForwarding() bool {
|
||||
return c.Snapshot().AllowEncryptedForwarding
|
||||
}
|
||||
Reference in New Issue
Block a user