From 4e1e1bc28e9c95333a730889bc1a09581731ae2b Mon Sep 17 00:00:00 2001
From: vjpai <vpai@google.com>
Date: Fri, 27 Feb 2015 23:47:12 -0800
Subject: [PATCH] Revert "Use typedefs to avoid triply-nested function
 templates"

This reverts commit 45b0bc4bec5d0b701dbe5ae98542473ef3eaa4e4.

This revert is being done because the compilers on Travis don't
understand the C++11 template/using syntax.
---
 test/cpp/qps/client_async.cc | 19 ++++++-------------
 test/cpp/qps/server_async.cc | 29 ++++++++++++++++-------------
 2 files changed, 22 insertions(+), 26 deletions(-)

diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index 0bd0f176a8..9ea9cfe8b9 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -105,24 +105,17 @@ class ClientRpcContext {
   }
   virtual void report_stats(gpr_histogram *hist) = 0;
 };
-
-template <class RequestType, class ResponseType>
-using StartMethod =  std::function<
-  std::unique_ptr<grpc::ClientAsyncResponseReader
-		  <ResponseType>>(TestService::Stub *, grpc::ClientContext *,
-				  const RequestType &, void *)> ;
-
-template <class ResponseType> using DoneMethod =
-  std::function<void(grpc::Status, ResponseType *)>;
-  
 template <class RequestType, class ResponseType>
 class ClientRpcContextUnaryImpl : public ClientRpcContext {
  public:
   ClientRpcContextUnaryImpl(
       TestService::Stub *stub,
       const RequestType &req,
-      StartMethod<RequestType,ResponseType> start_req,
-      DoneMethod<ResponseType> on_done)
+      std::function<
+          std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>(
+	      TestService::Stub *, grpc::ClientContext *, const RequestType &,
+	      void *)> start_req,
+      std::function<void(grpc::Status, ResponseType *)> on_done)
       : context_(),
 	stub_(stub),
         req_(req),
@@ -157,7 +150,7 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
   RequestType req_;
   ResponseType response_;
   bool (ClientRpcContextUnaryImpl::*next_state_)();
-  DoneMethod<ResponseType> callback_;
+  std::function<void(grpc::Status, ResponseType *)> callback_;
   grpc::Status status_;
   double start_;
   std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
index 3d6379b73f..c797d8af96 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -183,19 +183,15 @@ class AsyncQpsServerTest {
     return reinterpret_cast<ServerRpcContext *>(tag);
   }
 
-  template<class RequestType, class ResponseType>
-  using RequestMethod = std::function<void(ServerContext *, RequestType *,
-                           grpc::ServerAsyncResponseWriter<ResponseType> *,
-					   void *)>;
-  template<class RequestType, class ResponseType> using InvokeMethod =
-    std::function<grpc::Status(const RequestType *, ResponseType *)>;
-    
   template <class RequestType, class ResponseType>
   class ServerRpcContextUnaryImpl : public ServerRpcContext {
    public:
     ServerRpcContextUnaryImpl(
-        RequestMethod<RequestType,ResponseType> request_method,
-        InvokeMethod<RequestType,ResponseType> invoke_method)
+        std::function<void(ServerContext *, RequestType *,
+                           grpc::ServerAsyncResponseWriter<ResponseType> *,
+                           void *)> request_method,
+        std::function<grpc::Status(const RequestType *, ResponseType *)>
+            invoke_method)
         : next_state_(&ServerRpcContextUnaryImpl::invoker),
           request_method_(request_method),
           invoke_method_(invoke_method),
@@ -233,8 +229,11 @@ class AsyncQpsServerTest {
     ServerContext srv_ctx_;
     RequestType req_;
     bool (ServerRpcContextUnaryImpl::*next_state_)();
-    RequestMethod<RequestType,ResponseType> request_method_;
-    InvokeMethod<RequestType,ResponseType> invoke_method_;
+    std::function<void(ServerContext *, RequestType *,
+                       grpc::ServerAsyncResponseWriter<ResponseType> *, void *)>
+        request_method_;
+    std::function<grpc::Status(const RequestType *, ResponseType *)>
+        invoke_method_;
     grpc::ServerAsyncResponseWriter<ResponseType> response_writer_;
   };
 
@@ -262,8 +261,12 @@ class AsyncQpsServerTest {
   CompletionQueue srv_cq_;
   TestService::AsyncService async_service_;
   std::unique_ptr<Server> server_;
-  RequestMethod<SimpleRequest, SimpleResponse> request_unary_;
-  RequestMethod<StatsRequest, ServerStats> request_stats_;
+  std::function<void(ServerContext *, SimpleRequest *,
+                     grpc::ServerAsyncResponseWriter<SimpleResponse> *, void *)>
+      request_unary_;
+  std::function<void(ServerContext *, StatsRequest *,
+                     grpc::ServerAsyncResponseWriter<ServerStats> *, void *)>
+      request_stats_;
   std::forward_list<ServerRpcContext *> contexts_;
 };
 
-- 
GitLab