aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/compiler/cpp_plugin.cc
diff options
context:
space:
mode:
authorGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2015-03-24 02:33:18 +0100
committerGravatar Nicolas "Pixel" Noble <pixel@nobis-crew.org>2015-03-24 02:35:05 +0100
commit375a82b35c24952f35a728e5ea4d54dced982977 (patch)
tree87f97fe4ead387fa846aa5801a6274aeb5bad046 /src/compiler/cpp_plugin.cc
parentf37bc1f2596984dc6ecbfc8591e2c3f0c405683c (diff)
Adding the ability to specify a service namespace on protoc's command line.
Usage example: protoc ... --grpc_out=services_namespace=xyz:./path/to/output/dir ... This is difficult to add a test for this without significantly changing all of the examples, or the build system. However this has been successfully tested locally.
Diffstat (limited to 'src/compiler/cpp_plugin.cc')
-rw-r--r--src/compiler/cpp_plugin.cc25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index 5b83aa85cf..534abdeed0 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -58,18 +58,35 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
return false;
}
+ grpc_cpp_generator::Parameters generator_parameters;
+
+ if (!parameter.empty()) {
+ std::vector<grpc::string> parameters_list =
+ grpc_generator::tokenize(parameter, ",");
+ for (auto &parameter_string: parameters_list) {
+ std::vector<grpc::string> param =
+ grpc_generator::tokenize(parameter_string, "=");
+ if (param[0] == "services_namespace") {
+ generator_parameters.services_namespace = param[1];
+ } else {
+ *error = grpc::string("Unknown parameter: ") + parameter_string;
+ return false;
+ }
+ }
+ }
+
grpc::string file_name = grpc_generator::StripProto(file->name());
// Generate .pb.h
Insert(context, file_name + ".pb.h", "includes",
- grpc_cpp_generator::GetHeaderIncludes(file));
+ grpc_cpp_generator::GetHeaderIncludes(file, generator_parameters));
Insert(context, file_name + ".pb.h", "namespace_scope",
- grpc_cpp_generator::GetHeaderServices(file));
+ grpc_cpp_generator::GetHeaderServices(file, generator_parameters));
// Generate .pb.cc
Insert(context, file_name + ".pb.cc", "includes",
- grpc_cpp_generator::GetSourceIncludes());
+ grpc_cpp_generator::GetSourceIncludes(generator_parameters));
Insert(context, file_name + ".pb.cc", "namespace_scope",
- grpc_cpp_generator::GetSourceServices(file));
+ grpc_cpp_generator::GetSourceServices(file, generator_parameters));
return true;
}