diff options
author | 2015-06-17 12:35:32 -0700 | |
---|---|---|
committer | 2015-06-17 12:35:32 -0700 | |
commit | b62cdbc18cd6b9b3fff10676397f2e689f27f2e4 (patch) | |
tree | d2b947c2354f6cdc1161671c92ad2865e233e1f5 /test/cpp/util/cli_call.cc | |
parent | a93954f844bdc7f8077a69a13f39131f7936f455 (diff) | |
parent | 45bd28e0d3c7d7272333ca2531f1e53467037ecd (diff) |
Merge pull request #2078 from yang-g/grpc_cli_headers
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 fa952e8349..83a7a1744a 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.ok()) { - 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.error_code() - << " details: " << status.error_message() << std::endl; } + *server_initial_metadata = ctx.GetServerInitialMetadata(); + *server_trailing_metadata = ctx.GetServerTrailingMetadata(); + return status; } } // namespace testing |