introduce c# generator options

pull/6284/head
Jan Tattermusch 9 years ago
parent a967ee567e
commit 5f8872f899
  1. 5
      src/compiler/csharp_generator.cc
  2. 3
      src/compiler/csharp_generator.h
  3. 17
      src/compiler/csharp_plugin.cc

@ -566,7 +566,8 @@ void GenerateService(Printer* out, const ServiceDescriptor *service,
} // anonymous namespace
grpc::string GetServices(const FileDescriptor *file) {
grpc::string GetServices(const FileDescriptor *file, bool generate_client,
bool generate_server) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@ -594,7 +595,7 @@ grpc::string GetServices(const FileDescriptor *file) {
out.Print("namespace $namespace$ {\n", "namespace", GetFileNamespace(file));
out.Indent();
for (int i = 0; i < file->service_count(); i++) {
GenerateService(&out, file->service(i), true, true);
GenerateService(&out, file->service(i), generate_client, generate_server);
}
out.Outdent();
out.Print("}\n");

@ -40,7 +40,8 @@
namespace grpc_csharp_generator {
grpc::string GetServices(const grpc::protobuf::FileDescriptor *file);
grpc::string GetServices(const grpc::protobuf::FileDescriptor *file,
bool generate_client, bool generate_server);
} // namespace grpc_csharp_generator

@ -51,7 +51,22 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
std::vector<std::pair<grpc::string, grpc::string> > options;
grpc::protobuf::compiler::ParseGeneratorParameter(parameter, &options);
grpc::string code = grpc_csharp_generator::GetServices(file);
bool generate_client = true;
bool generate_server = true;
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 {
*error = "Unknown generator option: " + options[i].first;
return false;
}
}
grpc::string code = grpc_csharp_generator::GetServices(file,
generate_client,
generate_server);
if (code.size() == 0) {
return true; // don't generate a file if there are no services
}

Loading…
Cancel
Save