aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/compiler/csharp_plugin.cc
diff options
context:
space:
mode:
authorGravatar Nicolas Noble <nicolasnoble@users.noreply.github.com>2016-04-27 17:10:37 -0700
committerGravatar Nicolas Noble <nicolasnoble@users.noreply.github.com>2016-04-27 17:10:37 -0700
commitb143ca0f3619840c26038ed746010e08104561b3 (patch)
tree012ca6518db409915740c71887b3d1463c8540b4 /src/compiler/csharp_plugin.cc
parent8cb50edbed1e75ab39c5dbd513a702d779ebf75a (diff)
parent7c0e1eec85d74c5b1c8d9565f0bc28194aebae4f (diff)
Merge pull request #6284 from jtattermusch/csharp_optional_client_codegen
Add new cmdline options to C# codegen.
Diffstat (limited to 'src/compiler/csharp_plugin.cc')
-rw-r--r--src/compiler/csharp_plugin.cc24
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 &parameter,
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
}