aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/compiler
diff options
context:
space:
mode:
authorGravatar Alexander Polcyn <apolcyn@google.com>2017-04-26 14:18:39 -0700
committerGravatar Alexander Polcyn <apolcyn@google.com>2017-04-26 14:18:39 -0700
commitf5521c33f9094f2f1e416764c4d2020237d65bc6 (patch)
treee8ef2105ec499e1ebf6e840bb0140e5f1c29550d /src/compiler
parent79759fea1abd09102d38af3e13a84b69e898124b (diff)
Revert "Merge branch 'master' into v1.3.x"
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/cpp_generator.cc199
-rw-r--r--src/compiler/cpp_generator.h34
-rw-r--r--src/compiler/cpp_plugin.cc21
-rw-r--r--src/compiler/objective_c_plugin.cc1
-rw-r--r--src/compiler/python_generator.cc8
5 files changed, 11 insertions, 252 deletions
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index d3e71625d6..c01e830cd6 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -1106,8 +1106,8 @@ void PrintSourceClientMethod(grpc_generator::Printer *printer,
"const $Request$& request, "
"::grpc::CompletionQueue* cq) {\n");
printer->Print(*vars,
- " return "
- "::grpc::ClientAsyncResponseReader< $Response$>::Create("
+ " return new "
+ "::grpc::ClientAsyncResponseReader< $Response$>("
"channel_.get(), cq, "
"rpcmethod_$Method$_, "
"context, request);\n"
@@ -1129,7 +1129,7 @@ void PrintSourceClientMethod(grpc_generator::Printer *printer,
"::grpc::ClientContext* context, $Response$* response, "
"::grpc::CompletionQueue* cq, void* tag) {\n");
printer->Print(*vars,
- " return ::grpc::ClientAsyncWriter< $Request$>::Create("
+ " return new ::grpc::ClientAsyncWriter< $Request$>("
"channel_.get(), cq, "
"rpcmethod_$Method$_, "
"context, response, tag);\n"
@@ -1152,7 +1152,7 @@ void PrintSourceClientMethod(grpc_generator::Printer *printer,
"::grpc::ClientContext* context, const $Request$& request, "
"::grpc::CompletionQueue* cq, void* tag) {\n");
printer->Print(*vars,
- " return ::grpc::ClientAsyncReader< $Response$>::Create("
+ " return new ::grpc::ClientAsyncReader< $Response$>("
"channel_.get(), cq, "
"rpcmethod_$Method$_, "
"context, request, tag);\n"
@@ -1174,14 +1174,13 @@ void PrintSourceClientMethod(grpc_generator::Printer *printer,
"::grpc::ClientAsyncReaderWriter< $Request$, $Response$>* "
"$ns$$Service$::Stub::Async$Method$Raw(::grpc::ClientContext* context, "
"::grpc::CompletionQueue* cq, void* tag) {\n");
- printer->Print(
- *vars,
- " return "
- "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>::Create("
- "channel_.get(), cq, "
- "rpcmethod_$Method$_, "
- "context, tag);\n"
- "}\n\n");
+ printer->Print(*vars,
+ " return new "
+ "::grpc::ClientAsyncReaderWriter< $Request$, $Response$>("
+ "channel_.get(), cq, "
+ "rpcmethod_$Method$_, "
+ "context, tag);\n"
+ "}\n\n");
}
}
@@ -1408,180 +1407,4 @@ grpc::string GetSourceEpilogue(grpc_generator::File *file,
return temp;
}
-// TODO(mmukhi): Make sure we need parameters or not.
-grpc::string GetMockPrologue(grpc_generator::File *file,
- const Parameters & /*params*/) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- vars["filename"] = file->filename();
- vars["filename_base"] = file->filename_without_ext();
- vars["message_header_ext"] = message_header_ext();
- vars["service_header_ext"] = service_header_ext();
-
- printer->Print(vars, "// Generated by the gRPC C++ plugin.\n");
- printer->Print(vars,
- "// If you make any local change, they will be lost.\n");
- printer->Print(vars, "// source: $filename$\n\n");
-
- printer->Print(vars, "#include \"$filename_base$$message_header_ext$\"\n");
- printer->Print(vars, "#include \"$filename_base$$service_header_ext$\"\n");
- printer->Print(vars, file->additional_headers().c_str());
- printer->Print(vars, "\n");
- }
- return output;
-}
-
-// TODO(mmukhi): Add client-stream and completion-queue headers.
-grpc::string GetMockIncludes(grpc_generator::File *file,
- const Parameters &params) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
-
- static const char *headers_strs[] = {
- "grpc++/impl/codegen/async_stream.h",
- "grpc++/impl/codegen/sync_stream.h", "gmock/gmock.h",
- };
- std::vector<grpc::string> headers(headers_strs, array_end(headers_strs));
- PrintIncludes(printer.get(), headers, params);
-
- if (!file->package().empty()) {
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.begin(); part != parts.end(); part++) {
- vars["part"] = *part;
- printer->Print(vars, "namespace $part$ {\n");
- }
- }
-
- printer->Print(vars, "\n");
- }
- return output;
-}
-
-void PrintMockClientMethods(grpc_generator::Printer *printer,
- const grpc_generator::Method *method,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Method"] = method->name();
- (*vars)["Request"] = method->input_type_name();
- (*vars)["Response"] = method->output_type_name();
-
- if (method->NoStreaming()) {
- printer->Print(
- *vars,
- "MOCK_METHOD3($Method$, ::grpc::Status(::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response));\n");
- printer->Print(*vars,
- "MOCK_METHOD3(Async$Method$Raw, "
- "::grpc::ClientAsyncResponseReaderInterface< $Response$>*"
- "(::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq));\n");
- } else if (ClientOnlyStreaming(method)) {
- printer->Print(
- *vars,
- "MOCK_METHOD2($Method$Raw, "
- "::grpc::ClientWriterInterface< $Request$>*"
- "(::grpc::ClientContext* context, $Response$* response));\n");
- printer->Print(*vars,
- "MOCK_METHOD4(Async$Method$Raw, "
- "::grpc::ClientAsyncWriterInterface< $Request$>*"
- "(::grpc::ClientContext* context, $Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag));\n");
- } else if (ServerOnlyStreaming(method)) {
- printer->Print(
- *vars,
- "MOCK_METHOD2($Method$Raw, "
- "::grpc::ClientReaderInterface< $Response$>*"
- "(::grpc::ClientContext* context, const $Request$& request));\n");
- printer->Print(*vars,
- "MOCK_METHOD4(Async$Method$Raw, "
- "::grpc::ClientAsyncReaderInterface< $Response$>*"
- "(::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag));\n");
- } else if (method->BidiStreaming()) {
- printer->Print(
- *vars,
- "MOCK_METHOD1($Method$Raw, "
- "::grpc::ClientReaderWriterInterface< $Request$, $Response$>*"
- "(::grpc::ClientContext* context));\n");
- printer->Print(
- *vars,
- "MOCK_METHOD3(Async$Method$Raw, "
- "::grpc::ClientAsyncReaderWriterInterface<$Request$, $Response$>*"
- "(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, "
- "void* tag));\n");
- }
-}
-
-void PrintMockService(grpc_generator::Printer *printer,
- const grpc_generator::Service *service,
- std::map<grpc::string, grpc::string> *vars) {
- (*vars)["Service"] = service->name();
-
- printer->Print(*vars,
- "class Mock$Service$Stub : public $Service$::StubInterface {\n"
- " public:\n");
- printer->Indent();
- for (int i = 0; i < service->method_count(); ++i) {
- PrintMockClientMethods(printer, service->method(i).get(), vars);
- }
- printer->Outdent();
- printer->Print("};\n");
-}
-
-grpc::string GetMockServices(grpc_generator::File *file,
- const Parameters &params) {
- grpc::string output;
- {
- // Scope the output stream so it closes and finalizes output to the string.
- auto printer = file->CreatePrinter(&output);
- std::map<grpc::string, grpc::string> vars;
- // Package string is empty or ends with a dot. It is used to fully qualify
- // method names.
- vars["Package"] = file->package();
- if (!file->package().empty()) {
- vars["Package"].append(".");
- }
-
- if (!params.services_namespace.empty()) {
- vars["services_namespace"] = params.services_namespace;
- printer->Print(vars, "\nnamespace $services_namespace$ {\n\n");
- }
-
- for (int i = 0; i < file->service_count(); i++) {
- PrintMockService(printer.get(), file->service(i).get(), &vars);
- printer->Print("\n");
- }
-
- if (!params.services_namespace.empty()) {
- printer->Print(vars, "} // namespace $services_namespace$\n\n");
- }
- }
- return output;
-}
-
-grpc::string GetMockEpilogue(grpc_generator::File *file,
- const Parameters & /*params*/) {
- grpc::string temp;
-
- if (!file->package().empty()) {
- std::vector<grpc::string> parts = file->package_parts();
-
- for (auto part = parts.begin(); part != parts.end(); part++) {
- temp.append("} // namespace ");
- temp.append(*part);
- temp.append("\n");
- }
- temp.append("\n");
- }
-
- return temp;
-}
-
} // namespace grpc_cpp_generator
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 6119ebe289..69fd8a93e9 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -65,8 +65,6 @@ struct Parameters {
bool use_system_headers;
// Prefix to any grpc include
grpc::string grpc_search_path;
- // Generate GMOCK code to facilitate unit testing.
- bool generate_mock_code;
};
// Return the prologue of the generated header file.
@@ -101,38 +99,6 @@ grpc::string GetSourceServices(grpc_generator::File *file,
grpc::string GetSourceEpilogue(grpc_generator::File *file,
const Parameters &params);
-// Return the prologue of the generated mock file.
-grpc::string GetMockPrologue(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the includes needed for generated mock file.
-grpc::string GetMockIncludes(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the services for generated mock file.
-grpc::string GetMockServices(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the epilogue of generated mock file.
-grpc::string GetMockEpilogue(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the prologue of the generated mock file.
-grpc::string GetMockPrologue(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the includes needed for generated mock file.
-grpc::string GetMockIncludes(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the services for generated mock file.
-grpc::string GetMockServices(grpc_generator::File *file,
- const Parameters &params);
-
-// Return the epilogue of generated mock file.
-grpc::string GetMockEpilogue(grpc_generator::File *file,
- const Parameters &params);
-
} // namespace grpc_cpp_generator
#endif // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index 35f1bf3e93..4ee05ee037 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -62,7 +62,6 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
grpc_cpp_generator::Parameters generator_parameters;
generator_parameters.use_system_headers = true;
- generator_parameters.generate_mock_code = false;
ProtoBufFile pbfile(file);
@@ -86,13 +85,6 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
}
} else if (param[0] == "grpc_search_path") {
generator_parameters.grpc_search_path = param[1];
- } else if (param[0] == "generate_mock_code") {
- if (param[1] == "true") {
- generator_parameters.generate_mock_code = true;
- } else if (param[1] != "false") {
- *error = grpc::string("Invalid parameter: ") + *parameter_string;
- return false;
- }
} else {
*error = grpc::string("Unknown parameter: ") + *parameter_string;
return false;
@@ -122,19 +114,6 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
grpc::protobuf::io::CodedOutputStream source_coded_out(source_output.get());
source_coded_out.WriteRaw(source_code.data(), source_code.size());
- if (!generator_parameters.generate_mock_code) {
- return true;
- }
- grpc::string mock_code =
- grpc_cpp_generator::GetMockPrologue(&pbfile, generator_parameters) +
- grpc_cpp_generator::GetMockIncludes(&pbfile, generator_parameters) +
- grpc_cpp_generator::GetMockServices(&pbfile, generator_parameters) +
- grpc_cpp_generator::GetMockEpilogue(&pbfile, generator_parameters);
- std::unique_ptr<grpc::protobuf::io::ZeroCopyOutputStream> mock_output(
- context->Open(file_name + "_mock.grpc.pb.h"));
- grpc::protobuf::io::CodedOutputStream mock_coded_out(mock_output.get());
- mock_coded_out.WriteRaw(mock_code.data(), mock_code.size());
-
return true;
}
diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 5178115e44..8de0997ebe 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -68,7 +68,6 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
::grpc::string imports = ::grpc::string("#import \"") + file_name +
".pbobjc.h\"\n\n"
"#import <ProtoRPC/ProtoService.h>\n"
- "#import <ProtoRPC/ProtoRPC.h>\n"
"#import <RxLibrary/GRXWriteable.h>\n"
"#import <RxLibrary/GRXWriter.h>\n";
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index 50ee54abff..2649c1688d 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -101,14 +101,6 @@ PrivateGenerator::PrivateGenerator(const GeneratorConfiguration& config,
void PrivateGenerator::PrintAllComments(StringVector comments,
grpc_generator::Printer* out) {
if (comments.empty()) {
- // Python requires code structures like class and def to have
- // a body, even if it is just "pass" or a docstring. We need
- // to ensure not to generate empty bodies. We could do something
- // smarter and more sophisticated, but at the moment, if there is
- // no docstring to print, we simply emit "pass" to ensure validity
- // of the generated code.
- out->Print("# missing associated documentation comment in .proto file\n");
- out->Print("pass\n");
return;
}
out->Print("\"\"\"");