diff options
author | 2015-02-11 16:50:09 -0800 | |
---|---|---|
committer | 2015-02-11 16:50:09 -0800 | |
commit | 39550b6c4c71030ad48051e021cd03a0bf416a65 (patch) | |
tree | fb8abf8b35c450c45ea75116306302601fa8ade3 /include/grpc++/stream.h | |
parent | 47a573602a27e718a7f13d5a9cceed7519e42234 (diff) | |
parent | 968ca530b2eaa20715793861453f96dcfd075c53 (diff) |
Merge pull request #9 from yang-g/c++api
Add trailing metadata to client context and use it.
Diffstat (limited to 'include/grpc++/stream.h')
-rw-r--r-- | include/grpc++/stream.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h index 85a7261fb9..2791468490 100644 --- a/include/grpc++/stream.h +++ b/include/grpc++/stream.h @@ -35,6 +35,7 @@ #define __GRPCPP_STREAM_H__ #include <grpc++/channel_interface.h> +#include <grpc++/client_context.h> #include <grpc++/completion_queue.h> #include <grpc++/impl/call.h> #include <grpc++/status.h> @@ -87,7 +88,7 @@ class ClientReader final : public ClientStreamingInterface, ClientReader(ChannelInterface *channel, const RpcMethod &method, ClientContext *context, const google::protobuf::Message &request) - : call_(channel->CreateCall(method, context, &cq_)) { + : context_(context), call_(channel->CreateCall(method, context, &cq_)) { CallOpBuffer buf; buf.AddSendMessage(request); buf.AddClientSendClose(); @@ -105,13 +106,14 @@ class ClientReader final : public ClientStreamingInterface, virtual Status Finish() override { CallOpBuffer buf; Status status; - buf.AddClientRecvStatus(nullptr, &status); // TODO metadata + buf.AddClientRecvStatus(&context_->trailing_metadata_, &status); call_.PerformOps(&buf); GPR_ASSERT(cq_.Pluck(&buf)); return status; } private: + ClientContext* context_; CompletionQueue cq_; Call call_; }; @@ -124,7 +126,7 @@ class ClientWriter final : public ClientStreamingInterface, ClientWriter(ChannelInterface *channel, const RpcMethod &method, ClientContext *context, google::protobuf::Message *response) - : response_(response), + : context_(context), response_(response), call_(channel->CreateCall(method, context, &cq_)) {} virtual bool Write(const W& msg) override { @@ -146,13 +148,14 @@ class ClientWriter final : public ClientStreamingInterface, CallOpBuffer buf; Status status; buf.AddRecvMessage(response_); - buf.AddClientRecvStatus(nullptr, &status); // TODO metadata + buf.AddClientRecvStatus(&context_->trailing_metadata_, &status); call_.PerformOps(&buf); GPR_ASSERT(cq_.Pluck(&buf)); return status; } private: + ClientContext* context_; google::protobuf::Message *const response_; CompletionQueue cq_; Call call_; @@ -167,7 +170,7 @@ class ClientReaderWriter final : public ClientStreamingInterface, // Blocking create a stream. ClientReaderWriter(ChannelInterface *channel, const RpcMethod &method, ClientContext *context) - : call_(channel->CreateCall(method, context, &cq_)) {} + : context_(context), call_(channel->CreateCall(method, context, &cq_)) {} virtual bool Read(R *msg) override { CallOpBuffer buf; @@ -193,13 +196,14 @@ class ClientReaderWriter final : public ClientStreamingInterface, virtual Status Finish() override { CallOpBuffer buf; Status status; - buf.AddClientRecvStatus(nullptr, &status); // TODO metadata + buf.AddClientRecvStatus(&context_->trailing_metadata_, &status); call_.PerformOps(&buf); GPR_ASSERT(cq_.Pluck(&buf)); return status; } private: + ClientContext* context_; CompletionQueue cq_; Call call_; }; |