|  | @@ -64,6 +64,10 @@ typedef struct {
 | 
	
		
			
				|  |  |  struct grpc_completion_queue {
 | 
	
		
			
				|  |  |    /** owned by pollset */
 | 
	
		
			
				|  |  |    gpr_mu *mu;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  grpc_cq_completion_type completion_type;
 | 
	
		
			
				|  |  | +  grpc_cq_polling_type polling_type;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /** completed events */
 | 
	
		
			
				|  |  |    grpc_cq_completion completed_head;
 | 
	
		
			
				|  |  |    grpc_cq_completion *completed_tail;
 | 
	
	
		
			
				|  | @@ -79,6 +83,7 @@ struct grpc_completion_queue {
 | 
	
		
			
				|  |  |    int shutdown_called;
 | 
	
		
			
				|  |  |    int is_server_cq;
 | 
	
		
			
				|  |  |    /** Can the server cq accept incoming channels */
 | 
	
		
			
				|  |  | +  /* TODO: sreek - This will no longer be needed. Use polling_type set */
 | 
	
		
			
				|  |  |    int is_non_listening_server_cq;
 | 
	
		
			
				|  |  |    int num_pluckers;
 | 
	
		
			
				|  |  |    plucker pluckers[GRPC_MAX_COMPLETION_QUEUE_PLUCKERS];
 | 
	
	
		
			
				|  | @@ -110,7 +115,9 @@ int grpc_cq_event_timeout_trace;
 | 
	
		
			
				|  |  |  static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *cc,
 | 
	
		
			
				|  |  |                                       grpc_error *error);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
 | 
	
		
			
				|  |  | +grpc_completion_queue *grpc_completion_queue_create_ex(
 | 
	
		
			
				|  |  | +    grpc_cq_completion_type completion_type, grpc_cq_polling_type polling_type,
 | 
	
		
			
				|  |  | +    void *reserved) {
 | 
	
		
			
				|  |  |    grpc_completion_queue *cc;
 | 
	
		
			
				|  |  |    GPR_ASSERT(!reserved);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -148,6 +155,10 @@ grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
 | 
	
		
			
				|  |  |    return cc;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +grpc_completion_queue *grpc_completion_queue_create(void *reserved) {
 | 
	
		
			
				|  |  | +  return grpc_completion_queue_create_ex(0, DEFAULT_POLLING, reserved);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #ifdef GRPC_CQ_REF_COUNT_DEBUG
 | 
	
		
			
				|  |  |  void grpc_cq_internal_ref(grpc_completion_queue *cc, const char *reason,
 | 
	
		
			
				|  |  |                            const char *file, int line) {
 | 
	
	
		
			
				|  | @@ -356,8 +367,9 @@ grpc_event grpc_completion_queue_next(grpc_completion_queue *cc,
 | 
	
		
			
				|  |  |        "deadline=gpr_timespec { tv_sec: %" PRId64
 | 
	
		
			
				|  |  |        ", tv_nsec: %d, clock_type: %d }, "
 | 
	
		
			
				|  |  |        "reserved=%p)",
 | 
	
		
			
				|  |  | -      5, (cc, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
 | 
	
		
			
				|  |  | -          reserved));
 | 
	
		
			
				|  |  | +      5,
 | 
	
		
			
				|  |  | +      (cc, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
 | 
	
		
			
				|  |  | +       reserved));
 | 
	
		
			
				|  |  |    GPR_ASSERT(!reserved);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    dump_pending_tags(cc);
 | 
	
	
		
			
				|  | @@ -524,8 +536,9 @@ grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cc, void *tag,
 | 
	
		
			
				|  |  |          "deadline=gpr_timespec { tv_sec: %" PRId64
 | 
	
		
			
				|  |  |          ", tv_nsec: %d, clock_type: %d }, "
 | 
	
		
			
				|  |  |          "reserved=%p)",
 | 
	
		
			
				|  |  | -        6, (cc, tag, deadline.tv_sec, deadline.tv_nsec,
 | 
	
		
			
				|  |  | -            (int)deadline.clock_type, reserved));
 | 
	
		
			
				|  |  | +        6,
 | 
	
		
			
				|  |  | +        (cc, tag, deadline.tv_sec, deadline.tv_nsec, (int)deadline.clock_type,
 | 
	
		
			
				|  |  | +         reserved));
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    GPR_ASSERT(!reserved);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -681,10 +694,14 @@ grpc_completion_queue *grpc_cq_from_pollset(grpc_pollset *ps) {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void grpc_cq_mark_non_listening_server_cq(grpc_completion_queue *cc) {
 | 
	
		
			
				|  |  | +  /* TODO: sreek - use cc->polling_type field here and add a validation check
 | 
	
		
			
				|  |  | +     (i.e grpc_cq_mark_non_listening_server_cq can only be called on a cc whose
 | 
	
		
			
				|  |  | +     polling_type is set to NON_LISTENING */
 | 
	
		
			
				|  |  |    cc->is_non_listening_server_cq = 1;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  bool grpc_cq_is_non_listening_server_cq(grpc_completion_queue *cc) {
 | 
	
		
			
				|  |  | +  /* TODO (sreek) - return (cc->polling_type == NON_LISTENING) */
 | 
	
		
			
				|  |  |    return (cc->is_non_listening_server_cq == 1);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |