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  }