diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-03-24 02:33:18 +0100 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2015-03-24 02:35:05 +0100 |
commit | 375a82b35c24952f35a728e5ea4d54dced982977 (patch) | |
tree | 87f97fe4ead387fa846aa5801a6274aeb5bad046 /src/compiler/cpp_plugin.cc | |
parent | f37bc1f2596984dc6ecbfc8591e2c3f0c405683c (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.cc | 25 |
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 ¶meter_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; } |