mirror of
https://github.com/spf13/viper
synced 2024-12-24 20:47:02 +00:00
WatchRemoteConfigOnChannel
This commit is contained in:
parent
4dddf7c62e
commit
18f781b94a
1 changed files with 16 additions and 8 deletions
24
viper.go
24
viper.go
|
@ -162,7 +162,8 @@ type Viper struct {
|
||||||
aliases map[string]string
|
aliases map[string]string
|
||||||
typeByDefValue bool
|
typeByDefValue bool
|
||||||
|
|
||||||
onConfigChange func(fsnotify.Event)
|
onConfigChange func(fsnotify.Event)
|
||||||
|
onRemoteConfigChange func()
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns an initialized Viper instance.
|
// New returns an initialized Viper instance.
|
||||||
|
@ -237,6 +238,11 @@ func (v *Viper) OnConfigChange(run func(in fsnotify.Event)) {
|
||||||
v.onConfigChange = run
|
v.onConfigChange = run
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func OnRemoteConfigChange(run func()) { v.OnRemoteConfigChange(run) }
|
||||||
|
func (v *Viper) OnRemoteConfigChange(run func()) {
|
||||||
|
v.onRemoteConfigChange = run
|
||||||
|
}
|
||||||
|
|
||||||
func WatchConfig() { v.WatchConfig() }
|
func WatchConfig() { v.WatchConfig() }
|
||||||
func (v *Viper) WatchConfig() {
|
func (v *Viper) WatchConfig() {
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -1286,6 +1292,7 @@ func (v *Viper) WatchRemoteConfig() error {
|
||||||
return v.watchKeyValueConfig()
|
return v.watchKeyValueConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WatchRemoteConfigOnChannel() error { return v.watchKeyValueConfigOnChannel() }
|
||||||
func (v *Viper) WatchRemoteConfigOnChannel() error {
|
func (v *Viper) WatchRemoteConfigOnChannel() error {
|
||||||
return v.watchKeyValueConfigOnChannel()
|
return v.watchKeyValueConfigOnChannel()
|
||||||
}
|
}
|
||||||
|
@ -1338,13 +1345,14 @@ func (v *Viper) watchKeyValueConfigOnChannel() error {
|
||||||
for _, rp := range v.remoteProviders {
|
for _, rp := range v.remoteProviders {
|
||||||
respc, _ := RemoteConfig.WatchChannel(rp)
|
respc, _ := RemoteConfig.WatchChannel(rp)
|
||||||
//Todo: Add quit channel
|
//Todo: Add quit channel
|
||||||
go func(rc <-chan *RemoteResponse) {
|
|
||||||
for {
|
b := <-respc
|
||||||
b := <-rc
|
reader := bytes.NewReader(b.Value)
|
||||||
reader := bytes.NewReader(b.Value)
|
v.unmarshalReader(reader, v.kvstore)
|
||||||
v.unmarshalReader(reader, v.kvstore)
|
|
||||||
}
|
if v.onRemoteConfigChange != nil {
|
||||||
}(respc)
|
v.onRemoteConfigChange()
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return RemoteConfigError("No Files Found")
|
return RemoteConfigError("No Files Found")
|
||||||
|
|
Loading…
Reference in a new issue