diff options
author | 2015-09-22 10:42:19 -0700 | |
---|---|---|
committer | 2015-09-22 10:42:19 -0700 | |
commit | 45724b35e411fef7c5da66a74c78428c11d56843 (patch) | |
tree | 9264034aca675c89444e02f72ef58e67d7043604 /src/core/client_config/lb_policies/pick_first.c | |
parent | 298751c1195523ef6228595043b583c3a6270e08 (diff) |
indent pass to get logical source lines on one physical line
Diffstat (limited to 'src/core/client_config/lb_policies/pick_first.c')
-rw-r--r-- | src/core/client_config/lb_policies/pick_first.c | 463 |
1 files changed, 241 insertions, 222 deletions
diff --git a/src/core/client_config/lb_policies/pick_first.c b/src/core/client_config/lb_policies/pick_first.c index 7557053711..b8991dfaa7 100644 --- a/src/core/client_config/lb_policies/pick_first.c +++ b/src/core/client_config/lb_policies/pick_first.c @@ -39,14 +39,16 @@ #include <grpc/support/alloc.h> #include "src/core/transport/connectivity_state.h" -typedef struct pending_pick { +typedef struct pending_pick +{ struct pending_pick *next; grpc_pollset *pollset; grpc_subchannel **target; grpc_closure *on_complete; } pending_pick; -typedef struct { +typedef struct +{ /** base policy: must be first */ grpc_lb_policy base; /** all our subchannels */ @@ -76,286 +78,303 @@ typedef struct { grpc_connectivity_state_tracker state_tracker; } pick_first_lb_policy; -static void del_interested_parties_locked(pick_first_lb_policy *p, - grpc_closure_list *closure_list) { +static void +del_interested_parties_locked (pick_first_lb_policy * p, grpc_closure_list * closure_list) +{ pending_pick *pp; - for (pp = p->pending_picks; pp; pp = pp->next) { - grpc_subchannel_del_interested_party(p->subchannels[p->checking_subchannel], - pp->pollset, closure_list); - } + for (pp = p->pending_picks; pp; pp = pp->next) + { + grpc_subchannel_del_interested_party (p->subchannels[p->checking_subchannel], pp->pollset, closure_list); + } } -static void add_interested_parties_locked(pick_first_lb_policy *p, - grpc_closure_list *closure_list) { +static void +add_interested_parties_locked (pick_first_lb_policy * p, grpc_closure_list * closure_list) +{ pending_pick *pp; - for (pp = p->pending_picks; pp; pp = pp->next) { - grpc_subchannel_add_interested_party(p->subchannels[p->checking_subchannel], - pp->pollset, closure_list); - } + for (pp = p->pending_picks; pp; pp = pp->next) + { + grpc_subchannel_add_interested_party (p->subchannels[p->checking_subchannel], pp->pollset, closure_list); + } } -void pf_destroy(grpc_lb_policy *pol, grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; +void +pf_destroy (grpc_lb_policy * pol, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; size_t i; - GPR_ASSERT(p->pending_picks == NULL); - for (i = 0; i < p->num_subchannels; i++) { - GRPC_SUBCHANNEL_UNREF(p->subchannels[i], "pick_first", closure_list); - } - grpc_connectivity_state_destroy(&p->state_tracker, closure_list); - gpr_free(p->subchannels); - gpr_mu_destroy(&p->mu); - gpr_free(p); + GPR_ASSERT (p->pending_picks == NULL); + for (i = 0; i < p->num_subchannels; i++) + { + GRPC_SUBCHANNEL_UNREF (p->subchannels[i], "pick_first", closure_list); + } + grpc_connectivity_state_destroy (&p->state_tracker, closure_list); + gpr_free (p->subchannels); + gpr_mu_destroy (&p->mu); + gpr_free (p); } -void pf_shutdown(grpc_lb_policy *pol, grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; +void +pf_shutdown (grpc_lb_policy * pol, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; pending_pick *pp; - gpr_mu_lock(&p->mu); - del_interested_parties_locked(p, closure_list); + gpr_mu_lock (&p->mu); + del_interested_parties_locked (p, closure_list); p->shutdown = 1; pp = p->pending_picks; p->pending_picks = NULL; - grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_FATAL_FAILURE, - "shutdown", closure_list); - gpr_mu_unlock(&p->mu); - while (pp != NULL) { - pending_pick *next = pp->next; - *pp->target = NULL; - grpc_closure_list_add(closure_list, pp->on_complete, 1); - gpr_free(pp); - pp = next; - } + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_FATAL_FAILURE, "shutdown", closure_list); + gpr_mu_unlock (&p->mu); + while (pp != NULL) + { + pending_pick *next = pp->next; + *pp->target = NULL; + grpc_closure_list_add (closure_list, pp->on_complete, 1); + gpr_free (pp); + pp = next; + } } -static void start_picking(pick_first_lb_policy *p, - grpc_closure_list *closure_list) { +static void +start_picking (pick_first_lb_policy * p, grpc_closure_list * closure_list) +{ p->started_picking = 1; p->checking_subchannel = 0; p->checking_connectivity = GRPC_CHANNEL_IDLE; - GRPC_LB_POLICY_REF(&p->base, "pick_first_connectivity"); - grpc_subchannel_notify_on_state_change( - p->subchannels[p->checking_subchannel], &p->checking_connectivity, - &p->connectivity_changed, closure_list); + GRPC_LB_POLICY_REF (&p->base, "pick_first_connectivity"); + grpc_subchannel_notify_on_state_change (p->subchannels[p->checking_subchannel], &p->checking_connectivity, &p->connectivity_changed, closure_list); } -void pf_exit_idle(grpc_lb_policy *pol, grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; - gpr_mu_lock(&p->mu); - if (!p->started_picking) { - start_picking(p, closure_list); - } - gpr_mu_unlock(&p->mu); +void +pf_exit_idle (grpc_lb_policy * pol, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; + gpr_mu_lock (&p->mu); + if (!p->started_picking) + { + start_picking (p, closure_list); + } + gpr_mu_unlock (&p->mu); } -void pf_pick(grpc_lb_policy *pol, grpc_pollset *pollset, - grpc_metadata_batch *initial_metadata, grpc_subchannel **target, - grpc_closure *on_complete, grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; +void +pf_pick (grpc_lb_policy * pol, grpc_pollset * pollset, grpc_metadata_batch * initial_metadata, grpc_subchannel ** target, grpc_closure * on_complete, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; pending_pick *pp; - gpr_mu_lock(&p->mu); - if (p->selected) { - gpr_mu_unlock(&p->mu); - *target = p->selected; - grpc_closure_list_add(closure_list, on_complete, 1); - } else { - if (!p->started_picking) { - start_picking(p, closure_list); + gpr_mu_lock (&p->mu); + if (p->selected) + { + gpr_mu_unlock (&p->mu); + *target = p->selected; + grpc_closure_list_add (closure_list, on_complete, 1); + } + else + { + if (!p->started_picking) + { + start_picking (p, closure_list); + } + grpc_subchannel_add_interested_party (p->subchannels[p->checking_subchannel], pollset, closure_list); + pp = gpr_malloc (sizeof (*pp)); + pp->next = p->pending_picks; + pp->pollset = pollset; + pp->target = target; + pp->on_complete = on_complete; + p->pending_picks = pp; + gpr_mu_unlock (&p->mu); } - grpc_subchannel_add_interested_party(p->subchannels[p->checking_subchannel], - pollset, closure_list); - pp = gpr_malloc(sizeof(*pp)); - pp->next = p->pending_picks; - pp->pollset = pollset; - pp->target = target; - pp->on_complete = on_complete; - p->pending_picks = pp; - gpr_mu_unlock(&p->mu); - } } -static void pf_connectivity_changed(void *arg, int iomgr_success, - grpc_closure_list *closure_list) { +static void +pf_connectivity_changed (void *arg, int iomgr_success, grpc_closure_list * closure_list) +{ pick_first_lb_policy *p = arg; pending_pick *pp; - gpr_mu_lock(&p->mu); + gpr_mu_lock (&p->mu); - if (p->shutdown) { - gpr_mu_unlock(&p->mu); - GRPC_LB_POLICY_UNREF(&p->base, "pick_first_connectivity", closure_list); - return; - } else if (p->selected != NULL) { - grpc_connectivity_state_set(&p->state_tracker, p->checking_connectivity, - "selected_changed", closure_list); - if (p->checking_connectivity != GRPC_CHANNEL_FATAL_FAILURE) { - grpc_subchannel_notify_on_state_change( - p->selected, &p->checking_connectivity, &p->connectivity_changed, - closure_list); - } else { - GRPC_LB_POLICY_UNREF(&p->base, "pick_first_connectivity", closure_list); + if (p->shutdown) + { + gpr_mu_unlock (&p->mu); + GRPC_LB_POLICY_UNREF (&p->base, "pick_first_connectivity", closure_list); + return; } - } else { - loop: - switch (p->checking_connectivity) { - case GRPC_CHANNEL_READY: - grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_READY, - "connecting_ready", closure_list); - p->selected = p->subchannels[p->checking_subchannel]; - while ((pp = p->pending_picks)) { - p->pending_picks = pp->next; - *pp->target = p->selected; - grpc_subchannel_del_interested_party(p->selected, pp->pollset, - closure_list); - grpc_closure_list_add(closure_list, pp->on_complete, 1); - gpr_free(pp); - } - grpc_subchannel_notify_on_state_change( - p->selected, &p->checking_connectivity, &p->connectivity_changed, - closure_list); - break; - case GRPC_CHANNEL_TRANSIENT_FAILURE: - grpc_connectivity_state_set( - &p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, - "connecting_transient_failure", closure_list); - del_interested_parties_locked(p, closure_list); - p->checking_subchannel = - (p->checking_subchannel + 1) % p->num_subchannels; - p->checking_connectivity = grpc_subchannel_check_connectivity( - p->subchannels[p->checking_subchannel]); - add_interested_parties_locked(p, closure_list); - if (p->checking_connectivity == GRPC_CHANNEL_TRANSIENT_FAILURE) { - grpc_subchannel_notify_on_state_change( - p->subchannels[p->checking_subchannel], &p->checking_connectivity, - &p->connectivity_changed, closure_list); - } else { - goto loop; - } - break; - case GRPC_CHANNEL_CONNECTING: - case GRPC_CHANNEL_IDLE: - grpc_connectivity_state_set(&p->state_tracker, GRPC_CHANNEL_CONNECTING, - "connecting_changed", closure_list); - grpc_subchannel_notify_on_state_change( - p->subchannels[p->checking_subchannel], &p->checking_connectivity, - &p->connectivity_changed, closure_list); - break; - case GRPC_CHANNEL_FATAL_FAILURE: - del_interested_parties_locked(p, closure_list); - GPR_SWAP(grpc_subchannel *, p->subchannels[p->checking_subchannel], - p->subchannels[p->num_subchannels - 1]); - p->num_subchannels--; - GRPC_SUBCHANNEL_UNREF(p->subchannels[p->num_subchannels], "pick_first", - closure_list); - if (p->num_subchannels == 0) { - grpc_connectivity_state_set(&p->state_tracker, - GRPC_CHANNEL_FATAL_FAILURE, - "no_more_channels", closure_list); - while ((pp = p->pending_picks)) { - p->pending_picks = pp->next; - *pp->target = NULL; - grpc_closure_list_add(closure_list, pp->on_complete, 1); - gpr_free(pp); - } - GRPC_LB_POLICY_UNREF(&p->base, "pick_first_connectivity", - closure_list); - } else { - grpc_connectivity_state_set(&p->state_tracker, - GRPC_CHANNEL_TRANSIENT_FAILURE, - "subchannel_failed", closure_list); - p->checking_subchannel %= p->num_subchannels; - p->checking_connectivity = grpc_subchannel_check_connectivity( - p->subchannels[p->checking_subchannel]); - add_interested_parties_locked(p, closure_list); - goto loop; - } + else if (p->selected != NULL) + { + grpc_connectivity_state_set (&p->state_tracker, p->checking_connectivity, "selected_changed", closure_list); + if (p->checking_connectivity != GRPC_CHANNEL_FATAL_FAILURE) + { + grpc_subchannel_notify_on_state_change (p->selected, &p->checking_connectivity, &p->connectivity_changed, closure_list); + } + else + { + GRPC_LB_POLICY_UNREF (&p->base, "pick_first_connectivity", closure_list); + } + } + else + { + loop: + switch (p->checking_connectivity) + { + case GRPC_CHANNEL_READY: + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_READY, "connecting_ready", closure_list); + p->selected = p->subchannels[p->checking_subchannel]; + while ((pp = p->pending_picks)) + { + p->pending_picks = pp->next; + *pp->target = p->selected; + grpc_subchannel_del_interested_party (p->selected, pp->pollset, closure_list); + grpc_closure_list_add (closure_list, pp->on_complete, 1); + gpr_free (pp); + } + grpc_subchannel_notify_on_state_change (p->selected, &p->checking_connectivity, &p->connectivity_changed, closure_list); + break; + case GRPC_CHANNEL_TRANSIENT_FAILURE: + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, "connecting_transient_failure", closure_list); + del_interested_parties_locked (p, closure_list); + p->checking_subchannel = (p->checking_subchannel + 1) % p->num_subchannels; + p->checking_connectivity = grpc_subchannel_check_connectivity (p->subchannels[p->checking_subchannel]); + add_interested_parties_locked (p, closure_list); + if (p->checking_connectivity == GRPC_CHANNEL_TRANSIENT_FAILURE) + { + grpc_subchannel_notify_on_state_change (p->subchannels[p->checking_subchannel], &p->checking_connectivity, &p->connectivity_changed, closure_list); + } + else + { + goto loop; + } + break; + case GRPC_CHANNEL_CONNECTING: + case GRPC_CHANNEL_IDLE: + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_CONNECTING, "connecting_changed", closure_list); + grpc_subchannel_notify_on_state_change (p->subchannels[p->checking_subchannel], &p->checking_connectivity, &p->connectivity_changed, closure_list); + break; + case GRPC_CHANNEL_FATAL_FAILURE: + del_interested_parties_locked (p, closure_list); + GPR_SWAP (grpc_subchannel *, p->subchannels[p->checking_subchannel], p->subchannels[p->num_subchannels - 1]); + p->num_subchannels--; + GRPC_SUBCHANNEL_UNREF (p->subchannels[p->num_subchannels], "pick_first", closure_list); + if (p->num_subchannels == 0) + { + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_FATAL_FAILURE, "no_more_channels", closure_list); + while ((pp = p->pending_picks)) + { + p->pending_picks = pp->next; + *pp->target = NULL; + grpc_closure_list_add (closure_list, pp->on_complete, 1); + gpr_free (pp); + } + GRPC_LB_POLICY_UNREF (&p->base, "pick_first_connectivity", closure_list); + } + else + { + grpc_connectivity_state_set (&p->state_tracker, GRPC_CHANNEL_TRANSIENT_FAILURE, "subchannel_failed", closure_list); + p->checking_subchannel %= p->num_subchannels; + p->checking_connectivity = grpc_subchannel_check_connectivity (p->subchannels[p->checking_subchannel]); + add_interested_parties_locked (p, closure_list); + goto loop; + } + } } - } - gpr_mu_unlock(&p->mu); + gpr_mu_unlock (&p->mu); } -static void pf_broadcast(grpc_lb_policy *pol, grpc_transport_op *op, - grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; +static void +pf_broadcast (grpc_lb_policy * pol, grpc_transport_op * op, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; size_t i; size_t n; grpc_subchannel **subchannels; - gpr_mu_lock(&p->mu); + gpr_mu_lock (&p->mu); n = p->num_subchannels; - subchannels = gpr_malloc(n * sizeof(*subchannels)); - for (i = 0; i < n; i++) { - subchannels[i] = p->subchannels[i]; - GRPC_SUBCHANNEL_REF(subchannels[i], "pf_broadcast"); - } - gpr_mu_unlock(&p->mu); + subchannels = gpr_malloc (n * sizeof (*subchannels)); + for (i = 0; i < n; i++) + { + subchannels[i] = p->subchannels[i]; + GRPC_SUBCHANNEL_REF (subchannels[i], "pf_broadcast"); + } + gpr_mu_unlock (&p->mu); - for (i = 0; i < n; i++) { - grpc_subchannel_process_transport_op(subchannels[i], op, closure_list); - GRPC_SUBCHANNEL_UNREF(subchannels[i], "pf_broadcast", closure_list); - } - gpr_free(subchannels); + for (i = 0; i < n; i++) + { + grpc_subchannel_process_transport_op (subchannels[i], op, closure_list); + GRPC_SUBCHANNEL_UNREF (subchannels[i], "pf_broadcast", closure_list); + } + gpr_free (subchannels); } -static grpc_connectivity_state pf_check_connectivity( - grpc_lb_policy *pol, grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; +static grpc_connectivity_state +pf_check_connectivity (grpc_lb_policy * pol, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; grpc_connectivity_state st; - gpr_mu_lock(&p->mu); - st = grpc_connectivity_state_check(&p->state_tracker); - gpr_mu_unlock(&p->mu); + gpr_mu_lock (&p->mu); + st = grpc_connectivity_state_check (&p->state_tracker); + gpr_mu_unlock (&p->mu); return st; } -void pf_notify_on_state_change(grpc_lb_policy *pol, - grpc_connectivity_state *current, - grpc_closure *notify, - grpc_closure_list *closure_list) { - pick_first_lb_policy *p = (pick_first_lb_policy *)pol; - gpr_mu_lock(&p->mu); - grpc_connectivity_state_notify_on_state_change(&p->state_tracker, current, - notify, closure_list); - gpr_mu_unlock(&p->mu); +void +pf_notify_on_state_change (grpc_lb_policy * pol, grpc_connectivity_state * current, grpc_closure * notify, grpc_closure_list * closure_list) +{ + pick_first_lb_policy *p = (pick_first_lb_policy *) pol; + gpr_mu_lock (&p->mu); + grpc_connectivity_state_notify_on_state_change (&p->state_tracker, current, notify, closure_list); + gpr_mu_unlock (&p->mu); } static const grpc_lb_policy_vtable pick_first_lb_policy_vtable = { - pf_destroy, - pf_shutdown, - pf_pick, - pf_exit_idle, - pf_broadcast, - pf_check_connectivity, - pf_notify_on_state_change}; + pf_destroy, + pf_shutdown, + pf_pick, + pf_exit_idle, + pf_broadcast, + pf_check_connectivity, + pf_notify_on_state_change +}; -static void pick_first_factory_ref(grpc_lb_policy_factory *factory) {} +static void +pick_first_factory_ref (grpc_lb_policy_factory * factory) +{ +} -static void pick_first_factory_unref(grpc_lb_policy_factory *factory) {} +static void +pick_first_factory_unref (grpc_lb_policy_factory * factory) +{ +} -static grpc_lb_policy *create_pick_first(grpc_lb_policy_factory *factory, - grpc_lb_policy_args *args) { - pick_first_lb_policy *p = gpr_malloc(sizeof(*p)); - GPR_ASSERT(args->num_subchannels > 0); - memset(p, 0, sizeof(*p)); - grpc_lb_policy_init(&p->base, &pick_first_lb_policy_vtable); - p->subchannels = - gpr_malloc(sizeof(grpc_subchannel *) * args->num_subchannels); +static grpc_lb_policy * +create_pick_first (grpc_lb_policy_factory * factory, grpc_lb_policy_args * args) +{ + pick_first_lb_policy *p = gpr_malloc (sizeof (*p)); + GPR_ASSERT (args->num_subchannels > 0); + memset (p, 0, sizeof (*p)); + grpc_lb_policy_init (&p->base, &pick_first_lb_policy_vtable); + p->subchannels = gpr_malloc (sizeof (grpc_subchannel *) * args->num_subchannels); p->num_subchannels = args->num_subchannels; - grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE, - "pick_first"); - memcpy(p->subchannels, args->subchannels, - sizeof(grpc_subchannel *) * args->num_subchannels); - grpc_closure_init(&p->connectivity_changed, pf_connectivity_changed, p); - gpr_mu_init(&p->mu); + grpc_connectivity_state_init (&p->state_tracker, GRPC_CHANNEL_IDLE, "pick_first"); + memcpy (p->subchannels, args->subchannels, sizeof (grpc_subchannel *) * args->num_subchannels); + grpc_closure_init (&p->connectivity_changed, pf_connectivity_changed, p); + gpr_mu_init (&p->mu); return &p->base; } static const grpc_lb_policy_factory_vtable pick_first_factory_vtable = { - pick_first_factory_ref, pick_first_factory_unref, create_pick_first, - "pick_first"}; + pick_first_factory_ref, pick_first_factory_unref, create_pick_first, + "pick_first" +}; static grpc_lb_policy_factory pick_first_lb_policy_factory = { - &pick_first_factory_vtable}; + &pick_first_factory_vtable +}; -grpc_lb_policy_factory *grpc_pick_first_lb_factory_create() { +grpc_lb_policy_factory * +grpc_pick_first_lb_factory_create () +{ return &pick_first_lb_policy_factory; } |