diff options
Diffstat (limited to 'src/compiler/csharp_plugin.cc')
-rw-r--r-- | src/compiler/csharp_plugin.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc index 8b9395f9e2..5350e73f10 100644 --- a/src/compiler/csharp_plugin.cc +++ b/src/compiler/csharp_plugin.cc @@ -48,7 +48,29 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator { const grpc::string ¶meter, grpc::protobuf::compiler::GeneratorContext *context, grpc::string *error) const { - grpc::string code = grpc_csharp_generator::GetServices(file); + std::vector<std::pair<grpc::string, grpc::string> > options; + grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options); + + bool generate_client = true; + bool generate_server = true; + bool internal_access = false; + for (size_t i = 0; i < options.size(); i++) { + if (options[i].first == "no_client") { + generate_client = false; + } else if (options[i].first == "no_server") { + generate_server = false; + } else if (options[i].first == "internal_access") { + internal_access = true; + } else { + *error = "Unknown generator option: " + options[i].first; + return false; + } + } + + grpc::string code = grpc_csharp_generator::GetServices(file, + generate_client, + generate_server, + internal_access); if (code.size() == 0) { return true; // don't generate a file if there are no services } |