diff --git a/src/core/surface/call.c b/src/core/surface/call.c index 2cb2cd6e9805f1ddf96f6966fd186d27816788e2..1e85b0f0826736ddeb77ecf39ed90cf048db73ba 100644 --- a/src/core/surface/call.c +++ b/src/core/surface/call.c @@ -49,6 +49,17 @@ #include <stdlib.h> #include <string.h> +/** The maximum number of completions possible. + Based upon the maximum number of individually queueable ops in the batch + api: + - initial metadata send + - message send + - status/close send (depending on client/server) + - initial metadata recv + - message recv + - status/close recv (depending on client/server) */ +#define MAX_CONCURRENT_COMPLETIONS 6 + typedef enum { REQ_INITIAL = 0, REQ_READY, REQ_DONE } req_state; typedef enum { @@ -255,7 +266,7 @@ struct grpc_call { grpc_iomgr_closure on_done_bind; /** completion events - for completion queue use */ - grpc_cq_completion completions[6]; + grpc_cq_completion completions[MAX_CONCURRENT_COMPLETIONS]; }; #define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))