|
|
|
@ -609,6 +609,39 @@ void GenerateBindServiceMethod(Printer* out, const ServiceDescriptor* service) { |
|
|
|
|
out->Print("\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GenerateBindServiceWithBinderMethod(Printer* out, |
|
|
|
|
const ServiceDescriptor* service) { |
|
|
|
|
out->Print( |
|
|
|
|
"/// <summary>Register service method implementations with a service " |
|
|
|
|
"binder. Useful when customizing the service binding logic.</summary>\n"); |
|
|
|
|
out->Print( |
|
|
|
|
"/// <param name=\"serviceBinder\">Service methods will be bound by " |
|
|
|
|
"calling <c>AddMethod</c> on this object." |
|
|
|
|
"</param>\n"); |
|
|
|
|
out->Print( |
|
|
|
|
"/// <param name=\"serviceImpl\">An object implementing the server-side" |
|
|
|
|
" handling logic.</param>\n"); |
|
|
|
|
out->Print( |
|
|
|
|
"public static void BindService(grpc::ServiceBinderBase serviceBinder, " |
|
|
|
|
"$implclass$ " |
|
|
|
|
"serviceImpl)\n", |
|
|
|
|
"implclass", GetServerClassName(service)); |
|
|
|
|
out->Print("{\n"); |
|
|
|
|
out->Indent(); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < service->method_count(); i++) { |
|
|
|
|
const MethodDescriptor* method = service->method(i); |
|
|
|
|
out->Print( |
|
|
|
|
"serviceBinder.AddMethod($methodfield$, serviceImpl.$methodname$);\n", |
|
|
|
|
"methodfield", GetMethodFieldName(method), "methodname", |
|
|
|
|
method->name()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
out->Outdent(); |
|
|
|
|
out->Print("}\n"); |
|
|
|
|
out->Print("\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void GenerateService(Printer* out, const ServiceDescriptor* service, |
|
|
|
|
bool generate_client, bool generate_server, |
|
|
|
|
bool internal_access) { |
|
|
|
@ -637,6 +670,7 @@ void GenerateService(Printer* out, const ServiceDescriptor* service, |
|
|
|
|
} |
|
|
|
|
if (generate_server) { |
|
|
|
|
GenerateBindServiceMethod(out, service); |
|
|
|
|
GenerateBindServiceWithBinderMethod(out, service); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
out->Outdent(); |
|
|
|
|