diff options
author | vjpai <vpai@google.com> | 2015-02-27 16:54:17 -0800 |
---|---|---|
committer | vjpai <vpai@google.com> | 2015-02-27 16:54:17 -0800 |
commit | 45b0bc4bec5d0b701dbe5ae98542473ef3eaa4e4 (patch) | |
tree | 074a1a525f276b49cab1fcfa9b085d8721daee96 | |
parent | 79b3e49d0e0449d24030339c2b8a29e428481b17 (diff) |
Use typedefs to avoid triply-nested function templates
-rw-r--r-- | test/cpp/qps/client_async.cc | 19 | ||||
-rw-r--r-- | test/cpp/qps/server_async.cc | 29 |
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_; }; |