diff --git a/src/xrpc/README.md b/src/xrpc/README.md index ab97312..7c1e282 100644 --- a/src/xrpc/README.md +++ b/src/xrpc/README.md @@ -53,9 +53,8 @@ Add Import Paths: `$GOPATH`/src ## Best Practices - .proto [style](https://protobuf.dev/programming-guides/style/#message-field-names) - - service name: `AppMessages` PascalCase - - method name: `SendMessage` PascalCase - - field Name: `string parse_mode = 1;` snake_case + - service name, rpc name, message name: `AppMessages` PascalCase + - message field name: `string parse_mode = 1;` snake_case - urls: - website url: `/send-message` kebab-case - grpc gateway url: inner api: `/inner/send_message` snake_case @@ -96,7 +95,7 @@ message SendResponse { ## Generate code ``` -generate-go.sh +generate-pb.sh ``` ## RPC Server diff --git a/src/xrpc/proto/example.proto b/src/xrpc/api/example.proto similarity index 100% rename from src/xrpc/proto/example.proto rename to src/xrpc/api/example.proto diff --git a/src/xrpc/generate-go.sh b/src/xrpc/generate-go.sh deleted file mode 100644 index 479507b..0000000 --- a/src/xrpc/generate-go.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -ex - -cd proto -protoc -I . -I `go env GOPATH`/src --go_out=../testdata --go-grpc_out=../testdata --grpc-gateway_out=../testdata *.proto diff --git a/src/xrpc/generate-pb.sh b/src/xrpc/generate-pb.sh new file mode 100644 index 0000000..953c42c --- /dev/null +++ b/src/xrpc/generate-pb.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -ex + +BASEPATH=$(pwd) +GOPATH=$(go env GOPATH) +OUT=$BASEPATH +repos=$(find . -name "*.proto") +for FILE in $repos; do + protoc -I . -I `go env GOPATH`/src --go_out=paths=source_relative:. --go-grpc_out=paths=source_relative:. --grpc-gateway_out=paths=source_relative:. $FILE +done diff --git a/src/xrpc/testdata/order.pb.go b/src/xrpc/testdata/order.pb.go deleted file mode 100644 index add0449..0000000 --- a/src/xrpc/testdata/order.pb.go +++ /dev/null @@ -1,247 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.30.0 -// protoc v4.23.0 -// source: order.proto - -package testdata - -import ( - _ "google.golang.org/genproto/googleapis/api/annotations" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ReleaseRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OrderNumber string `protobuf:"bytes,1,opt,name=order_number,json=orderNumber,proto3" json:"order_number,omitempty"` - Requester string `protobuf:"bytes,2,opt,name=requester,proto3" json:"requester,omitempty"` - Approver string `protobuf:"bytes,3,opt,name=approver,proto3" json:"approver,omitempty"` -} - -func (x *ReleaseRequest) Reset() { - *x = ReleaseRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_order_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReleaseRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReleaseRequest) ProtoMessage() {} - -func (x *ReleaseRequest) ProtoReflect() protoreflect.Message { - mi := &file_order_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReleaseRequest.ProtoReflect.Descriptor instead. -func (*ReleaseRequest) Descriptor() ([]byte, []int) { - return file_order_proto_rawDescGZIP(), []int{0} -} - -func (x *ReleaseRequest) GetOrderNumber() string { - if x != nil { - return x.OrderNumber - } - return "" -} - -func (x *ReleaseRequest) GetRequester() string { - if x != nil { - return x.Requester - } - return "" -} - -func (x *ReleaseRequest) GetApprover() string { - if x != nil { - return x.Approver - } - return "" -} - -type ReleaseResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` -} - -func (x *ReleaseResponse) Reset() { - *x = ReleaseResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_order_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReleaseResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReleaseResponse) ProtoMessage() {} - -func (x *ReleaseResponse) ProtoReflect() protoreflect.Message { - mi := &file_order_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReleaseResponse.ProtoReflect.Descriptor instead. -func (*ReleaseResponse) Descriptor() ([]byte, []int) { - return file_order_proto_rawDescGZIP(), []int{1} -} - -func (x *ReleaseResponse) GetCode() int32 { - if x != nil { - return x.Code - } - return 0 -} - -func (x *ReleaseResponse) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -var File_order_proto protoreflect.FileDescriptor - -var file_order_proto_rawDesc = []byte{ - 0x0a, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x74, - 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x70, 0x70, 0x72, - 0x6f, 0x76, 0x65, 0x72, 0x22, 0x3f, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x75, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x6c, - 0x0a, 0x11, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x12, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, - 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x42, 0x0d, 0x5a, 0x0b, - 0x2e, 0x2f, 0x3b, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var ( - file_order_proto_rawDescOnce sync.Once - file_order_proto_rawDescData = file_order_proto_rawDesc -) - -func file_order_proto_rawDescGZIP() []byte { - file_order_proto_rawDescOnce.Do(func() { - file_order_proto_rawDescData = protoimpl.X.CompressGZIP(file_order_proto_rawDescData) - }) - return file_order_proto_rawDescData -} - -var file_order_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_order_proto_goTypes = []interface{}{ - (*ReleaseRequest)(nil), // 0: testdata.ReleaseRequest - (*ReleaseResponse)(nil), // 1: testdata.ReleaseResponse -} -var file_order_proto_depIdxs = []int32{ - 0, // 0: testdata.Order.RequestForRelease:input_type -> testdata.ReleaseRequest - 1, // 1: testdata.Order.RequestForRelease:output_type -> testdata.ReleaseResponse - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_order_proto_init() } -func file_order_proto_init() { - if File_order_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_order_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReleaseRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_order_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReleaseResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_order_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_order_proto_goTypes, - DependencyIndexes: file_order_proto_depIdxs, - MessageInfos: file_order_proto_msgTypes, - }.Build() - File_order_proto = out.File - file_order_proto_rawDesc = nil - file_order_proto_goTypes = nil - file_order_proto_depIdxs = nil -} diff --git a/src/xrpc/testdata/order.pb.gw.go b/src/xrpc/testdata/order.pb.gw.go deleted file mode 100644 index 4e0effa..0000000 --- a/src/xrpc/testdata/order.pb.gw.go +++ /dev/null @@ -1,171 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: order.proto - -/* -Package testdata is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package testdata - -import ( - "context" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = metadata.Join - -func request_Order_RequestForRelease_0(ctx context.Context, marshaler runtime.Marshaler, client OrderClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ReleaseRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.RequestForRelease(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Order_RequestForRelease_0(ctx context.Context, marshaler runtime.Marshaler, server OrderServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ReleaseRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.RequestForRelease(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterOrderHandlerServer registers the http handlers for service Order to "mux". -// UnaryRPC :call OrderServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterOrderHandlerFromEndpoint instead. -func RegisterOrderHandlerServer(ctx context.Context, mux *runtime.ServeMux, server OrderServer) error { - - mux.Handle("POST", pattern_Order_RequestForRelease_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/testdata.Order/RequestForRelease", runtime.WithHTTPPathPattern("/v1/request_for_release")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Order_RequestForRelease_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_Order_RequestForRelease_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterOrderHandlerFromEndpoint is same as RegisterOrderHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterOrderHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.DialContext(ctx, endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterOrderHandler(ctx, mux, conn) -} - -// RegisterOrderHandler registers the http handlers for service Order to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterOrderHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterOrderHandlerClient(ctx, mux, NewOrderClient(conn)) -} - -// RegisterOrderHandlerClient registers the http handlers for service Order -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "OrderClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "OrderClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "OrderClient" to call the correct interceptors. -func RegisterOrderHandlerClient(ctx context.Context, mux *runtime.ServeMux, client OrderClient) error { - - mux.Handle("POST", pattern_Order_RequestForRelease_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/testdata.Order/RequestForRelease", runtime.WithHTTPPathPattern("/v1/request_for_release")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Order_RequestForRelease_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_Order_RequestForRelease_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Order_RequestForRelease_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "request_for_release"}, "")) -) - -var ( - forward_Order_RequestForRelease_0 = runtime.ForwardResponseMessage -) diff --git a/src/xrpc/testdata/order_grpc.pb.go b/src/xrpc/testdata/order_grpc.pb.go deleted file mode 100644 index 749b836..0000000 --- a/src/xrpc/testdata/order_grpc.pb.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.0 -// source: order.proto - -package testdata - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - Order_RequestForRelease_FullMethodName = "/testdata.Order/RequestForRelease" -) - -// OrderClient is the client API for Order service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type OrderClient interface { - RequestForRelease(ctx context.Context, in *ReleaseRequest, opts ...grpc.CallOption) (*ReleaseResponse, error) -} - -type orderClient struct { - cc grpc.ClientConnInterface -} - -func NewOrderClient(cc grpc.ClientConnInterface) OrderClient { - return &orderClient{cc} -} - -func (c *orderClient) RequestForRelease(ctx context.Context, in *ReleaseRequest, opts ...grpc.CallOption) (*ReleaseResponse, error) { - out := new(ReleaseResponse) - err := c.cc.Invoke(ctx, Order_RequestForRelease_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// OrderServer is the server API for Order service. -// All implementations must embed UnimplementedOrderServer -// for forward compatibility -type OrderServer interface { - RequestForRelease(context.Context, *ReleaseRequest) (*ReleaseResponse, error) - mustEmbedUnimplementedOrderServer() -} - -// UnimplementedOrderServer must be embedded to have forward compatible implementations. -type UnimplementedOrderServer struct { -} - -func (UnimplementedOrderServer) RequestForRelease(context.Context, *ReleaseRequest) (*ReleaseResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RequestForRelease not implemented") -} -func (UnimplementedOrderServer) mustEmbedUnimplementedOrderServer() {} - -// UnsafeOrderServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to OrderServer will -// result in compilation errors. -type UnsafeOrderServer interface { - mustEmbedUnimplementedOrderServer() -} - -func RegisterOrderServer(s grpc.ServiceRegistrar, srv OrderServer) { - s.RegisterService(&Order_ServiceDesc, srv) -} - -func _Order_RequestForRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReleaseRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(OrderServer).RequestForRelease(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Order_RequestForRelease_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OrderServer).RequestForRelease(ctx, req.(*ReleaseRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// Order_ServiceDesc is the grpc.ServiceDesc for Order service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var Order_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "testdata.Order", - HandlerType: (*OrderServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "RequestForRelease", - Handler: _Order_RequestForRelease_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "order.proto", -}