50 lines
820 B
Go
50 lines
820 B
Go
|
package paladin
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// EventAdd config add event.
|
||
|
EventAdd EventType = iota
|
||
|
// EventUpdate config update event.
|
||
|
EventUpdate
|
||
|
// EventRemove config remove event.
|
||
|
EventRemove
|
||
|
)
|
||
|
|
||
|
// EventType is config event.
|
||
|
type EventType int
|
||
|
|
||
|
// Event is watch event.
|
||
|
type Event struct {
|
||
|
Event EventType
|
||
|
Key string
|
||
|
Value string
|
||
|
}
|
||
|
|
||
|
// Watcher is config watcher.
|
||
|
type Watcher interface {
|
||
|
WatchEvent(context.Context, ...string) <-chan Event
|
||
|
Close() error
|
||
|
}
|
||
|
|
||
|
// Setter is value setter.
|
||
|
type Setter interface {
|
||
|
Set(string) error
|
||
|
}
|
||
|
|
||
|
// Getter is value getter.
|
||
|
type Getter interface {
|
||
|
// Get a config value by a config key(may be a sven filename).
|
||
|
Get(string) *Value
|
||
|
// GetAll return all config key->value map.
|
||
|
GetAll() *Map
|
||
|
}
|
||
|
|
||
|
// Client is config client.
|
||
|
type Client interface {
|
||
|
Watcher
|
||
|
Getter
|
||
|
}
|