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;
71 template <
class W,
class R>
73 template <
class ServiceType,
class RequestType,
class ResponseType>
75 template <
class ServiceType,
class RequestType,
class ResponseType>
77 template <
class ServiceType,
class RequestType,
class ResponseType>
79 template <
class ServiceType,
class RequestType,
class ResponseType>
133 template <
typename T>
136 return AsyncNextInternal(tag, ok, deadline_tp.
raw_time());
146 bool Next(
void** tag,
bool* ok) {
147 return (AsyncNextInternal(tag, ok, g_core_codegen_interface->
gpr_inf_future(
171 friend class ::grpc::ClientReader;
173 friend class ::grpc::ClientWriter;
174 template <
class W,
class R>
175 friend class ::grpc::ClientReaderWriter;
177 friend class ::grpc::ServerReader;
179 friend class ::grpc::ServerWriter;
180 template <
class W,
class R>
181 friend class ::grpc::ServerReaderWriter;
182 template <
class ServiceType,
class RequestType,
class ResponseType>
184 template <
class ServiceType,
class RequestType,
class ResponseType>
186 template <
class ServiceType,
class RequestType,
class ResponseType>
188 template <
class ServiceType,
class RequestType,
class ResponseType>
191 friend class ::grpc::Server;
192 friend class ::grpc::ServerContext;
193 template <
class InputMessage,
class OutputMessage>
197 const InputMessage& request,
198 OutputMessage* result);
208 cq_, tag, deadline,
nullptr);
214 return ev.success != 0;
222 cq_, tag, deadline,
nullptr);
240 bool is_frequently_polled_;
247 : is_frequently_polled_(is_frequently_polled) {}
252 #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
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:97
Got a new event; tag will be filled in with its associated value; ok indicating its success...
Definition: completion_queue.h:118
No event before timeout.
Definition: grpc_types.h:250
int success
non-zero if the operation was successful, 0 upon failure.
Definition: grpc_types.h:263
The completion queue has been shutdown.
Definition: completion_queue.h:117
GPRAPI gpr_timespec gpr_time_0(gpr_clock_type type)
gpr_timespec raw_time()
Definition: time.h:57
bool IsFrequentlyPolled()
Definition: completion_queue.h:237
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:53
grpc_completion_queue * cq()
Returns a raw pointer to the underlying grpc_completion_queue instance.
Definition: completion_queue.h:165
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:146
Definition: method_handler_impl.h:206
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:134
~CompletionQueue()
Destructor. Destroys the owned wrapped completion queue / instance.
Definition: completion_queue.h:111
Models a gRPC server.
Definition: server.h:67
Definition: completion_queue.h:74
void Shutdown()
Request the shutdown of the queue.
Codegen interface for grpc::Channel.
Definition: channel_interface.h:64
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:62
NextStatus
Tri-state return for AsyncNext: SHUTDOWN, GOT_EVENT, TIMEOUT.
Definition: completion_queue.h:116
CompletionQueue()
Default constructor.
Definition: completion_queue.h:101
Definition: server_context.h:91
Definition: completion_queue.h:70
A thin wrapper around grpc_completion_queue (see / src/core/surface/completion_queue.h).
Definition: completion_queue.h:97
Definition: completion_queue.h:76
Definition: rpc_method.h:43
Server-side interface for bi-directional streaming.
Definition: completion_queue.h:72
Interface between the codegen library and the minimal subset of core features required by the generat...
Definition: core_codegen_interface.h:50
Definition: completion_queue.h:78
Did it work? If it didn't, why?
Definition: status.h:45
A specific type of completion queue used by the processing of notifications by servers.
Definition: completion_queue.h:235
struct grpc_completion_queue grpc_completion_queue
Completion Queues enable notification of the completion of asynchronous actions.
Definition: grpc_types.h:48
Definition: completion_queue.h:80
A builder class for the creation and startup of grpc::Server instances.
Definition: server_builder.h:61
deadline was reached.
Definition: completion_queue.h:120
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