From e8a67492a6c75c6a8d5c502f76ab24245023dc96 Mon Sep 17 00:00:00 2001 From: cyprinus Date: Sun, 4 Jun 2023 11:13:23 +0800 Subject: [PATCH] Implement remote watch register. --- register.go | 2 +- viper.go | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/register.go b/register.go index 2e8a158..0f2066e 100644 --- a/register.go +++ b/register.go @@ -5,7 +5,7 @@ type RegisteredConfig struct { CanBeNil bool OnUpdate func(e *Event) OnUpdateFailed func(e *Event) - Schema *interface{} + Schema interface{} Validator func(interface{}) bool } diff --git a/viper.go b/viper.go index bb8e3c5..31df59d 100644 --- a/viper.go +++ b/viper.go @@ -245,6 +245,7 @@ func New() *Viper { v.aliases = make(map[string]string) v.typeByDefValue = false v.logger = jwwLogger{} + v.registered = make(map[string]RegisteredConfig) v.resetEncoding() @@ -1997,8 +1998,10 @@ func (v *Viper) watchKeyValueConfigOnChannel() error { go func(rc <-chan *RemoteResponse) { for { b := <-rc + tempViper := New() reader := bytes.NewReader(b.Value) - v.unmarshalReader(reader, v.kvstore) + tempViper.unmarshalReader(reader, tempViper.kvstore) + v.updateRegisteredConfig(tempViper) } }(respc) return nil