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  }