36 #ifndef GRPCXX_COMPLETION_QUEUE_H
37 #define GRPCXX_COMPLETION_QUEUE_H
39 #include <grpc/support/time.h>
44 struct grpc_completion_queue;
52 template <
class R,
class W>
53 class ClientReaderWriter;
58 template <
class R,
class W>
60 template <
class ServiceType,
class RequestType,
class ResponseType>
62 template <
class ServiceType,
class RequestType,
class ResponseType>
64 template <
class ServiceType,
class RequestType,
class ResponseType>
66 template <
class ServiceType,
class RequestType,
class ResponseType>
113 template <
typename T>
116 return AsyncNextInternal(tag, ok, deadline_tp.
raw_time());
126 bool Next(
void** tag,
bool* ok) {
127 return (AsyncNextInternal(tag, ok, gpr_inf_future(GPR_CLOCK_REALTIME)) !=
145 grpc_completion_queue*
cq() {
return cq_; }
151 friend class ::grpc::ClientReader;
153 friend class ::grpc::ClientWriter;
154 template <
class R,
class W>
155 friend class ::grpc::ClientReaderWriter;
157 friend class ::grpc::ServerReader;
159 friend class ::grpc::ServerWriter;
160 template <
class R,
class W>
161 friend class ::grpc::ServerReaderWriter;
162 template <
class ServiceType,
class RequestType,
class ResponseType>
164 template <
class ServiceType,
class RequestType,
class ResponseType>
166 template <
class ServiceType,
class RequestType,
class ResponseType>
168 template <
class ServiceType,
class RequestType,
class ResponseType>
171 friend class ::grpc::Server;
172 friend class ::grpc::ServerContext;
173 template <
class InputMessage,
class OutputMessage>
176 const InputMessage& request,
177 OutputMessage* result);
179 NextStatus AsyncNextInternal(
void** tag,
bool* ok, gpr_timespec deadline);
188 grpc_completion_queue* cq_;
212 #endif // GRPCXX_COMPLETION_QUEUE_H
An interface allowing implementors to process and filter event tags.
Definition: completion_queue.h:192
friend Status BlockingUnaryCall(Channel *channel, const RpcMethod &method, ClientContext *context, const InputMessage &request, OutputMessage *result)
Definition: client_unary_call.h:50
virtual bool FinalizeResult(void **tag, bool *status)=0
Got a new event; tag will be filled in with its associated value; ok indicating its success...
Definition: completion_queue.h:98
The completion queue has been shutdown.
Definition: completion_queue.h:97
gpr_timespec raw_time()
Definition: time.h:56
grpc_completion_queue * cq()
Returns a raw pointer to the underlying grpc_completion_queue instance.
Definition: completion_queue.h:145
Definition: client_context.h:149
Definition: completion_queue.h:55
~CompletionQueue() GRPC_OVERRIDE
Destructor. Destroys the owned wrapped completion queue / instance.
Definition: completion_queue.cc:49
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:126
Definition: rpc_service_method.h:212
Definition: grpc_library.h:41
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:114
virtual ~CompletionQueueTag()
Definition: completion_queue.h:194
Models a gRPC server.
Definition: server.h:63
Definition: completion_queue.h:61
void Shutdown()
Request the shutdown of the queue.
Definition: completion_queue.cc:51
NextStatus
Tri-state return for AsyncNext: SHUTDOWN, GOT_EVENT, TIMEOUT.
Definition: completion_queue.h:96
CompletionQueue()
Default constructor.
Definition: completion_queue.cc:43
Definition: server_context.h:89
Definition: completion_queue.h:57
A thin wrapper around grpc_completion_queue (see / src/core/surface/completion_queue.h).
Definition: completion_queue.h:81
Definition: completion_queue.h:63
Definition: rpc_method.h:43
Server-side interface for bi-directional streaming.
Definition: completion_queue.h:59
Definition: completion_queue.h:65
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:204
#define GRPC_OVERRIDE
Definition: config.h:77
Definition: completion_queue.h:67
A builder class for the creation and startup of grpc::Server instances.
Definition: server_builder.h:55
deadline was reached.
Definition: completion_queue.h:100
Channels represent a connection to an endpoint. Created by CreateChannel.
Definition: channel.h:69