aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar vjpai <vpai@google.com>2015-02-27 16:54:17 -0800
committerGravatar vjpai <vpai@google.com>2015-02-27 16:54:17 -0800
commit45b0bc4bec5d0b701dbe5ae98542473ef3eaa4e4 (patch)
tree074a1a525f276b49cab1fcfa9b085d8721daee96
parent79b3e49d0e0449d24030339c2b8a29e428481b17 (diff)
Use typedefs to avoid triply-nested function templates
-rw-r--r--test/cpp/qps/client_async.cc19
-rw-r--r--test/cpp/qps/server_async.cc29
2 files changed, 26 insertions, 22 deletions
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
index 9ea9cfe8b9..0bd0f176a8 100644
--- a/test/cpp/qps/client_async.cc
+++ b/test/cpp/qps/client_async.cc
@@ -105,17 +105,24 @@ 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,
- 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)
+ StartMethod<RequestType,ResponseType> start_req,
+ DoneMethod<ResponseType> on_done)
: context_(),
stub_(stub),
req_(req),
@@ -150,7 +157,7 @@ class ClientRpcContextUnaryImpl : public ClientRpcContext {
RequestType req_;
ResponseType response_;
bool (ClientRpcContextUnaryImpl::*next_state_)();
- std::function<void(grpc::Status, ResponseType *)> callback_;
+ DoneMethod<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 c797d8af96..3d6379b73f 100644
--- a/test/cpp/qps/server_async.cc
+++ b/test/cpp/qps/server_async.cc
@@ -183,15 +183,19 @@ 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(
- std::function<void(ServerContext *, RequestType *,
- grpc::ServerAsyncResponseWriter<ResponseType> *,
- void *)> request_method,
- std::function<grpc::Status(const RequestType *, ResponseType *)>
- invoke_method)
+ RequestMethod<RequestType,ResponseType> request_method,
+ InvokeMethod<RequestType,ResponseType> invoke_method)
: next_state_(&ServerRpcContextUnaryImpl::invoker),
request_method_(request_method),
invoke_method_(invoke_method),
@@ -229,11 +233,8 @@ class AsyncQpsServerTest {
ServerContext srv_ctx_;
RequestType req_;
bool (ServerRpcContextUnaryImpl::*next_state_)();
- std::function<void(ServerContext *, RequestType *,
- grpc::ServerAsyncResponseWriter<ResponseType> *, void *)>
- request_method_;
- std::function<grpc::Status(const RequestType *, ResponseType *)>
- invoke_method_;
+ RequestMethod<RequestType,ResponseType> request_method_;
+ InvokeMethod<RequestType,ResponseType> invoke_method_;
grpc::ServerAsyncResponseWriter<ResponseType> response_writer_;
};
@@ -261,12 +262,8 @@ class AsyncQpsServerTest {
CompletionQueue srv_cq_;
TestService::AsyncService async_service_;
std::unique_ptr<Server> server_;
- std::function<void(ServerContext *, SimpleRequest *,
- grpc::ServerAsyncResponseWriter<SimpleResponse> *, void *)>
- request_unary_;
- std::function<void(ServerContext *, StatsRequest *,
- grpc::ServerAsyncResponseWriter<ServerStats> *, void *)>
- request_stats_;
+ RequestMethod<SimpleRequest, SimpleResponse> request_unary_;
+ RequestMethod<StatsRequest, ServerStats> request_stats_;
std::forward_list<ServerRpcContext *> contexts_;
};