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  }