diff options
author | 2015-06-16 00:43:25 -0700 | |
---|---|---|
committer | 2015-06-16 00:43:25 -0700 | |
commit | 102eccb63238f2b40e89d2ec1ed93a7771a82798 (patch) | |
tree | 08d6e3b841ba37ccf88fbf18281115bbb062d01f /test/cpp/util/cli_call.cc | |
parent | ac366f9c2e3736815c4445baa4ad4745d2b0b511 (diff) |
Support sending and showing received metadata in grpc_cli
Diffstat (limited to 'test/cpp/util/cli_call.cc')
-rw-r--r-- | test/cpp/util/cli_call.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/test/cpp/util/cli_call.cc b/test/cpp/util/cli_call.cc index eb67b8d314..5c2b2adb5c 100644 --- a/test/cpp/util/cli_call.cc +++ b/test/cpp/util/cli_call.cc @@ -52,11 +52,20 @@ namespace { void* tag(int i) { return (void*)(gpr_intptr) i; } } // namespace -void CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, - const grpc::string& method, const grpc::string& request, - grpc::string* response) { +Status CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, + const grpc::string& method, const grpc::string& request, + grpc::string* response, const MetadataContainer& metadata, + MetadataContainer* server_initial_metadata, + MetadataContainer* server_trailing_metadata) { std::unique_ptr<grpc::GenericStub> stub(new grpc::GenericStub(channel)); grpc::ClientContext ctx; + if (!metadata.empty()) { + for (std::multimap<grpc::string, grpc::string>::const_iterator iter = + metadata.begin(); + iter != metadata.end(); ++iter) { + ctx.AddMetadata(iter->first, iter->second); + } + } grpc::CompletionQueue cq; std::unique_ptr<grpc::GenericClientAsyncReaderWriter> call( stub->Call(&ctx, method, &cq, tag(1))); @@ -79,7 +88,7 @@ void CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, cq.Next(&got_tag, &ok); if (!ok) { std::cout << "Failed to read response." << std::endl; - return; + return Status(StatusCode::INTERNAL, "Failed to read response"); } grpc::Status status; call->Finish(&status, tag(5)); @@ -87,7 +96,6 @@ void CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, GPR_ASSERT(ok); if (status.IsOk()) { - std::cout << "RPC finished with OK status." << std::endl; std::vector<grpc::Slice> slices; recv_buffer.Dump(&slices); @@ -96,10 +104,10 @@ void CliCall::Call(std::shared_ptr<grpc::ChannelInterface> channel, response->append(reinterpret_cast<const char*>(slices[i].begin()), slices[i].size()); } - } else { - std::cout << "RPC finished with status code " << status.code() - << " details: " << status.details() << std::endl; } + *server_initial_metadata = ctx.GetServerInitialMetadata(); + *server_trailing_metadata = ctx.GetServerTrailingMetadata(); + return status; } } // namespace testing |