|  | @@ -51,14 +51,15 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  typedef struct freereq {
 | 
	
		
			
				|  |  |    gpr_mu *mu;
 | 
	
		
			
				|  |  | -  grpc_pollset *pollset;
 | 
	
		
			
				|  |  | +  grpc_polling_entity pops;
 | 
	
		
			
				|  |  |    int done;
 | 
	
		
			
				|  |  |  } freereq;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static void destroy_pollset_and_shutdown(grpc_exec_ctx *exec_ctx, void *p,
 | 
	
		
			
				|  |  | -                                         bool success) {
 | 
	
		
			
				|  |  | -  grpc_pollset_destroy(p);
 | 
	
		
			
				|  |  | -  gpr_free(p);
 | 
	
		
			
				|  |  | +static void destroy_pops_and_shutdown(grpc_exec_ctx *exec_ctx, void *p,
 | 
	
		
			
				|  |  | +                                      bool success) {
 | 
	
		
			
				|  |  | +  grpc_pollset *pollset = grpc_polling_entity_pollset(p);
 | 
	
		
			
				|  |  | +  grpc_pollset_destroy(pollset);
 | 
	
		
			
				|  |  | +  gpr_free(pollset);
 | 
	
		
			
				|  |  |    grpc_shutdown();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -67,7 +68,7 @@ static void freed_port_from_server(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
		
			
				|  |  |    freereq *pr = arg;
 | 
	
		
			
				|  |  |    gpr_mu_lock(pr->mu);
 | 
	
		
			
				|  |  |    pr->done = 1;
 | 
	
		
			
				|  |  | -  grpc_pollset_kick(pr->pollset, NULL);
 | 
	
		
			
				|  |  | +  grpc_pollset_kick(grpc_polling_entity_pollset(&pr->pops), NULL);
 | 
	
		
			
				|  |  |    gpr_mu_unlock(pr->mu);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -84,23 +85,23 @@ void grpc_free_port_using_server(char *server, int port) {
 | 
	
		
			
				|  |  |    memset(&pr, 0, sizeof(pr));
 | 
	
		
			
				|  |  |    memset(&req, 0, sizeof(req));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  pr.pollset = gpr_malloc(grpc_pollset_size());
 | 
	
		
			
				|  |  | -  grpc_pollset_init(pr.pollset, &pr.mu);
 | 
	
		
			
				|  |  | -  shutdown_closure =
 | 
	
		
			
				|  |  | -      grpc_closure_create(destroy_pollset_and_shutdown, pr.pollset);
 | 
	
		
			
				|  |  | +  grpc_pollset *pollset = gpr_malloc(grpc_pollset_size());
 | 
	
		
			
				|  |  | +  grpc_pollset_init(pollset, &pr.mu);
 | 
	
		
			
				|  |  | +  pr.pops = grpc_polling_entity_create_from_pollset(pollset);
 | 
	
		
			
				|  |  | +  shutdown_closure = grpc_closure_create(destroy_pops_and_shutdown, &pr.pops);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    req.host = server;
 | 
	
		
			
				|  |  |    gpr_asprintf(&path, "/drop/%d", port);
 | 
	
		
			
				|  |  |    req.http.path = path;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    grpc_httpcli_context_init(&context);
 | 
	
		
			
				|  |  | -  grpc_httpcli_get(&exec_ctx, &context, pr.pollset, &req,
 | 
	
		
			
				|  |  | +  grpc_httpcli_get(&exec_ctx, &context, &pr.pops, &req,
 | 
	
		
			
				|  |  |                     GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), freed_port_from_server,
 | 
	
		
			
				|  |  |                     &pr);
 | 
	
		
			
				|  |  |    gpr_mu_lock(pr.mu);
 | 
	
		
			
				|  |  |    while (!pr.done) {
 | 
	
		
			
				|  |  |      grpc_pollset_worker *worker = NULL;
 | 
	
		
			
				|  |  | -    grpc_pollset_work(&exec_ctx, pr.pollset, &worker,
 | 
	
		
			
				|  |  | +    grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), &worker,
 | 
	
		
			
				|  |  |                        gpr_now(GPR_CLOCK_MONOTONIC),
 | 
	
		
			
				|  |  |                        GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1));
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -108,14 +109,15 @@ void grpc_free_port_using_server(char *server, int port) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    grpc_httpcli_context_destroy(&context);
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 | 
	
		
			
				|  |  | -  grpc_pollset_shutdown(&exec_ctx, pr.pollset, shutdown_closure);
 | 
	
		
			
				|  |  | +  grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops),
 | 
	
		
			
				|  |  | +                        shutdown_closure);
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 | 
	
		
			
				|  |  |    gpr_free(path);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  typedef struct portreq {
 | 
	
		
			
				|  |  |    gpr_mu *mu;
 | 
	
		
			
				|  |  | -  grpc_pollset *pollset;
 | 
	
		
			
				|  |  | +  grpc_polling_entity pops;
 | 
	
		
			
				|  |  |    int port;
 | 
	
		
			
				|  |  |    int retries;
 | 
	
		
			
				|  |  |    char *server;
 | 
	
	
		
			
				|  | @@ -151,7 +153,7 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
		
			
				|  |  |      pr->retries++;
 | 
	
		
			
				|  |  |      req.host = pr->server;
 | 
	
		
			
				|  |  |      req.http.path = "/get";
 | 
	
		
			
				|  |  | -    grpc_httpcli_get(exec_ctx, pr->ctx, pr->pollset, &req,
 | 
	
		
			
				|  |  | +    grpc_httpcli_get(exec_ctx, pr->ctx, &pr->pops, &req,
 | 
	
		
			
				|  |  |                       GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), got_port_from_server,
 | 
	
		
			
				|  |  |                       pr);
 | 
	
		
			
				|  |  |      return;
 | 
	
	
		
			
				|  | @@ -165,7 +167,7 @@ static void got_port_from_server(grpc_exec_ctx *exec_ctx, void *arg,
 | 
	
		
			
				|  |  |    GPR_ASSERT(port > 1024);
 | 
	
		
			
				|  |  |    gpr_mu_lock(pr->mu);
 | 
	
		
			
				|  |  |    pr->port = port;
 | 
	
		
			
				|  |  | -  grpc_pollset_kick(pr->pollset, NULL);
 | 
	
		
			
				|  |  | +  grpc_pollset_kick(grpc_polling_entity_pollset(&pr->pops), NULL);
 | 
	
		
			
				|  |  |    gpr_mu_unlock(pr->mu);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -180,10 +182,10 @@ int grpc_pick_port_using_server(char *server) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    memset(&pr, 0, sizeof(pr));
 | 
	
		
			
				|  |  |    memset(&req, 0, sizeof(req));
 | 
	
		
			
				|  |  | -  pr.pollset = gpr_malloc(grpc_pollset_size());
 | 
	
		
			
				|  |  | -  grpc_pollset_init(pr.pollset, &pr.mu);
 | 
	
		
			
				|  |  | -  shutdown_closure =
 | 
	
		
			
				|  |  | -      grpc_closure_create(destroy_pollset_and_shutdown, pr.pollset);
 | 
	
		
			
				|  |  | +  grpc_pollset *pollset = gpr_malloc(grpc_pollset_size());
 | 
	
		
			
				|  |  | +  grpc_pollset_init(pollset, &pr.mu);
 | 
	
		
			
				|  |  | +  pr.pops = grpc_polling_entity_create_from_pollset(pollset);
 | 
	
		
			
				|  |  | +  shutdown_closure = grpc_closure_create(destroy_pops_and_shutdown, &pr.pops);
 | 
	
		
			
				|  |  |    pr.port = -1;
 | 
	
		
			
				|  |  |    pr.server = server;
 | 
	
		
			
				|  |  |    pr.ctx = &context;
 | 
	
	
		
			
				|  | @@ -192,21 +194,22 @@ int grpc_pick_port_using_server(char *server) {
 | 
	
		
			
				|  |  |    req.http.path = "/get";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    grpc_httpcli_context_init(&context);
 | 
	
		
			
				|  |  | -  grpc_httpcli_get(&exec_ctx, &context, pr.pollset, &req,
 | 
	
		
			
				|  |  | +  grpc_httpcli_get(&exec_ctx, &context, &pr.pops, &req,
 | 
	
		
			
				|  |  |                     GRPC_TIMEOUT_SECONDS_TO_DEADLINE(10), got_port_from_server,
 | 
	
		
			
				|  |  |                     &pr);
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 | 
	
		
			
				|  |  |    gpr_mu_lock(pr.mu);
 | 
	
		
			
				|  |  |    while (pr.port == -1) {
 | 
	
		
			
				|  |  |      grpc_pollset_worker *worker = NULL;
 | 
	
		
			
				|  |  | -    grpc_pollset_work(&exec_ctx, pr.pollset, &worker,
 | 
	
		
			
				|  |  | +    grpc_pollset_work(&exec_ctx, grpc_polling_entity_pollset(&pr.pops), &worker,
 | 
	
		
			
				|  |  |                        gpr_now(GPR_CLOCK_MONOTONIC),
 | 
	
		
			
				|  |  |                        GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1));
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    gpr_mu_unlock(pr.mu);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    grpc_httpcli_context_destroy(&context);
 | 
	
		
			
				|  |  | -  grpc_pollset_shutdown(&exec_ctx, pr.pollset, shutdown_closure);
 | 
	
		
			
				|  |  | +  grpc_pollset_shutdown(&exec_ctx, grpc_polling_entity_pollset(&pr.pops),
 | 
	
		
			
				|  |  | +                        shutdown_closure);
 | 
	
		
			
				|  |  |    grpc_exec_ctx_finish(&exec_ctx);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    return pr.port;
 |