1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-04-11 11:42:10 +02:00
kratos/config/env/watcher.go
jessetang 2a65502be2
style(config): code style tweaks and abstracts some methods (#2465)
* style(config): code specification tweaks and abstracts some methods

* optimize

* modify func location
2022-11-02 18:15:33 +08:00

31 lines
560 B
Go

package env
import (
"context"
"github.com/go-kratos/kratos/v2/config"
)
var _ config.Watcher = (*watcher)(nil)
type watcher struct {
ctx context.Context
cancel context.CancelFunc
}
func NewWatcher() (config.Watcher, error) {
ctx, cancel := context.WithCancel(context.Background())
return &watcher{ctx: ctx, cancel: cancel}, nil
}
// Next will be blocked until the Stop method is called
func (w *watcher) Next() ([]*config.KeyValue, error) {
<-w.ctx.Done()
return nil, w.ctx.Err()
}
func (w *watcher) Stop() error {
w.cancel()
return nil
}