parent
55cf83062f
commit
fdce5f0746
@ -1,24 +1,37 @@ |
||||
package env |
||||
|
||||
import ( |
||||
"context" |
||||
|
||||
"github.com/go-kratos/kratos/v2/config" |
||||
) |
||||
|
||||
type watcher struct { |
||||
exit chan struct{} |
||||
|
||||
ctx context.Context |
||||
cancel context.CancelFunc |
||||
} |
||||
|
||||
var _ config.Watcher = (*watcher)(nil) |
||||
|
||||
func NewWatcher() (config.Watcher, error) { |
||||
return &watcher{exit: make(chan struct{})}, nil |
||||
ctx, cancel := context.WithCancel(context.Background()) |
||||
return &watcher{exit: make(chan struct{}), ctx: ctx, cancel: cancel}, nil |
||||
} |
||||
|
||||
// Next will be blocked until the Stop method is called
|
||||
func (w *watcher) Next() ([]*config.KeyValue, error) { |
||||
<-w.exit |
||||
return nil, nil |
||||
select { |
||||
case <-w.ctx.Done(): |
||||
return nil, w.ctx.Err() |
||||
case <-w.exit: |
||||
return nil, nil |
||||
} |
||||
} |
||||
|
||||
func (w *watcher) Stop() error { |
||||
close(w.exit) |
||||
w.cancel() |
||||
return nil |
||||
} |
||||
|
Loading…
Reference in new issue