gitee.com/h79/goutils@v1.22.10/discovery/resolver/thrift/builder.go (about) 1 package thrift 2 3 import ( 4 "fmt" 5 "gitee.com/h79/goutils/common/logger" 6 "gitee.com/h79/goutils/discovery/resolver/builder" 7 thriftresolver "gitee.com/h79/goutils/thrift/resolver" 8 ) 9 10 // priBuilder 为thrift桥接 11 type priBuilder struct { 12 myBuilder builder.Builder 13 } 14 15 func Register(builder builder.Builder) { 16 b := &priBuilder{ 17 myBuilder: builder, 18 } 19 // 注册到thrift中 20 thriftresolver.Register(b) 21 } 22 23 // Build grpc interface 24 func (cb *priBuilder) Build(target thriftresolver.Target, cc thriftresolver.Connector) (thriftresolver.Resolver, error) { 25 26 if cc == nil { 27 return nil, fmt.Errorf("[Thrift Build] client connect is nil") 28 } 29 logger.Debug("Thrift: Build target= %+v", target) 30 tar := builder.Target{ 31 Scheme: target.Scheme, 32 Authority: target.Authority, 33 Endpoint: target.Endpoint, 34 } 35 36 cr := &connector{ 37 cc: cc, 38 } 39 40 rr, err := cb.myBuilder.Build(tar, cr) 41 if err != nil { 42 return nil, err 43 } 44 45 rr0 := &priResolver{ 46 myResolver: rr, 47 } 48 49 return rr0, nil 50 } 51 52 // Scheme thrift interface 53 func (cb *priBuilder) Scheme() string { 54 return cb.myBuilder.Scheme() 55 } 56 57 type priResolver struct { 58 myResolver builder.Resolver 59 } 60 61 // ResolveNow thrift.Resolver interface 62 func (cr *priResolver) ResolveNow() { 63 cr.myResolver.ResolveNow() 64 } 65 66 // Close thrift.Resolver interface 67 func (cr *priResolver) Close() { 68 cr.myResolver.Close() 69 }