gitee.com/h79/goutils@v1.22.10/discovery/etcd/base.go (about) 1 package etcd 2 3 import ( 4 "context" 5 "errors" 6 "gitee.com/h79/goutils/discovery/config" 7 "gitee.com/h79/goutils/discovery/service" 8 clientv3 "go.etcd.io/etcd/client/v3" 9 "time" 10 ) 11 12 type Base struct { 13 client *clientv3.Client 14 watcher *Watcher 15 } 16 17 func NewClient3(eps *config.EndPoints, timeout int) (*clientv3.Client, error) { 18 19 config := clientv3.Config{ 20 Endpoints: eps.Servers.Array(), 21 DialTimeout: time.Duration(timeout) * time.Second, 22 } 23 return clientv3.New(config) 24 } 25 26 // Set 27 // Config interface 28 func (base *Base) Set(data service.Data) error { 29 if base.client == nil { 30 return errors.New("etcd: set failure, because client is nil") 31 } 32 _, err := base.client.Put(context.Background(), data.ToKey(), data.Value) 33 return err 34 } 35 36 // Get 37 // Config interface 38 func (base *Base) Get(key service.Key) ([]*service.Data, error) { 39 if base.client == nil { 40 return nil, errors.New("etcd: get failure, because client is nil") 41 } 42 _, err := base.client.Get(context.Background(), key.ToKey(), clientv3.WithPrefix()) 43 if err != nil { 44 return nil, err 45 } 46 return nil, nil 47 } 48 49 func (base *Base) AttachWatcher(watcher *Watcher) { 50 base.watcher = watcher 51 }