aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-02-11 15:36:31 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-02-11 15:36:31 -0800
commit9dcb0f8e1d58d3f6f4d14b47bddb53ba8cf83a42 (patch)
tree3c0f1b9ccb14129b4bda2e84a6f5508926ace641 /src
parent7418d01de4b10b5870b8b78a4ce5198beae49445 (diff)
Send initial metadata
Diffstat (limited to 'src')
-rw-r--r--src/cpp/server/server.cc5
-rw-r--r--src/cpp/server/server_context.cc11
2 files changed, 11 insertions, 5 deletions
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index 8974850b8c..4392739367 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -172,10 +172,13 @@ class Server::MethodRequestData final : public CompletionQueueTag {
auto status = method_->handler()->RunHandler(
MethodHandler::HandlerParameter(&call_, &ctx_, req.get(), res.get()));
CallOpBuffer buf;
- buf.AddServerSendStatus(nullptr, status);
+ if (!ctx_.sent_initial_metadata_) {
+ buf.AddSendInitialMetadata(&ctx_.initial_metadata_);
+ }
if (has_response_payload_) {
buf.AddSendMessage(*res);
}
+ buf.AddServerSendStatus(&ctx_.trailing_metadata_, status);
call_.PerformOps(&buf);
GPR_ASSERT(cq_.Pluck(&buf));
}
diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc
index 7e0bc4de36..2bf4104d76 100644
--- a/src/cpp/server/server_context.cc
+++ b/src/cpp/server/server_context.cc
@@ -37,11 +37,14 @@
namespace grpc {
-ServerContext::ServerContext(gpr_timespec deadline, grpc_metadata *metadata, size_t metadata_count)
- : deadline_(Timespec2Timepoint(deadline)) {
+ServerContext::ServerContext(gpr_timespec deadline, grpc_metadata *metadata,
+ size_t metadata_count)
+ : deadline_(Timespec2Timepoint(deadline)) {
for (size_t i = 0; i < metadata_count; i++) {
- metadata_.insert(std::make_pair(grpc::string(metadata[i].key),
- grpc::string(metadata[i].value, metadata[i].value + metadata[i].value_length)));
+ client_metadata_.insert(std::make_pair(
+ grpc::string(metadata[i].key),
+ grpc::string(metadata[i].value,
+ metadata[i].value + metadata[i].value_length)));
}
}