1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package discov
- import (
- "github.com/tal-tech/go-zero/core/discov/internal"
- "github.com/tal-tech/go-zero/core/logx"
- )
- type (
- Facade struct {
- endpoints []string
- registry *internal.Registry
- }
- FacadeListener interface {
- OnAdd(key, val string)
- OnDelete(key string)
- }
- )
- func NewFacade(endpoints []string) Facade {
- return Facade{
- endpoints: endpoints,
- registry: internal.GetRegistry(),
- }
- }
- func (f Facade) Client() internal.EtcdClient {
- conn, err := f.registry.GetConn(f.endpoints)
- logx.Must(err)
- return conn
- }
- func (f Facade) Monitor(key string, l FacadeListener) {
- f.registry.Monitor(f.endpoints, key, listenerAdapter{l})
- }
- type listenerAdapter struct {
- l FacadeListener
- }
- func (la listenerAdapter) OnAdd(kv internal.KV) {
- la.l.OnAdd(kv.Key, kv.Val)
- }
- func (la listenerAdapter) OnDelete(kv internal.KV) {
- la.l.OnDelete(kv.Key)
- }
|