OSDN Git Service

delete miner
[bytom/vapor.git] / vendor / github.com / go-kit / kit / sd / zk / registrar.go
1 package zk
2
3 import "github.com/go-kit/kit/log"
4
5 // Registrar registers service instance liveness information to ZooKeeper.
6 type Registrar struct {
7         client  Client
8         service Service
9         logger  log.Logger
10 }
11
12 // Service holds the root path, service name and instance identifying data you
13 // want to publish to ZooKeeper.
14 type Service struct {
15         Path string // discovery namespace, example: /myorganization/myplatform/
16         Name string // service name, example: addscv
17         Data []byte // instance data to store for discovery, example: 10.0.2.10:80
18         node string // Client will record the ephemeral node name so we can deregister
19 }
20
21 // NewRegistrar returns a ZooKeeper Registrar acting on the provided catalog
22 // registration.
23 func NewRegistrar(client Client, service Service, logger log.Logger) *Registrar {
24         return &Registrar{
25                 client:  client,
26                 service: service,
27                 logger: log.With(logger,
28                         "service", service.Name,
29                         "path", service.Path,
30                         "data", string(service.Data),
31                 ),
32         }
33 }
34
35 // Register implements sd.Registrar interface.
36 func (r *Registrar) Register() {
37         if err := r.client.Register(&r.service); err != nil {
38                 r.logger.Log("err", err)
39         } else {
40                 r.logger.Log("action", "register")
41         }
42 }
43
44 // Deregister implements sd.Registrar interface.
45 func (r *Registrar) Deregister() {
46         if err := r.client.Deregister(&r.service); err != nil {
47                 r.logger.Log("err", err)
48         } else {
49                 r.logger.Log("action", "deregister")
50         }
51 }