diff options
Diffstat (limited to 'src/compiler/go_generator.cc')
-rw-r--r-- | src/compiler/go_generator.cc | 214 |
1 files changed, 112 insertions, 102 deletions
diff --git a/src/compiler/go_generator.cc b/src/compiler/go_generator.cc index 8beae8dccc..3873eae3bb 100644 --- a/src/compiler/go_generator.cc +++ b/src/compiler/go_generator.cc @@ -45,23 +45,19 @@ using namespace std; namespace grpc_go_generator { bool NoStreaming(const google::protobuf::MethodDescriptor* method) { - return !method->client_streaming() && - !method->server_streaming(); + return !method->client_streaming() && !method->server_streaming(); } bool ClientOnlyStreaming(const google::protobuf::MethodDescriptor* method) { - return method->client_streaming() && - !method->server_streaming(); + return method->client_streaming() && !method->server_streaming(); } bool ServerOnlyStreaming(const google::protobuf::MethodDescriptor* method) { - return !method->client_streaming() && - method->server_streaming(); + return !method->client_streaming() && method->server_streaming(); } bool BidiStreaming(const google::protobuf::MethodDescriptor* method) { - return method->client_streaming() && - method->server_streaming(); + return method->client_streaming() && method->server_streaming(); } bool HasClientOnlyStreaming(const google::protobuf::FileDescriptor* file) { @@ -91,20 +87,22 @@ void PrintClientMethodDef(google::protobuf::io::Printer* printer, (*vars)["Response"] = method->output_type()->name(); if (NoStreaming(method)) { printer->Print(*vars, - "\t$Method$(ctx context.Context, in *$Request$, opts ...rpc.CallOption) " - "(*$Response$, error)\n"); + "\t$Method$(ctx context.Context, in *$Request$, opts " + "...rpc.CallOption) " + "(*$Response$, error)\n"); } else if (BidiStreaming(method)) { printer->Print(*vars, - "\t$Method$(ctx context.Context, opts ...rpc.CallOption) " - "($Service$_$Method$Client, error)\n"); + "\t$Method$(ctx context.Context, opts ...rpc.CallOption) " + "($Service$_$Method$Client, error)\n"); } else if (ServerOnlyStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "\t$Method$(ctx context.Context, m *$Request$, opts ...rpc.CallOption) " "($Service$_$Method$Client, error)\n"); } else if (ClientOnlyStreaming(method)) { printer->Print(*vars, - "\t$Method$(ctx context.Context, opts ...rpc.CallOption) " - "($Service$_$Method$Client, error)\n"); + "\t$Method$(ctx context.Context, opts ...rpc.CallOption) " + "($Service$_$Method$Client, error)\n"); } } @@ -116,11 +114,11 @@ void PrintClientMethodImpl(google::protobuf::io::Printer* printer, (*vars)["Response"] = method->output_type()->name(); if (NoStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "func (c *$ServiceStruct$Client) $Method$(ctx context.Context, " "in *$Request$, opts ...rpc.CallOption) (*$Response$, error) {\n"); - printer->Print(*vars, - "\tout := new($Response$)\n"); + printer->Print(*vars, "\tout := new($Response$)\n"); printer->Print(*vars, "\terr := rpc.Invoke(ctx, \"/$Package$$Service$/$Method$\", " "in, out, c.cc, opts...)\n"); @@ -142,20 +140,22 @@ void PrintClientMethodImpl(google::protobuf::io::Printer* printer, "\treturn &$ServiceStruct$$Method$Client{stream}, nil\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Client interface {\n" - "\tSend(*$Request$) error\n" - "\tRecv() (*$Response$, error)\n" - "\trpc.ClientStream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Client struct {\n" - "\trpc.ClientStream\n" - "}\n\n"); + "type $Service$_$Method$Client interface {\n" + "\tSend(*$Request$) error\n" + "\tRecv() (*$Response$, error)\n" + "\trpc.ClientStream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Client struct {\n" + "\trpc.ClientStream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Client) Send(m *$Request$) error {\n" "\treturn x.ClientStream.SendProto(m)\n" "}\n\n"); - printer->Print(*vars, + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Client) Recv() (*$Response$, error) " "{\n" "\tm := new($Response$)\n" @@ -185,15 +185,16 @@ void PrintClientMethodImpl(google::protobuf::io::Printer* printer, "\treturn x, nil\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Client interface {\n" - "\tRecv() (*$Response$, error)\n" - "\trpc.ClientStream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Client struct {\n" - "\trpc.ClientStream\n" - "}\n\n"); + "type $Service$_$Method$Client interface {\n" + "\tRecv() (*$Response$, error)\n" + "\trpc.ClientStream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Client struct {\n" + "\trpc.ClientStream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Client) Recv() (*$Response$, error) " "{\n" "\tm := new($Response$)\n" @@ -215,20 +216,22 @@ void PrintClientMethodImpl(google::protobuf::io::Printer* printer, "\treturn &$ServiceStruct$$Method$Client{stream}, nil\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Client interface {\n" - "\tSend(*$Request$) error\n" - "\tCloseAndRecv() (*$Response$, error)\n" - "\trpc.ClientStream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Client struct {\n" - "\trpc.ClientStream\n" - "}\n\n"); + "type $Service$_$Method$Client interface {\n" + "\tSend(*$Request$) error\n" + "\tCloseAndRecv() (*$Response$, error)\n" + "\trpc.ClientStream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Client struct {\n" + "\trpc.ClientStream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Client) Send(m *$Request$) error {\n" "\treturn x.ClientStream.SendProto(m)\n" "}\n\n"); - printer->Print(*vars, + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Client) CloseAndRecv() (*$Response$, " "error) {\n" "\tif err := x.ClientStream.CloseSend(); err != nil {\n" @@ -264,7 +267,8 @@ void PrintClient(google::protobuf::io::Printer* printer, "type $ServiceStruct$Client struct {\n" "\tcc *rpc.ClientConn\n" "}\n\n"); - printer->Print(*vars, + printer->Print( + *vars, "func New$Service$Client(cc *rpc.ClientConn) $Service$Client {\n" "\treturn &$ServiceStruct$Client{cc}\n" "}\n\n"); @@ -280,17 +284,16 @@ void PrintServerMethodDef(google::protobuf::io::Printer* printer, (*vars)["Request"] = method->input_type()->name(); (*vars)["Response"] = method->output_type()->name(); if (NoStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "\t$Method$(context.Context, *$Request$) (*$Response$, error)\n"); } else if (BidiStreaming(method)) { - printer->Print(*vars, - "\t$Method$($Service$_$Method$Server) error\n"); + printer->Print(*vars, "\t$Method$($Service$_$Method$Server) error\n"); } else if (ServerOnlyStreaming(method)) { printer->Print(*vars, - "\t$Method$(*$Request$, $Service$_$Method$Server) error\n"); + "\t$Method$(*$Request$, $Service$_$Method$Server) error\n"); } else if (ClientOnlyStreaming(method)) { - printer->Print(*vars, - "\t$Method$($Service$_$Method$Server) error\n"); + printer->Print(*vars, "\t$Method$($Service$_$Method$Server) error\n"); } } @@ -301,11 +304,11 @@ void PrintServerHandler(google::protobuf::io::Printer* printer, (*vars)["Request"] = method->input_type()->name(); (*vars)["Response"] = method->output_type()->name(); if (NoStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "func _$Service$_$Method$_Handler(srv interface{}, ctx context.Context," " buf []byte) (proto.Message, error) {\n"); - printer->Print(*vars, - "\tin := new($Request$)\n"); + printer->Print(*vars, "\tin := new($Request$)\n"); printer->Print("\tif err := proto.Unmarshal(buf, in); err != nil {\n"); printer->Print("\t\treturn nil, err\n"); printer->Print("\t}\n"); @@ -317,27 +320,30 @@ void PrintServerHandler(google::protobuf::io::Printer* printer, printer->Print("\treturn out, nil\n"); printer->Print("}\n\n"); } else if (BidiStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "func _$Service$_$Method$_Handler(srv interface{}, stream rpc.Stream) " "error {\n" "\treturn srv.($Service$Server).$Method$(&$ServiceStruct$$Method$Server" "{stream})\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Server interface {\n" - "\tSend(*$Response$) error\n" - "\tRecv() (*$Request$, error)\n" - "\trpc.Stream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Server struct {\n" - "\trpc.Stream\n" - "}\n\n"); + "type $Service$_$Method$Server interface {\n" + "\tSend(*$Response$) error\n" + "\tRecv() (*$Request$, error)\n" + "\trpc.Stream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Server struct {\n" + "\trpc.Stream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Server) Send(m *$Response$) error {\n" "\treturn x.Stream.SendProto(m)\n" "}\n\n"); - printer->Print(*vars, + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Server) Recv() (*$Request$, error) " "{\n" "\tm := new($Request$)\n" @@ -347,7 +353,8 @@ void PrintServerHandler(google::protobuf::io::Printer* printer, "\treturn m, nil\n" "}\n\n"); } else if (ServerOnlyStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "func _$Service$_$Method$_Handler(srv interface{}, stream rpc.Stream) " "error {\n" "\tm := new($Request$)\n" @@ -358,36 +365,39 @@ void PrintServerHandler(google::protobuf::io::Printer* printer, "&$ServiceStruct$$Method$Server{stream})\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Server interface {\n" - "\tSend(*$Response$) error\n" - "\trpc.Stream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Server struct {\n" - "\trpc.Stream\n" - "}\n\n"); + "type $Service$_$Method$Server interface {\n" + "\tSend(*$Response$) error\n" + "\trpc.Stream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Server struct {\n" + "\trpc.Stream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Server) Send(m *$Response$) error {\n" "\treturn x.Stream.SendProto(m)\n" "}\n\n"); } else if (ClientOnlyStreaming(method)) { - printer->Print(*vars, + printer->Print( + *vars, "func _$Service$_$Method$_Handler(srv interface{}, stream rpc.Stream) " "error {\n" "\treturn srv.($Service$Server).$Method$(&$ServiceStruct$$Method$Server" "{stream})\n" "}\n\n"); printer->Print(*vars, - "type $Service$_$Method$Server interface {\n" - "\tSendAndClose(*$Response$) error\n" - "\tRecv() (*$Request$, error)\n" - "\trpc.Stream\n" - "}\n\n"); - printer->Print(*vars, - "type $ServiceStruct$$Method$Server struct {\n" - "\trpc.Stream\n" - "}\n\n"); + "type $Service$_$Method$Server interface {\n" + "\tSendAndClose(*$Response$) error\n" + "\tRecv() (*$Request$, error)\n" + "\trpc.Stream\n" + "}\n\n"); printer->Print(*vars, + "type $ServiceStruct$$Method$Server struct {\n" + "\trpc.Stream\n" + "}\n\n"); + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Server) SendAndClose(m *$Response$) " "error {\n" "\tif err := x.Stream.SendProto(m); err != nil {\n" @@ -395,7 +405,8 @@ void PrintServerHandler(google::protobuf::io::Printer* printer, "\t}\n" "\treturn nil\n" "}\n\n"); - printer->Print(*vars, + printer->Print( + *vars, "func (x *$ServiceStruct$$Method$Server) Recv() (*$Request$, error) {\n" "\tm := new($Request$)\n" "\tif err := x.Stream.RecvProto(m); err != nil {\n" @@ -411,22 +422,19 @@ void PrintServerMethodDesc(google::protobuf::io::Printer* printer, map<string, string>* vars) { (*vars)["Method"] = method->name(); printer->Print("\t\t{\n"); - printer->Print(*vars, - "\t\t\tMethodName:\t\"$Method$\",\n"); - printer->Print(*vars, - "\t\t\tHandler:\t_$Service$_$Method$_Handler,\n"); + printer->Print(*vars, "\t\t\tMethodName:\t\"$Method$\",\n"); + printer->Print(*vars, "\t\t\tHandler:\t_$Service$_$Method$_Handler,\n"); printer->Print("\t\t},\n"); } -void PrintServerStreamingMethodDesc(google::protobuf::io::Printer* printer, - const google::protobuf::MethodDescriptor* method, - map<string, string>* vars) { +void PrintServerStreamingMethodDesc( + google::protobuf::io::Printer* printer, + const google::protobuf::MethodDescriptor* method, + map<string, string>* vars) { (*vars)["Method"] = method->name(); printer->Print("\t\t{\n"); - printer->Print(*vars, - "\t\t\tStreamName:\t\"$Method$\",\n"); - printer->Print(*vars, - "\t\t\tHandler:\t_$Service$_$Method$_Handler,\n"); + printer->Print(*vars, "\t\t\tStreamName:\t\"$Method$\",\n"); + printer->Print(*vars, "\t\t\tHandler:\t_$Service$_$Method$_Handler,\n"); printer->Print("\t\t},\n"); } @@ -467,8 +475,9 @@ void PrintServer(google::protobuf::io::Printer* printer, PrintServerStreamingMethodDesc(printer, service->method(i), vars); } } - printer->Print("\t},\n" - "}\n\n"); + printer->Print( + "\t},\n" + "}\n\n"); } std::string BadToUnderscore(std::string str) { @@ -493,8 +502,9 @@ string GetServices(const google::protobuf::FileDescriptor* file) { printer.Print(vars, "package $PackageName$\n\n"); printer.Print("import (\n"); if (HasClientOnlyStreaming(file)) { - printer.Print("\t\"fmt\"\n" - "\t\"io\"\n"); + printer.Print( + "\t\"fmt\"\n" + "\t\"io\"\n"); } printer.Print( "\t\"google/net/grpc/go/rpc\"\n" |