github.com/erda-project/erda-infra@v1.0.9/providers/component-protocol/protobuf/proto-go/cp/client/provider.go (about) 1 // Code generated by protoc-gen-go-client. DO NOT EDIT. 2 // Sources: protocol.proto 3 4 package client 5 6 import ( 7 fmt "fmt" 8 reflect "reflect" 9 strings "strings" 10 11 servicehub "github.com/erda-project/erda-infra/base/servicehub" 12 grpc "github.com/erda-project/erda-infra/pkg/transport/grpc" 13 pb "github.com/erda-project/erda-infra/providers/component-protocol/protobuf/proto-go/cp/pb" 14 grpc1 "google.golang.org/grpc" 15 ) 16 17 var dependencies = []string{ 18 "grpc-client@erda.cp", 19 "grpc-client", 20 } 21 22 // +provider 23 type provider struct { 24 client Client 25 } 26 27 func (p *provider) Init(ctx servicehub.Context) error { 28 var conn grpc.ClientConnInterface 29 for _, dep := range dependencies { 30 c, ok := ctx.Service(dep).(grpc.ClientConnInterface) 31 if ok { 32 conn = c 33 break 34 } 35 } 36 if conn == nil { 37 return fmt.Errorf("not found connector in (%s)", strings.Join(dependencies, ", ")) 38 } 39 p.client = New(conn) 40 return nil 41 } 42 43 var ( 44 clientsType = reflect.TypeOf((*Client)(nil)).Elem() 45 cpserviceClientType = reflect.TypeOf((*pb.CPServiceClient)(nil)).Elem() 46 cpserviceServerType = reflect.TypeOf((*pb.CPServiceServer)(nil)).Elem() 47 ) 48 49 func (p *provider) Provide(ctx servicehub.DependencyContext, args ...interface{}) interface{} { 50 var opts []grpc1.CallOption 51 for _, arg := range args { 52 if opt, ok := arg.(grpc1.CallOption); ok { 53 opts = append(opts, opt) 54 } 55 } 56 switch ctx.Service() { 57 case "erda.cp-client": 58 return p.client 59 case "erda.cp.CPService": 60 return &cpserviceWrapper{client: p.client.CPService(), opts: opts} 61 case "erda.cp.CPService.client": 62 return p.client.CPService() 63 } 64 switch ctx.Type() { 65 case clientsType: 66 return p.client 67 case cpserviceClientType: 68 return p.client.CPService() 69 case cpserviceServerType: 70 return &cpserviceWrapper{client: p.client.CPService(), opts: opts} 71 } 72 return p 73 } 74 75 func init() { 76 servicehub.Register("erda.cp-client", &servicehub.Spec{ 77 Services: []string{ 78 "erda.cp.CPService", 79 "erda.cp.CPService.client", 80 "erda.cp-client", 81 }, 82 Types: []reflect.Type{ 83 clientsType, 84 // client types 85 cpserviceClientType, 86 // server types 87 cpserviceServerType, 88 }, 89 OptionalDependencies: dependencies, 90 Creator: func() servicehub.Provider { 91 return &provider{} 92 }, 93 }) 94 }