From 3b26451025118b1f2764dcc618cb3a5fd8abdd4b Mon Sep 17 00:00:00 2001
From: James Eady <jmeady@google.com>
Date: Tue, 2 May 2017 10:45:34 -0400
Subject: [PATCH] Add static method to generated code to return fully qualified
 protobuf service name.

---
 src/compiler/cpp_generator.cc         | 7 +++++++
 test/cpp/codegen/compiler_test_golden | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index d3e71625d6..bbf17314e9 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -804,6 +804,13 @@ void PrintHeaderService(grpc_generator::Printer *printer,
                  " public:\n");
   printer->Indent();
 
+  // Service metadata
+  printer->Print(
+      *vars,
+      "static constexpr char const* service_full_name() {\n"
+      "  return \"$Package$$Service$\";\n"
+      "}\n");
+
   // Client side
   printer->Print(
       "class StubInterface {\n"
diff --git a/test/cpp/codegen/compiler_test_golden b/test/cpp/codegen/compiler_test_golden
index 8e3ae32a49..eb12d371ea 100644
--- a/test/cpp/codegen/compiler_test_golden
+++ b/test/cpp/codegen/compiler_test_golden
@@ -69,6 +69,9 @@ namespace testing {
 // ServiceA leading comment 1
 class ServiceA final {
  public:
+  static constexpr char const* service_full_name() {
+    return "grpc.testing.ServiceA";
+  }
   class StubInterface {
    public:
     virtual ~StubInterface() {}
@@ -373,6 +376,9 @@ class ServiceA final {
 // ServiceB leading comment 1
 class ServiceB final {
  public:
+  static constexpr char const* service_full_name() {
+    return "grpc.testing.ServiceB";
+  }
   class StubInterface {
    public:
     virtual ~StubInterface() {}
-- 
GitLab