Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotModified = errors.New("not modified") ErrWaitTimeout = errors.New("wait timeout") ErrConfigNotFound = errors.New("not exists") ErrInvalidConfigKey = errors.New("invalid config key") ErrItemNotFound = errors.New("item not found") ErrNoItemInitializer = errors.New("item initializer not available") )
Functions ¶
This section is empty.
Types ¶
type ConfigChange ¶
type ConfigChange struct {
Type ConfigChangeType
ConfigKey string
OldValue ConfigValue
NewValue ConfigValue
}
ConfigChange defines the change of a ConfigValue.
type ConfigChangeListener ¶
type ConfigChangeListener func(change ConfigChange)
ConfigChangeListener defines the callback function when a ConfigValue is changed.
type ConfigChangeType ¶
type ConfigChangeType = int
ConfigChangeType is an enumeration that represents the different types of config changes that can occur. Possible values are ConfigChangeTypeAdd, ConfigChangeTypeUpdate, and ConfigChangeTypeDelete.
const ( ConfigChangeTypeAdd ConfigChangeType = 1 ConfigChangeTypeUpdate ConfigChangeType = 2 ConfigChangeTypeDelete ConfigChangeType = 3 )
type ConfigManagerIface ¶
type ConfigManagerIface interface {
GetProvider() ConfigProvider
RegisterConfigChangeListener(identifier string, listener ConfigChangeListener)
DeregisterConfigChangeListener(identifier string)
Refresh() RefreshCompleteSignal
RefreshAndWait() error
GetConfig(key string) (ConfigValue, error)
GetConfigItem(key string, itemType ItemType) (ConfigValueItem, error)
GetAllConfig() map[string]ConfigValue
Dump(filepath string) error
}
ConfigManagerIface defines the interface of a Config Manager
type ConfigProvider ¶
type ConfigProvider interface {
// LoadConfig should return a full set of config, or an error if failed. currentConfig is given as a
// 2nd parameter so that the Not-Modified strategy of some provider (if applicable) can be used.
// If the config is not modified at all, (nil, ErrNotModified) as a quick response is allowed.
LoadConfig(currentConfig map[string]ConfigValue) (map[string]ConfigValue, error)
}
ConfigProvider should implement the logic of loading config from somewhere, for example, a local file, or a remote config center
type ConfigSerializer ¶
type ConfigSerializer interface {
Encode(config map[string]ConfigValue) ([]byte, error)
}
ConfigSerializer is an interface that defines methods for serializing and deserializing configuration data.
type ConfigValue ¶
type ConfigValue interface {
DeepCopy() ConfigValue
EqualsTo(ConfigValue) bool
GetItem(itemType ItemType) (ConfigValueItem, error)
GetItemOrDefault(itemType ItemType, defaultItem ConfigValueItem) ConfigValueItem
}
ConfigValue is business related, and config manager don't care about its content.
type ConfigValueItem ¶
type ConfigValueItem interface {
DeepCopy() ConfigValueItem
EqualsTo(ConfigValueItem) bool
}
ConfigValueItem interface represents an item in a configuration value
type ItemInitializer ¶
type ItemInitializer func([]byte) (ConfigValueItem, error)
ItemInitializer defines a function that takes in a byte slice and returns a ConfigValueItem and an error.
type Limiter ¶
type Limiter interface {
Allow() bool
}
Limiter is an interface that defines methods for limiting the rate of actions.
type LogFunc ¶
type LogFunc func(format string, args ...interface{})
LogFunc is used to decouple config manager with logger implementations
type RefreshCompleteSignal ¶
type RefreshCompleteSignal = chan error
RefreshCompleteSignal receives a signal when the refresh is done.