...

Source file src/github.com/go-kit/kit/transport/grpc/_grpc_test/server.go

Documentation: github.com/go-kit/kit/transport/grpc/_grpc_test

     1  package test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/go-kit/kit/endpoint"
     8  	grpctransport "github.com/go-kit/kit/transport/grpc"
     9  	"github.com/go-kit/kit/transport/grpc/_grpc_test/pb"
    10  )
    11  
    12  type service struct{}
    13  
    14  func (service) Test(ctx context.Context, a string, b int64) (context.Context, string, error) {
    15  	return nil, fmt.Sprintf("%s = %d", a, b), nil
    16  }
    17  
    18  func NewService() Service {
    19  	return service{}
    20  }
    21  
    22  func makeTestEndpoint(svc Service) endpoint.Endpoint {
    23  	return func(ctx context.Context, request interface{}) (interface{}, error) {
    24  		req := request.(TestRequest)
    25  		newCtx, v, err := svc.Test(ctx, req.A, req.B)
    26  		return &TestResponse{
    27  			V:   v,
    28  			Ctx: newCtx,
    29  		}, err
    30  	}
    31  }
    32  
    33  type serverBinding struct {
    34  	pb.UnimplementedTestServer
    35  
    36  	test grpctransport.Handler
    37  }
    38  
    39  func (b *serverBinding) Test(ctx context.Context, req *pb.TestRequest) (*pb.TestResponse, error) {
    40  	_, response, err := b.test.ServeGRPC(ctx, req)
    41  	if err != nil {
    42  		return nil, err
    43  	}
    44  	return response.(*pb.TestResponse), nil
    45  }
    46  
    47  func NewBinding(svc Service) *serverBinding {
    48  	return &serverBinding{
    49  		test: grpctransport.NewServer(
    50  			makeTestEndpoint(svc),
    51  			decodeRequest,
    52  			encodeResponse,
    53  			grpctransport.ServerBefore(
    54  				extractCorrelationID,
    55  			),
    56  			grpctransport.ServerBefore(
    57  				displayServerRequestHeaders,
    58  			),
    59  			grpctransport.ServerAfter(
    60  				injectResponseHeader,
    61  				injectResponseTrailer,
    62  				injectConsumedCorrelationID,
    63  			),
    64  			grpctransport.ServerAfter(
    65  				displayServerResponseHeaders,
    66  				displayServerResponseTrailers,
    67  			),
    68  		),
    69  	}
    70  }
    71  

View as plain text