diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index d7ba4f2636a..7f178f63bb0 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -176,8 +176,9 @@ std::string GetServiceClassName(const ServiceDescriptor* service) {
return service->name();
}
-std::string GetClientClassName(const ServiceDescriptor* service) {
- return service->name() + "Client";
+std::string GetClientClassName(const ServiceDescriptor* service,
+ bool lite_client) {
+ return service->name() + (lite_client ? "LiteClient" : "Client");
}
std::string GetServerClassName(const ServiceDescriptor* service) {
@@ -420,28 +421,26 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor* service,
out->Print("/// Client for $servicename$\n",
"servicename", GetServiceClassName(service));
out->Print("public partial class $name$ : grpc::ClientBase<$name$>\n",
- "name", GetClientClassName(service));
+ "name", GetClientClassName(service, lite_client));
} else {
out->Print("/// Lite client for $servicename$\n",
"servicename", GetServiceClassName(service));
out->Print("public partial class $name$ : grpc::LiteClientBase\n", "name",
- GetClientClassName(service));
+ GetClientClassName(service, lite_client));
}
out->Print("{\n");
out->Indent();
// constructors
- if (!lite_client) {
- out->Print(
- "/// Creates a new client for $servicename$\n"
- "/// The channel to use to make remote "
- "calls.\n",
- "servicename", GetServiceClassName(service));
- out->Print("public $name$(grpc::ChannelBase channel) : base(channel)\n",
- "name", GetClientClassName(service));
- out->Print("{\n");
- out->Print("}\n");
- }
+ out->Print(
+ "/// Creates a new client for $servicename$\n"
+ "/// The channel to use to make remote "
+ "calls.\n",
+ "servicename", GetServiceClassName(service));
+ out->Print("public $name$(grpc::ChannelBase channel) : base(channel)\n",
+ "name", GetClientClassName(service));
+ out->Print("{\n");
+ out->Print("}\n");
out->Print(
"/// Creates a new client for $servicename$ that uses a custom "
"CallInvoker.\n"
@@ -450,14 +449,14 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor* service,
"servicename", GetServiceClassName(service));
out->Print(
"public $name$(grpc::CallInvoker callInvoker) : base(callInvoker)\n",
- "name", GetClientClassName(service));
+ "name", GetClientClassName(service, lite_client));
out->Print("{\n");
out->Print("}\n");
out->Print(
"/// Protected parameterless constructor to allow creation"
" of test doubles.\n");
out->Print("protected $name$() : base()\n", "name",
- GetClientClassName(service));
+ GetClientClassName(service, lite_client));
out->Print("{\n");
out->Print("}\n");
if (!lite_client) {
@@ -469,7 +468,7 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor* service,
out->Print(
"protected $name$(ClientBaseConfiguration configuration)"
" : base(configuration)\n",
- "name", GetClientClassName(service));
+ "name", GetClientClassName(service, lite_client));
out->Print("{\n");
out->Print("}\n");
}
@@ -598,11 +597,11 @@ void GenerateClientStub(Printer* out, const ServiceDescriptor* service,
out->Print(
"protected override $name$ NewInstance(ClientBaseConfiguration "
"configuration)\n",
- "name", GetClientClassName(service));
+ "name", GetClientClassName(service, lite_client));
out->Print("{\n");
out->Indent();
out->Print("return new $name$(configuration);\n", "name",
- GetClientClassName(service));
+ GetClientClassName(service, lite_client));
out->Outdent();
out->Print("}\n");
}
@@ -686,8 +685,8 @@ void GenerateBindServiceWithBinderMethod(Printer* out,
}
void GenerateService(Printer* out, const ServiceDescriptor* service,
- bool generate_client, bool generate_server,
- bool internal_access, bool lite_client) {
+ bool generate_client, bool generate_lite_client,
+ bool generate_server, bool internal_access) {
GenerateDocCommentBody(out, service);
out->Print("$access_level$ static partial class $classname$\n",
"access_level", GetAccessLevel(internal_access), "classname",
@@ -709,7 +708,10 @@ void GenerateService(Printer* out, const ServiceDescriptor* service,
GenerateServerClass(out, service);
}
if (generate_client) {
- GenerateClientStub(out, service, lite_client);
+ GenerateClientStub(out, service, false);
+ }
+ if (generate_lite_client) {
+ GenerateClientStub(out, service, true);
}
if (generate_server) {
@@ -724,8 +726,8 @@ void GenerateService(Printer* out, const ServiceDescriptor* service,
} // anonymous namespace
grpc::string GetServices(const FileDescriptor* file, bool generate_client,
- bool generate_server, bool internal_access,
- bool lite_client) {
+ bool generate_lite_client, bool generate_server,
+ bool internal_access) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -766,8 +768,8 @@ grpc::string GetServices(const FileDescriptor* file, bool generate_client,
out.Indent();
}
for (int i = 0; i < file->service_count(); i++) {
- GenerateService(&out, file->service(i), generate_client, generate_server,
- internal_access, lite_client);
+ GenerateService(&out, file->service(i), generate_client,
+ generate_lite_client, generate_server, internal_access);
}
if (file_namespace != "") {
out.Outdent();
diff --git a/src/compiler/csharp_generator.h b/src/compiler/csharp_generator.h
index d4c13c67363..842d136494c 100644
--- a/src/compiler/csharp_generator.h
+++ b/src/compiler/csharp_generator.h
@@ -26,8 +26,8 @@
namespace grpc_csharp_generator {
grpc::string GetServices(const grpc::protobuf::FileDescriptor* file,
- bool generate_client, bool generate_server,
- bool internal_access, bool lite_client);
+ bool generate_client, bool generate_lite_client,
+ bool generate_server, bool internal_access);
} // namespace grpc_csharp_generator
diff --git a/src/compiler/csharp_plugin.cc b/src/compiler/csharp_plugin.cc
index c503fd61ded..a495f876792 100644
--- a/src/compiler/csharp_plugin.cc
+++ b/src/compiler/csharp_plugin.cc
@@ -38,19 +38,18 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
bool generate_client = true;
bool generate_server = true;
+ bool generate_lite_client = true;
bool internal_access = false;
- bool lite_client = 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_lite_client") {
+ // TODO: better option
+ generate_lite_client = false;
} else if (options[i].first == "no_server") {
generate_server = false;
} else if (options[i].first == "internal_access") {
internal_access = true;
- } else if (options[i].first == "lite_client") {
- // will only be used if generate_client is true.
- // NOTE: experimental option, can be removed in future release
- lite_client = true;
} else {
*error = "Unknown generator option: " + options[i].first;
return false;
@@ -58,7 +57,8 @@ class CSharpGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
}
grpc::string code = grpc_csharp_generator::GetServices(
- file, generate_client, generate_server, internal_access, lite_client);
+ file, generate_client, generate_lite_client, generate_server,
+ internal_access);
if (code.size() == 0) {
return true; // don't generate a file if there are no services
}