ultone/internal/invoke/resolve_v2.go
2024-12-27 11:13:28 +08:00

42 lines
718 B
Go

package invoke
import (
"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) {
_ = r.cc.UpdateState(ips[r.target.URL.Host])
}
func (cr *Resolver) Close() {}
var (
locker = &sync.Mutex{}
myBuilder = &Builder{}
ips = map[string]resolver.State{}
)