You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
862 B
Go
48 lines
862 B
Go
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)
|
|
}
|