From a5064d59c96eeabd161877bce56d420e8e96d7cc Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Thu, 26 May 2016 17:39:14 -0700 Subject: [PATCH 1/5] Add bidirectional streaming support by interleaving Send() and Recv() calls. --- .../examplepb/a_bit_of_everything.pb.gw.go | 61 ++++++++++++------ examples/examplepb/flow_combination.pb.gw.go | 61 ++++++++++++------ .../gengateway/template.go | 64 ++++++++++++++++++- 3 files changed, 143 insertions(+), 43 deletions(-) diff --git a/examples/examplepb/a_bit_of_everything.pb.gw.go b/examples/examplepb/a_bit_of_everything.pb.gw.go index 1621993de27..41adbcfa480 100644 --- a/examples/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/examplepb/a_bit_of_everything.pb.gw.go @@ -439,35 +439,54 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - for { - var protoReq sub.StringMessage - err = dec.Decode(&protoReq) - if err == io.EOF { - break - } - if err != nil { - grpclog.Printf("Failed to decode request: %v", err) - return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err) + sendErrs := make(chan error, 1) + go func(errs chan<- error) { + for { + var protoReq sub.StringMessage + err = dec.Decode(&protoReq) + if err == nil { + select { + case errs <- err: + default: + } + } + if err == io.EOF { + select { + case errs <- err: + default: + } + return + } + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + select { + case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): + default: + } + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + select { + case errs <- err: + default: + } + } } - if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) - return nil, metadata, err + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + select { + case errs <- err: + default: + } } - } - - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - return nil, metadata, err - } + }(sendErrs) header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - - return stream, metadata, nil - + return stream, metadata, <-sendErrs } func request_ABitOfEverythingService_DeepPathEcho_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/examples/examplepb/flow_combination.pb.gw.go b/examples/examplepb/flow_combination.pb.gw.go index ca2e4a9caa9..83357ee9198 100644 --- a/examples/examplepb/flow_combination.pb.gw.go +++ b/examples/examplepb/flow_combination.pb.gw.go @@ -102,35 +102,54 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - for { - var protoReq EmptyProto - err = dec.Decode(&protoReq) - if err == io.EOF { - break - } - if err != nil { - grpclog.Printf("Failed to decode request: %v", err) - return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err) + sendErrs := make(chan error, 1) + go func(errs chan<- error) { + for { + var protoReq EmptyProto + err = dec.Decode(&protoReq) + if err == nil { + select { + case errs <- err: + default: + } + } + if err == io.EOF { + select { + case errs <- err: + default: + } + return + } + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + select { + case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): + default: + } + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + select { + case errs <- err: + default: + } + } } - if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) - return nil, metadata, err + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + select { + case errs <- err: + default: + } } - } - - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - return nil, metadata, err - } + }(sendErrs) header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - - return stream, metadata, nil - + return stream, metadata, <-sendErrs } func request_FlowCombination_RpcBodyRpc_0(ctx context.Context, marshaler runtime.Marshaler, client FlowCombinationClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/protoc-gen-grpc-gateway/gengateway/template.go b/protoc-gen-grpc-gateway/gengateway/template.go index f9782172b66..f0d48f1636f 100644 --- a/protoc-gen-grpc-gateway/gengateway/template.go +++ b/protoc-gen-grpc-gateway/gengateway/template.go @@ -117,7 +117,9 @@ var _ = utilities.NewDoubleArray `)) handlerTemplate = template.Must(template.New("handler").Parse(` -{{if .Method.GetClientStreaming}} +{{if and .Method.GetClientStreaming .Method.GetServerStreaming}} +{{template "bidi-streaming-request-func" .}} +{{else if .Method.GetClientStreaming}} {{template "client-streaming-request-func" .}} {{else}} {{template "client-rpc-request-func" .}} @@ -234,6 +236,66 @@ var ( {{end}} }`)) + _ = template.Must(handlerTemplate.New("bidi-streaming-request-func").Parse(` +{{template "request-func-signature" .}} { + var metadata runtime.ServerMetadata + stream, err := client.{{.Method.GetName}}(ctx) + if err != nil { + grpclog.Printf("Failed to start streaming: %v", err) + return nil, metadata, err + } + dec := marshaler.NewDecoder(req.Body) + sendErrs := make(chan error, 1) + go func(errs chan<- error) { + for { + var protoReq {{.Method.RequestType.GoType .Method.Service.File.GoPkg.Path}} + err = dec.Decode(&protoReq) + if err == nil { + select { + case errs <- err: + default: + } + } + if err == io.EOF { + select { + case errs <- err: + default: + } + return + } + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + select { + case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): + default: + } + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + select { + case errs <- err: + default: + } + } + } + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + select { + case errs <- err: + default: + } + } + }(sendErrs) + header, err := stream.Header() + if err != nil { + grpclog.Printf("Failed to get header from client: %v", err) + return nil, metadata, err + } + metadata.HeaderMD = header + return stream, metadata, <-sendErrs +} +`)) + trailerTemplate = template.Must(template.New("trailer").Parse(` {{range $svc := .}} // Register{{$svc.GetName}}HandlerFromEndpoint is same as Register{{$svc.GetName}}Handler but From 172570830dbf9bfe8c378aaf05fa88dadc7528a0 Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Tue, 7 Jun 2016 12:38:18 -0700 Subject: [PATCH 2/5] ensure CloseSend is called, exit on errors --- .../examplepb/a_bit_of_everything.pb.gw.go | 20 +++++++++---------- examples/examplepb/flow_combination.pb.gw.go | 20 +++++++++---------- .../gengateway/template.go | 20 +++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/examples/examplepb/a_bit_of_everything.pb.gw.go b/examples/examplepb/a_bit_of_everything.pb.gw.go index 41adbcfa480..e463c0cb11a 100644 --- a/examples/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/examplepb/a_bit_of_everything.pb.gw.go @@ -439,8 +439,13 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - sendErrs := make(chan error, 1) + firstSend := make(chan error, 1) go func(errs chan<- error) { + defer func() { + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() for { var protoReq sub.StringMessage err = dec.Decode(&protoReq) @@ -463,6 +468,7 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): default: } + return } if err = stream.Send(&protoReq); err != nil { grpclog.Printf("Failed to send request: %v", err) @@ -470,23 +476,17 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r case errs <- err: default: } + return } } - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - select { - case errs <- err: - default: - } - } - }(sendErrs) + }(firstSend) header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-sendErrs + return stream, metadata, <-firstSend } func request_ABitOfEverythingService_DeepPathEcho_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/examples/examplepb/flow_combination.pb.gw.go b/examples/examplepb/flow_combination.pb.gw.go index 83357ee9198..78892385a22 100644 --- a/examples/examplepb/flow_combination.pb.gw.go +++ b/examples/examplepb/flow_combination.pb.gw.go @@ -102,8 +102,13 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - sendErrs := make(chan error, 1) + firstSend := make(chan error, 1) go func(errs chan<- error) { + defer func() { + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() for { var protoReq EmptyProto err = dec.Decode(&protoReq) @@ -126,6 +131,7 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): default: } + return } if err = stream.Send(&protoReq); err != nil { grpclog.Printf("Failed to send request: %v", err) @@ -133,23 +139,17 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler case errs <- err: default: } + return } } - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - select { - case errs <- err: - default: - } - } - }(sendErrs) + }(firstSend) header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-sendErrs + return stream, metadata, <-firstSend } func request_FlowCombination_RpcBodyRpc_0(ctx context.Context, marshaler runtime.Marshaler, client FlowCombinationClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/protoc-gen-grpc-gateway/gengateway/template.go b/protoc-gen-grpc-gateway/gengateway/template.go index f0d48f1636f..302c055a03d 100644 --- a/protoc-gen-grpc-gateway/gengateway/template.go +++ b/protoc-gen-grpc-gateway/gengateway/template.go @@ -245,8 +245,13 @@ var ( return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - sendErrs := make(chan error, 1) + firstSend:= make(chan error, 1) go func(errs chan<- error) { + defer func(){ + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() for { var protoReq {{.Method.RequestType.GoType .Method.Service.File.GoPkg.Path}} err = dec.Decode(&protoReq) @@ -269,6 +274,7 @@ var ( case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): default: } + return } if err = stream.Send(&protoReq); err != nil { grpclog.Printf("Failed to send request: %v", err) @@ -276,23 +282,17 @@ var ( case errs <- err: default: } + return } } - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - select { - case errs <- err: - default: - } - } - }(sendErrs) + }(firstSend) header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-sendErrs + return stream, metadata, <-firstSend } `)) From d6f3500466f69e4a5f821724bb926533f845a340 Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Tue, 7 Jun 2016 13:15:58 -0700 Subject: [PATCH 3/5] eliminate confusing errs channel --- .../examplepb/a_bit_of_everything.pb.gw.go | 61 +++++++------------ examples/examplepb/flow_combination.pb.gw.go | 61 +++++++------------ .../gengateway/template.go | 61 +++++++------------ 3 files changed, 66 insertions(+), 117 deletions(-) diff --git a/examples/examplepb/a_bit_of_everything.pb.gw.go b/examples/examplepb/a_bit_of_everything.pb.gw.go index e463c0cb11a..4ef03a4ffc6 100644 --- a/examples/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/examplepb/a_bit_of_everything.pb.gw.go @@ -439,54 +439,37 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - firstSend := make(chan error, 1) - go func(errs chan<- error) { - defer func() { - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - } - }() + handleSend := func() error { + var protoReq sub.StringMessage + err = dec.Decode(&protoReq) + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + return err + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + return err + } + return nil + } + firstResult := handleSend() + go func() { for { - var protoReq sub.StringMessage - err = dec.Decode(&protoReq) - if err == nil { - select { - case errs <- err: - default: - } - } - if err == io.EOF { - select { - case errs <- err: - default: - } - return - } - if err != nil { - grpclog.Printf("Failed to decode request: %v", err) - select { - case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): - default: - } - return - } - if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) - select { - case errs <- err: - default: - } - return + if err := handleSend(); err != nil { + break } } - }(firstSend) + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-firstSend + return stream, metadata, firstResult } func request_ABitOfEverythingService_DeepPathEcho_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/examples/examplepb/flow_combination.pb.gw.go b/examples/examplepb/flow_combination.pb.gw.go index 78892385a22..17f62f34a5e 100644 --- a/examples/examplepb/flow_combination.pb.gw.go +++ b/examples/examplepb/flow_combination.pb.gw.go @@ -102,54 +102,37 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - firstSend := make(chan error, 1) - go func(errs chan<- error) { - defer func() { - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - } - }() + handleSend := func() error { + var protoReq EmptyProto + err = dec.Decode(&protoReq) + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + return err + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + return err + } + return nil + } + firstResult := handleSend() + go func() { for { - var protoReq EmptyProto - err = dec.Decode(&protoReq) - if err == nil { - select { - case errs <- err: - default: - } - } - if err == io.EOF { - select { - case errs <- err: - default: - } - return - } - if err != nil { - grpclog.Printf("Failed to decode request: %v", err) - select { - case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): - default: - } - return - } - if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) - select { - case errs <- err: - default: - } - return + if err := handleSend(); err != nil { + break } } - }(firstSend) + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-firstSend + return stream, metadata, firstResult } func request_FlowCombination_RpcBodyRpc_0(ctx context.Context, marshaler runtime.Marshaler, client FlowCombinationClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/protoc-gen-grpc-gateway/gengateway/template.go b/protoc-gen-grpc-gateway/gengateway/template.go index 302c055a03d..5fdaa52392a 100644 --- a/protoc-gen-grpc-gateway/gengateway/template.go +++ b/protoc-gen-grpc-gateway/gengateway/template.go @@ -245,54 +245,37 @@ var ( return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) - firstSend:= make(chan error, 1) - go func(errs chan<- error) { - defer func(){ - if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) - } - }() + handleSend := func() error { + var protoReq {{.Method.RequestType.GoType .Method.Service.File.GoPkg.Path}} + err = dec.Decode(&protoReq) + if err != nil { + grpclog.Printf("Failed to decode request: %v", err) + return err + } + if err = stream.Send(&protoReq); err != nil { + grpclog.Printf("Failed to send request: %v", err) + return err + } + return nil + } + firstResult := handleSend() + go func() { for { - var protoReq {{.Method.RequestType.GoType .Method.Service.File.GoPkg.Path}} - err = dec.Decode(&protoReq) - if err == nil { - select { - case errs <- err: - default: - } - } - if err == io.EOF { - select { - case errs <- err: - default: - } - return - } - if err != nil { - grpclog.Printf("Failed to decode request: %v", err) - select { - case errs <- grpc.Errorf(codes.InvalidArgument, "%v", err): - default: - } - return - } - if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) - select { - case errs <- err: - default: - } - return + if err := handleSend(); err != nil { + break } } - }(firstSend) + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + }() header, err := stream.Header() if err != nil { grpclog.Printf("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, <-firstSend + return stream, metadata, firstResult } `)) From c6357e815b676b0e15191085a1e8e450322c7fdc Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Sun, 12 Jun 2016 23:45:16 -0700 Subject: [PATCH 4/5] return earlier when first Send fails --- examples/examplepb/a_bit_of_everything.pb.gw.go | 9 +++++++-- examples/examplepb/flow_combination.pb.gw.go | 9 +++++++-- protoc-gen-grpc-gateway/gengateway/template.go | 9 +++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/examples/examplepb/a_bit_of_everything.pb.gw.go b/examples/examplepb/a_bit_of_everything.pb.gw.go index 4ef03a4ffc6..c50f6bfcef7 100644 --- a/examples/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/examplepb/a_bit_of_everything.pb.gw.go @@ -452,7 +452,12 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r } return nil } - firstResult := handleSend() + if err := handleSend(); err != nil { + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + return nil, metadata, err + } go func() { for { if err := handleSend(); err != nil { @@ -469,7 +474,7 @@ func request_ABitOfEverythingService_BulkEcho_0(ctx context.Context, marshaler r return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, firstResult + return stream, metadata, nil } func request_ABitOfEverythingService_DeepPathEcho_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/examples/examplepb/flow_combination.pb.gw.go b/examples/examplepb/flow_combination.pb.gw.go index 17f62f34a5e..9901591b3a4 100644 --- a/examples/examplepb/flow_combination.pb.gw.go +++ b/examples/examplepb/flow_combination.pb.gw.go @@ -115,7 +115,12 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler } return nil } - firstResult := handleSend() + if err := handleSend(); err != nil { + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + return nil, metadata, err + } go func() { for { if err := handleSend(); err != nil { @@ -132,7 +137,7 @@ func request_FlowCombination_StreamEmptyStream_0(ctx context.Context, marshaler return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, firstResult + return stream, metadata, nil } func request_FlowCombination_RpcBodyRpc_0(ctx context.Context, marshaler runtime.Marshaler, client FlowCombinationClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { diff --git a/protoc-gen-grpc-gateway/gengateway/template.go b/protoc-gen-grpc-gateway/gengateway/template.go index 5fdaa52392a..ff34f396584 100644 --- a/protoc-gen-grpc-gateway/gengateway/template.go +++ b/protoc-gen-grpc-gateway/gengateway/template.go @@ -258,7 +258,12 @@ var ( } return nil } - firstResult := handleSend() + if err := handleSend(); err != nil { + if err := stream.CloseSend(); err != nil { + grpclog.Printf("Failed to terminate client stream: %v", err) + } + return nil, metadata, err + } go func() { for { if err := handleSend(); err != nil { @@ -275,7 +280,7 @@ var ( return nil, metadata, err } metadata.HeaderMD = header - return stream, metadata, firstResult + return stream, metadata, nil } `)) From 6e38833c8dbc1a6016f0b7e8d0d286e65ec7677a Mon Sep 17 00:00:00 2001 From: Travis Cline Date: Sun, 12 Jun 2016 23:56:40 -0700 Subject: [PATCH 5/5] run realclean and examples targets with latest proto --- examples/examplepb/a_bit_of_everything.pb.go | 2 ++ examples/examplepb/echo_service.pb.go | 2 ++ examples/examplepb/flow_combination.pb.go | 2 ++ examples/sub/message.pb.go | 2 ++ examples/sub2/message.pb.go | 2 ++ runtime/stream_chunk.pb.go | 2 ++ third_party/googleapis/google/api/annotations.pb.go | 2 ++ third_party/googleapis/google/api/http.pb.go | 2 ++ 8 files changed, 16 insertions(+) diff --git a/examples/examplepb/a_bit_of_everything.pb.go b/examples/examplepb/a_bit_of_everything.pb.go index 6c48370b972..470928b33ca 100644 --- a/examples/examplepb/a_bit_of_everything.pb.go +++ b/examples/examplepb/a_bit_of_everything.pb.go @@ -765,6 +765,8 @@ var _ABitOfEverythingService_serviceDesc = grpc.ServiceDesc{ }, } +func init() { proto.RegisterFile("examples/examplepb/a_bit_of_everything.proto", fileDescriptor1) } + var fileDescriptor1 = []byte{ // 1216 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0x1b, 0x45, diff --git a/examples/examplepb/echo_service.pb.go b/examples/examplepb/echo_service.pb.go index 1eadb59e9d9..68e395dc7fa 100644 --- a/examples/examplepb/echo_service.pb.go +++ b/examples/examplepb/echo_service.pb.go @@ -177,6 +177,8 @@ var _EchoService_serviceDesc = grpc.ServiceDesc{ Streams: []grpc.StreamDesc{}, } +func init() { proto.RegisterFile("examples/examplepb/echo_service.proto", fileDescriptor0) } + var fileDescriptor0 = []byte{ // 233 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x52, 0x4d, 0xad, 0x48, 0xcc, diff --git a/examples/examplepb/flow_combination.pb.go b/examples/examplepb/flow_combination.pb.go index 345f7ed5a8a..a924a96dc04 100644 --- a/examples/examplepb/flow_combination.pb.go +++ b/examples/examplepb/flow_combination.pb.go @@ -632,6 +632,8 @@ var _FlowCombination_serviceDesc = grpc.ServiceDesc{ }, } +func init() { proto.RegisterFile("examples/examplepb/flow_combination.proto", fileDescriptor2) } + var fileDescriptor2 = []byte{ // 658 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x96, 0xbf, 0x6f, 0xd3, 0x40, diff --git a/examples/sub/message.pb.go b/examples/sub/message.pb.go index dc117712bb7..8ac5568bbf0 100644 --- a/examples/sub/message.pb.go +++ b/examples/sub/message.pb.go @@ -49,6 +49,8 @@ func init() { proto.RegisterType((*StringMessage)(nil), "gengo.grpc.gateway.examples.sub.StringMessage") } +func init() { proto.RegisterFile("examples/sub/message.proto", fileDescriptor0) } + var fileDescriptor0 = []byte{ // 115 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0x4a, 0xad, 0x48, 0xcc, diff --git a/examples/sub2/message.pb.go b/examples/sub2/message.pb.go index 20e67f637db..8f6f432b49a 100644 --- a/examples/sub2/message.pb.go +++ b/examples/sub2/message.pb.go @@ -41,6 +41,8 @@ func init() { proto.RegisterType((*IdMessage)(nil), "sub2.IdMessage") } +func init() { proto.RegisterFile("examples/sub2/message.proto", fileDescriptor0) } + var fileDescriptor0 = []byte{ // 124 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xad, 0x48, 0xcc, diff --git a/runtime/stream_chunk.pb.go b/runtime/stream_chunk.pb.go index f45504e2291..2905054a3a0 100644 --- a/runtime/stream_chunk.pb.go +++ b/runtime/stream_chunk.pb.go @@ -44,6 +44,8 @@ func init() { proto.RegisterType((*StreamError)(nil), "gengo.grpc.gateway.runtime.StreamError") } +func init() { proto.RegisterFile("runtime/stream_chunk.proto", fileDescriptor0) } + var fileDescriptor0 = []byte{ // 175 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x34, 0x8e, 0xbd, 0x0e, 0x82, 0x30, diff --git a/third_party/googleapis/google/api/annotations.pb.go b/third_party/googleapis/google/api/annotations.pb.go index 21fca4856a2..f051b70b873 100644 --- a/third_party/googleapis/google/api/annotations.pb.go +++ b/third_party/googleapis/google/api/annotations.pb.go @@ -43,6 +43,8 @@ func init() { proto.RegisterExtension(E_Http) } +func init() { proto.RegisterFile("google/api/annotations.proto", fileDescriptor0) } + var fileDescriptor0 = []byte{ // 167 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xcf, 0xcf, 0x4f, diff --git a/third_party/googleapis/google/api/http.pb.go b/third_party/googleapis/google/api/http.pb.go index 022102dd569..d340935a293 100644 --- a/third_party/googleapis/google/api/http.pb.go +++ b/third_party/googleapis/google/api/http.pb.go @@ -335,6 +335,8 @@ func init() { proto.RegisterType((*CustomHttpPattern)(nil), "google.api.CustomHttpPattern") } +func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor1) } + var fileDescriptor1 = []byte{ // 277 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x64, 0x51, 0xbd, 0x6a, 0xf3, 0x40,