ultone/internal/invoke/resolve_v2.go

44 lines
830 B
Go
Raw Normal View History

2024-07-11 16:37:26 +08:00
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{}
)