🎉: init project
This commit is contained in:
43
internal/invoke/resolve_v2.go
Normal file
43
internal/invoke/resolve_v2.go
Normal file
@ -0,0 +1,43 @@
|
||||
package invoke
|
||||
|
||||
import (
|
||||
"github.com/sirupsen/logrus"
|
||||
"sync"
|
||||
|
||||
"google.golang.org/grpc/resolver"
|
||||
)
|
||||
|
||||
type Builder struct{}
|
||||
|
||||
func (b *Builder) Scheme() string {
|
||||
return SCHEME
|
||||
}
|
||||
|
||||
func (b *Builder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {
|
||||
cr := &Resolver{
|
||||
cc: cc,
|
||||
target: target,
|
||||
}
|
||||
|
||||
cr.ResolveNow(resolver.ResolveNowOptions{})
|
||||
|
||||
return cr, nil
|
||||
}
|
||||
|
||||
type Resolver struct {
|
||||
target resolver.Target
|
||||
cc resolver.ClientConn
|
||||
}
|
||||
|
||||
func (r *Resolver) ResolveNow(o resolver.ResolveNowOptions) {
|
||||
logrus.Tracef("resolve_v2 ResolveNow => target: %s, %v", r.target.URL.Host, ips)
|
||||
_ = r.cc.UpdateState(ips[r.target.URL.Host])
|
||||
}
|
||||
|
||||
func (cr *Resolver) Close() {}
|
||||
|
||||
var (
|
||||
locker = &sync.Mutex{}
|
||||
myBuilder = &Builder{}
|
||||
ips = map[string]resolver.State{}
|
||||
)
|
Reference in New Issue
Block a user