47 #ifndef GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H
48 #define GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H
65 template <
class W,
class R>
66 class ClientReaderWriter;
72 template <
class W,
class R>
75 template <
class ServiceType,
class RequestType,
class ResponseType>
77 template <
class ServiceType,
class RequestType,
class ResponseType>
79 template <
class ServiceType,
class RequestType,
class ResponseType>
81 template <
class ServiceType,
class RequestType,
class ResponseType>
138 template <
typename T>
141 return AsyncNextInternal(tag, ok, deadline_tp.
raw_time());
151 bool Next(
void** tag,
bool* ok) {
184 static_cast<gpr_atm>(1));
192 friend class ::grpc::ClientReader;
194 friend class ::grpc::ClientWriter;
195 template <
class W,
class R>
196 friend class ::grpc::ClientReaderWriter;
198 friend class ::grpc::ServerReader;
200 friend class ::grpc::ServerWriter;
201 template <
class W,
class R>
202 friend class ::grpc::internal::ServerReaderWriterBody;
203 template <
class ServiceType,
class RequestType,
class ResponseType>
205 template <
class ServiceType,
class RequestType,
class ResponseType>
207 template <
class ServiceType,
class RequestType,
class ResponseType>
209 template <
class Streamer,
bool WriteNeeded>
212 friend class ::grpc::Server;
213 friend class ::grpc::ServerContext;
214 template <
class InputMessage,
class OutputMessage>
218 const InputMessage& request,
219 OutputMessage* result);
229 cq_, tag, deadline,
nullptr);
235 return ev.success != 0;
243 cq_, tag, deadline,
nullptr);
263 bool is_frequently_polled_;
270 : is_frequently_polled_(is_frequently_polled) {}
275 #endif // GRPCXX_IMPL_CODEGEN_COMPLETION_QUEUE_H
An interface allowing implementors to process and filter event tags.
Definition: completion_queue_tag.h:40
friend Status BlockingUnaryCall(ChannelInterface *channel, const RpcMethod &method, ClientContext *context, const InputMessage &request, OutputMessage *result)
Definition: client_unary_call.h:52
virtual gpr_timespec gpr_inf_future(gpr_clock_type type)=0
virtual bool FinalizeResult(void **tag, bool *status)=0
Definition: completion_queue.h:73
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:122
Got a new event; tag will be filled in with its associated value; ok indicating its success...
Definition: completion_queue.h:123
No event before timeout.
Definition: grpc_types.h:385
intptr_t gpr_atm
Definition: atm_gcc_atomic.h:41
int success
non-zero if the operation was successful, 0 upon failure.
Definition: grpc_types.h:398
The completion queue has been shutdown.
Definition: completion_queue.h:122
gpr_timespec raw_time()
Definition: time.h:57
#define gpr_atm_no_barrier_fetch_add(p, delta)
Definition: atm_gcc_atomic.h:67
bool IsFrequentlyPolled()
Definition: completion_queue.h:260
virtual void grpc_completion_queue_destroy(grpc_completion_queue *cq)=0
Classes that require gRPC to be initialized should inherit from this class.
Definition: grpc_library.h:52
grpc_completion_queue * cq()
Returns a raw pointer to the underlying grpc_completion_queue instance.
Definition: completion_queue.h:171
Definition: client_context.h:154
Definition: completion_queue.h:68
bool Next(void **tag, bool *ok)
Read from the queue, blocking until an event is available or the queue is shutting down...
Definition: completion_queue.h:151
void RegisterAvalanching()
Definition: completion_queue.h:182
Definition: method_handler_impl.h:253
Definition: method_handler_impl.h:177
NextStatus AsyncNext(void **tag, bool *ok, const T &deadline)
Read from the queue, blocking up to deadline (or the queue's shutdown).
Definition: completion_queue.h:139
~CompletionQueue()
Destructor. Destroys the owned wrapped completion queue / instance.
Definition: completion_queue.h:116
Models a gRPC server.
Definition: server.h:66
Definition: completion_queue.h:76
void Shutdown()
Request the shutdown of the queue.
void CompleteAvalanching()
Codegen interface for grpc::Channel.
Definition: channel_interface.h:64
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:63
NextStatus
Tri-state return for AsyncNext: SHUTDOWN, GOT_EVENT, TIMEOUT.
Definition: completion_queue.h:121
CompletionQueue()
Default constructor.
Definition: completion_queue.h:105
Definition: server_context.h:94
Definition: gpr_types.h:52
Definition: completion_queue.h:70
A thin wrapper around grpc_completion_queue (see src/core/lib/surface/completion_queue.h).
Definition: completion_queue.h:101
void InitialAvalanching()
Manage state of avalanching operations : completion queue tags that trigger other completion queue op...
Definition: completion_queue.h:179
Definition: completion_queue.h:78
Definition: rpc_method.h:43
#define gpr_atm_rel_store(p, value)
Definition: atm_gcc_atomic.h:62
Interface between the codegen library and the minimal subset of core features required by the generat...
Definition: core_codegen_interface.h:56
Definition: completion_queue.h:80
Did it work? If it didn't, why?
Definition: status.h:45
Definition: gpr_types.h:63
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue.h:258
struct grpc_completion_queue grpc_completion_queue
Completion Queues enable notification of the completion of asynchronous actions.
Definition: grpc_types.h:71
virtual gpr_timespec gpr_time_0(gpr_clock_type type)=0
Definition: completion_queue.h:82
A builder class for the creation and startup of grpc::Server instances.
Definition: server_builder.h:68
deadline was reached.
Definition: completion_queue.h:125
virtual grpc_completion_queue * grpc_completion_queue_create(void *reserved)=0
virtual grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, void *tag, gpr_timespec deadline, void *reserved)=0
Channels represent a connection to an endpoint. Created by CreateChannel.
Definition: channel.h:49