34 #ifndef GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
35 #define GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
46 class CompletionQueue;
54 virtual void Finish(R* msg,
Status* status,
void* tag) = 0;
66 call_(channel->CreateCall(method, context, cq)),
67 collection_(std::make_shared<CallOpSetCollection>()) {
68 collection_->init_buf_.SetCollection(collection_);
69 collection_->init_buf_.SendInitialMetadata(
70 context->send_initial_metadata_, context->initial_metadata_flags());
73 collection_->init_buf_.ClientSendClose();
80 collection_->meta_buf_.SetCollection(collection_);
81 collection_->meta_buf_.set_output_tag(tag);
82 collection_->meta_buf_.RecvInitialMetadata(context_);
87 collection_->finish_buf_.SetCollection(collection_);
88 collection_->finish_buf_.set_output_tag(tag);
89 if (!context_->initial_metadata_received_) {
90 collection_->finish_buf_.RecvInitialMetadata(context_);
92 collection_->finish_buf_.RecvMessage(msg);
93 collection_->finish_buf_.AllowNoMessage();
94 collection_->finish_buf_.ClientRecvStatus(context_, status);
112 std::shared_ptr<CallOpSetCollection> collection_;
119 : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
124 meta_buf_.set_output_tag(tag);
125 meta_buf_.SendInitialMetadata(ctx_->initial_metadata_,
126 ctx_->initial_metadata_flags());
130 ctx_->sent_initial_metadata_ =
true;
135 finish_buf_.set_output_tag(tag);
136 if (!ctx_->sent_initial_metadata_) {
137 finish_buf_.SendInitialMetadata(ctx_->initial_metadata_,
138 ctx_->initial_metadata_flags());
142 ctx_->sent_initial_metadata_ =
true;
146 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_,
147 finish_buf_.SendMessage(msg));
149 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status);
156 finish_buf_.set_output_tag(tag);
157 if (!ctx_->sent_initial_metadata_) {
158 finish_buf_.SendInitialMetadata(ctx_->initial_metadata_,
159 ctx_->initial_metadata_flags());
163 ctx_->sent_initial_metadata_ =
true;
165 finish_buf_.ServerSendStatus(ctx_->trailing_metadata_, status);
170 void BindCall(
Call* call)
override { call_ = *call; }
174 CallOpSet<CallOpSendInitialMetadata> meta_buf_;
175 CallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
176 CallOpServerSendStatus>
182 #endif // GRPCXX_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
void FinishWithError(const Status &status, void *tag)
Definition: async_unary_call.h:154
virtual ~ClientAsyncResponseReaderInterface()
Definition: async_unary_call.h:52
grpc_compression_level compression_level() const
Definition: server_context.h:131
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:134
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:122
Definition: service_type.h:53
void Finish(R *msg, Status *status, void *tag)
Definition: async_unary_call.h:86
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:590
Definition: async_unary_call.h:58
Definition: client_context.h:154
void SendInitialMetadata(void *tag) override
Definition: async_unary_call.h:121
void ReadInitialMetadata(void *tag)
Definition: async_unary_call.h:77
Definition: async_unary_call.h:50
Codegen interface for grpc::Channel.
Definition: channel_interface.h:64
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:63
Primary implementaiton of CallOpSetInterface.
Definition: call.h:623
Definition: server_context.h:94
A thin wrapper around grpc_completion_queue (see src/core/lib/surface/completion_queue.h).
Definition: completion_queue.h:101
ClientAsyncResponseReader(ChannelInterface *channel, CompletionQueue *cq, const RpcMethod &method, ClientContext *context, const W &request)
Definition: async_unary_call.h:62
ServerAsyncResponseWriter(ServerContext *ctx)
Definition: async_unary_call.h:118
Definition: rpc_method.h:43
void PerformOps(CallOpSetInterface *ops)
Definition: call.h:691
bool ok() const
Is the status OK?
Definition: status.h:76
Did it work? If it didn't, why?
Definition: status.h:45
Definition: async_unary_call.h:116
A CallOpSet that does not post completions to the completion queue.
Definition: call.h:666
bool compression_level_set() const
Definition: server_context.h:140