Async client api change. Add a ClientAsyncResponseReader. Make the api similar to streaming and symmetric to server side.
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index 60dc02d..6229170 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -127,6 +127,8 @@
"class ServerContext;\n";
if (HasUnaryCalls(file)) {
temp.append(
+ "template <class OutMessage> class ClientAsyncResponseReader;\n");
+ temp.append(
"template <class OutMessage> class ServerAsyncResponseWriter;\n");
}
if (HasClientOnlyStreaming(file)) {
@@ -160,7 +162,8 @@
}
std::string GetSourceIncludes() {
- return "#include <grpc++/channel_interface.h>\n"
+ return "#include <grpc++/async_unary_call.h>\n"
+ "#include <grpc++/channel_interface.h>\n"
"#include <grpc++/impl/client_unary_call.h>\n"
"#include <grpc++/impl/rpc_method.h>\n"
"#include <grpc++/impl/rpc_service_method.h>\n"
@@ -181,9 +184,9 @@
"::grpc::Status $Method$(::grpc::ClientContext* context, "
"const $Request$& request, $Response$* response);\n");
printer->Print(*vars,
- "void $Method$(::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response, "
- "::grpc::Status* status, "
+ "::grpc::ClientAsyncResponseReader< $Response$>* "
+ "$Method$(::grpc::ClientContext* context, "
+ "const $Request$& request, "
"::grpc::CompletionQueue* cq, void* tag);\n");
} else if (ClientOnlyStreaming(method)) {
printer->Print(*vars,
@@ -378,14 +381,15 @@
"context, request, response);\n"
"}\n\n");
printer->Print(*vars,
- "void $Service$::Stub::$Method$("
- "::grpc::ClientContext* context, "
- "const $Request$& request, $Response$* response, ::grpc::Status* status, "
+ "::grpc::ClientAsyncResponseReader< $Response$>* "
+ "$Service$::Stub::$Method$(::grpc::ClientContext* context, "
+ "const $Request$& request, "
"::grpc::CompletionQueue* cq, void* tag) {\n");
printer->Print(*vars,
- " ::grpc::AsyncUnaryCall(channel(),"
+ " return new ClientAsyncResponseReader< $Response$>("
+ "channel(), cq, "
"::grpc::RpcMethod($Service$_method_names[$Idx$]), "
- "context, request, response, status, cq, tag);\n"
+ "context, request, tag);\n"
"}\n\n");
} else if (ClientOnlyStreaming(method)) {
printer->Print(