Formalize max pluckers

pull/2765/head
Craig Tiller 9 years ago
parent 4d31d6c9f7
commit 137511f2d0
  1. 9
      include/grpc/grpc.h
  2. 6
      src/core/surface/completion_queue.c

@ -391,10 +391,17 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cq,
otherwise a grpc_event describing the event that occurred.
Callers must not call grpc_completion_queue_next and
grpc_completion_queue_pluck simultaneously on the same completion queue. */
grpc_completion_queue_pluck simultaneously on the same completion queue.
Completion queues support a maximum of GRPC_MAX_COMPLETION_QUEUE_PLUCKERS
concurrently executing plucks at any time. */
grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, void *tag,
gpr_timespec deadline);
/** Maximum number of outstanding grpc_completion_queue_pluck executions per
completion queue */
#define GRPC_MAX_COMPLETION_QUEUE_PLUCKERS 6
/** Begin destruction of a completion queue. Once all possible events are
drained then grpc_completion_queue_next will start to produce
GRPC_QUEUE_SHUTDOWN events only. At that point it's safe to call

@ -45,8 +45,6 @@
#include <grpc/support/atm.h>
#include <grpc/support/log.h>
#define MAX_PLUCKERS 4
typedef struct {
grpc_pollset_worker *worker;
void *tag;
@ -68,7 +66,7 @@ struct grpc_completion_queue {
int shutdown_called;
int is_server_cq;
int num_pluckers;
plucker pluckers[MAX_PLUCKERS];
plucker pluckers[GRPC_MAX_COMPLETION_QUEUE_PLUCKERS];
};
grpc_completion_queue *grpc_completion_queue_create(void) {
@ -205,7 +203,7 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
static void add_plucker(grpc_completion_queue *cc, void *tag,
grpc_pollset_worker *worker) {
GPR_ASSERT(cc->num_pluckers != MAX_PLUCKERS);
GPR_ASSERT(cc->num_pluckers != GRPC_MAX_COMPLETION_QUEUE_PLUCKERS);
cc->pluckers[cc->num_pluckers].tag = tag;
cc->pluckers[cc->num_pluckers].worker = worker;
cc->num_pluckers++;

Loading…
Cancel
Save