34 #ifndef GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H 35 #define GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H 47 class CompletionQueue;
55 virtual void Finish(R* msg,
Status* status,
void* tag) = 0;
67 call_(channel->CreateCall(method, context, cq)),
68 collection_(new CallOpSetCollection) {
69 collection_->init_buf_.SetCollection(collection_);
70 collection_->init_buf_.SendInitialMetadata(
71 context->send_initial_metadata_, context->initial_metadata_flags());
74 collection_->init_buf_.ClientSendClose();
75 call_.PerformOps(&collection_->init_buf_);
81 collection_->meta_buf_.SetCollection(collection_);
82 collection_->meta_buf_.set_output_tag(tag);
83 collection_->meta_buf_.RecvInitialMetadata(context_);
84 call_.PerformOps(&collection_->meta_buf_);
88 collection_->finish_buf_.SetCollection(collection_);
89 collection_->finish_buf_.set_output_tag(tag);
90 if (!context_->initial_metadata_received_) {
91 collection_->finish_buf_.RecvInitialMetadata(context_);
93 collection_->finish_buf_.RecvMessage(msg);
94 collection_->finish_buf_.AllowNoMessage();
95 collection_->finish_buf_.ClientRecvStatus(context_, status);
96 call_.PerformOps(&collection_->finish_buf_);
113 std::shared_ptr<CallOpSetCollection> collection_;
121 : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
126 meta_buf_.set_output_tag(tag);
127 meta_buf_.SendInitialMetadata(ctx_->initial_metadata_,
128 ctx_->initial_metadata_flags());
129 if (ctx_->compression_level_set()) {
130 meta_buf_.set_compression_level(ctx_->compression_level());
132 ctx_->sent_initial_metadata_ =
true;
133 call_.PerformOps(&meta_buf_);
137 finish_buf_.set_output_tag(tag);
138 if (!ctx_->sent_initial_metadata_) {
139 finish_buf_.SendInitialMetadata(ctx_->initial_metadata_,
140 ctx_->initial_metadata_flags());
141 if (ctx_->compression_level_set()) {
142 finish_buf_.set_compression_level(ctx_->compression_level());
144 ctx_->sent_initial_metadata_ =
true;
148 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_,
149 finish_buf_.SendMessage(msg));
151 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status);
153 call_.PerformOps(&finish_buf_);
158 finish_buf_.set_output_tag(tag);
159 if (!ctx_->sent_initial_metadata_) {
160 finish_buf_.SendInitialMetadata(ctx_->initial_metadata_,
161 ctx_->initial_metadata_flags());
162 if (ctx_->compression_level_set()) {
163 finish_buf_.set_compression_level(ctx_->compression_level());
165 ctx_->sent_initial_metadata_ =
true;
167 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status);
168 call_.PerformOps(&finish_buf_);
184 #endif // GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H void FinishWithError(const Status &status, void *tag)
Definition: async_unary_call.h:156
virtual ~ClientAsyncResponseReaderInterface()
Definition: async_unary_call.h:53
virtual void Finish(R *msg, Status *status, void *tag)=0
void Finish(const W &msg, const Status &status, void *tag)
Definition: async_unary_call.h:136
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:97
Definition: service_type.h:53
void SendInitialMetadata(void *tag) GRPC_OVERRIDE
Definition: async_unary_call.h:123
void Finish(R *msg, Status *status, void *tag)
Definition: async_unary_call.h:87
virtual void ReadInitialMetadata(void *tag)=0
An abstract collection of CallOpSet's, to be used whenever CallOpSet objects must be thought of as a ...
Definition: call.h:555
Definition: async_unary_call.h:59
Definition: client_context.h:154
void ReadInitialMetadata(void *tag)
Definition: async_unary_call.h:78
Definition: async_unary_call.h:51
Codegen interface for grpc::Channel.
Definition: channel_interface.h:64
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:62
Primary implementaiton of CallOpSetInterface.
Definition: call.h:593
Definition: server_context.h:91
A thin wrapper around grpc_completion_queue (see / src/core/surface/completion_queue.h).
Definition: completion_queue.h:97
#define GRPC_FINAL
Definition: config.h:72
ClientAsyncResponseReader(ChannelInterface *channel, CompletionQueue *cq, const RpcMethod &method, ClientContext *context, const W &request)
Definition: async_unary_call.h:63
ServerAsyncResponseWriter(ServerContext *ctx)
Definition: async_unary_call.h:120
Definition: rpc_method.h:43
bool ok() const
Is the status OK?
Definition: status.h:67
Did it work? If it didn't, why?
Definition: status.h:45
Definition: async_unary_call.h:117
A CallOpSet that does not post completions to the completion queue.
Definition: call.h:636
#define GRPC_OVERRIDE
Definition: config.h:78