From 8d9f83016863a4d1b27e21fc372f7df02dbc6537 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas <dgq@google.com>
Date: Mon, 13 Jul 2015 16:18:19 -0700
Subject: [PATCH] Introduced InteropContextInspector to be able to peek into
 server contexts during interop testing.

---
 include/grpc++/server_context.h   |  5 +++++
 test/cpp/interop/server_helper.cc |  4 ++++
 test/cpp/interop/server_helper.h  | 11 +++++++++++
 3 files changed, 20 insertions(+)

diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h
index a4ee986df1..e6440c7fd8 100644
--- a/include/grpc++/server_context.h
+++ b/include/grpc++/server_context.h
@@ -76,6 +76,10 @@ class CallOpBuffer;
 class CompletionQueue;
 class Server;
 
+namespace testing {
+class InteropContextInspector;
+}  // namespace testing
+
 // Interface of server side rpc context.
 class ServerContext {
  public:
@@ -104,6 +108,7 @@ class ServerContext {
   }
 
  private:
+  friend class ::grpc::testing::InteropContextInspector;
   friend class ::grpc::Server;
   template <class W, class R>
   friend class ::grpc::ServerAsyncReader;
diff --git a/test/cpp/interop/server_helper.cc b/test/cpp/interop/server_helper.cc
index c2e750dcf7..0f8b89ced2 100644
--- a/test/cpp/interop/server_helper.cc
+++ b/test/cpp/interop/server_helper.cc
@@ -58,5 +58,9 @@ std::shared_ptr<ServerCredentials> CreateInteropServerCredentials() {
   }
 }
 
+InteropContextInspector::InteropContextInspector(
+    const ::grpc::ServerContext& context)
+    : context_(context) {}
+
 }  // namespace testing
 }  // namespace grpc
diff --git a/test/cpp/interop/server_helper.h b/test/cpp/interop/server_helper.h
index f98e67bb67..52332bf633 100644
--- a/test/cpp/interop/server_helper.h
+++ b/test/cpp/interop/server_helper.h
@@ -36,6 +36,7 @@
 
 #include <memory>
 
+#include <grpc++/server_context.h>
 #include <grpc++/server_credentials.h>
 
 namespace grpc {
@@ -43,6 +44,16 @@ namespace testing {
 
 std::shared_ptr<ServerCredentials> CreateInteropServerCredentials();
 
+class InteropContextInspector {
+ public:
+  InteropContextInspector (const ::grpc::ServerContext& context);
+
+  // Inspector methods, able to peek inside ServerContext go here.
+
+ private:
+  const ::grpc::ServerContext& context_;
+};
+
 }  // namespace testing
 }  // namespace grpc
 
-- 
GitLab