Skip to content
Snippets Groups Projects
Commit 0bfad14f authored by Craig Tiller's avatar Craig Tiller
Browse files

Make resolver combiner part of the base type, to be consistent with future changes to lb_policy

parent bd1a0461
No related branches found
No related tags found
No related merge requests found
...@@ -32,10 +32,13 @@ ...@@ -32,10 +32,13 @@
*/ */
#include "src/core/ext/client_channel/resolver.h" #include "src/core/ext/client_channel/resolver.h"
#include "src/core/lib/iomgr/combiner.h"
void grpc_resolver_init(grpc_resolver *resolver, void grpc_resolver_init(grpc_resolver *resolver,
const grpc_resolver_vtable *vtable) { const grpc_resolver_vtable *vtable,
grpc_combiner *combiner) {
resolver->vtable = vtable; resolver->vtable = vtable;
resolver->combiner = GRPC_COMBINER_REF(combiner, "resolver");
gpr_ref_init(&resolver->refs, 1); gpr_ref_init(&resolver->refs, 1);
} }
...@@ -62,7 +65,9 @@ void grpc_resolver_unref(grpc_resolver *resolver, ...@@ -62,7 +65,9 @@ void grpc_resolver_unref(grpc_resolver *resolver,
void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) { void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) {
#endif #endif
if (gpr_unref(&resolver->refs)) { if (gpr_unref(&resolver->refs)) {
grpc_combiner *combiner = resolver->combiner;
resolver->vtable->destroy(exec_ctx, resolver); resolver->vtable->destroy(exec_ctx, resolver);
GRPC_COMBINER_UNREF(exec_ctx, combiner, "resolver");
} }
} }
......
...@@ -44,6 +44,7 @@ typedef struct grpc_resolver_vtable grpc_resolver_vtable; ...@@ -44,6 +44,7 @@ typedef struct grpc_resolver_vtable grpc_resolver_vtable;
struct grpc_resolver { struct grpc_resolver {
const grpc_resolver_vtable *vtable; const grpc_resolver_vtable *vtable;
gpr_refcount refs; gpr_refcount refs;
grpc_combiner *combiner;
}; };
struct grpc_resolver_vtable { struct grpc_resolver_vtable {
...@@ -71,7 +72,8 @@ void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *policy); ...@@ -71,7 +72,8 @@ void grpc_resolver_unref(grpc_exec_ctx *exec_ctx, grpc_resolver *policy);
#endif #endif
void grpc_resolver_init(grpc_resolver *resolver, void grpc_resolver_init(grpc_resolver *resolver,
const grpc_resolver_vtable *vtable); const grpc_resolver_vtable *vtable,
grpc_combiner *combiner);
void grpc_resolver_shutdown_locked(grpc_exec_ctx *exec_ctx, void grpc_resolver_shutdown_locked(grpc_exec_ctx *exec_ctx,
grpc_resolver *resolver); grpc_resolver *resolver);
......
...@@ -63,8 +63,6 @@ typedef struct { ...@@ -63,8 +63,6 @@ typedef struct {
grpc_channel_args *channel_args; grpc_channel_args *channel_args;
/** pollset_set to drive the name resolution process */ /** pollset_set to drive the name resolution process */
grpc_pollset_set *interested_parties; grpc_pollset_set *interested_parties;
/** combiner (shared with client channel) */
grpc_combiner *combiner;
/** are we currently resolving? */ /** are we currently resolving? */
bool resolving; bool resolving;
...@@ -194,7 +192,7 @@ static void dns_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg, ...@@ -194,7 +192,7 @@ static void dns_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg,
gpr_log(GPR_DEBUG, "retrying immediately"); gpr_log(GPR_DEBUG, "retrying immediately");
} }
grpc_closure_init(&r->on_retry, dns_on_retry_timer_locked, r, grpc_closure_init(&r->on_retry, dns_on_retry_timer_locked, r,
grpc_combiner_scheduler(r->combiner, false)); grpc_combiner_scheduler(r->base.combiner, false));
grpc_timer_init(exec_ctx, &r->retry_timer, next_try, &r->on_retry, now); grpc_timer_init(exec_ctx, &r->retry_timer, next_try, &r->on_retry, now);
} }
if (r->resolved_result != NULL) { if (r->resolved_result != NULL) {
...@@ -216,7 +214,7 @@ static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx, ...@@ -216,7 +214,7 @@ static void dns_start_resolving_locked(grpc_exec_ctx *exec_ctx,
grpc_resolve_address( grpc_resolve_address(
exec_ctx, r->name_to_resolve, r->default_port, r->interested_parties, exec_ctx, r->name_to_resolve, r->default_port, r->interested_parties,
grpc_closure_create(dns_on_resolved_locked, r, grpc_closure_create(dns_on_resolved_locked, r,
grpc_combiner_scheduler(r->combiner, false)), grpc_combiner_scheduler(r->base.combiner, false)),
&r->addresses); &r->addresses);
} }
...@@ -235,7 +233,7 @@ static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, ...@@ -235,7 +233,7 @@ static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { static void dns_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) {
dns_resolver *r = (dns_resolver *)gr; dns_resolver *r = (dns_resolver *)gr;
GRPC_COMBINER_UNREF(exec_ctx, r->combiner, "dns_destroy"); GRPC_COMBINER_UNREF(exec_ctx, r->base.combiner, "dns_destroy");
if (r->resolved_result != NULL) { if (r->resolved_result != NULL) {
grpc_channel_args_destroy(exec_ctx, r->resolved_result); grpc_channel_args_destroy(exec_ctx, r->resolved_result);
} }
...@@ -259,8 +257,7 @@ static grpc_resolver *dns_create(grpc_exec_ctx *exec_ctx, ...@@ -259,8 +257,7 @@ static grpc_resolver *dns_create(grpc_exec_ctx *exec_ctx,
// Create resolver. // Create resolver.
dns_resolver *r = gpr_malloc(sizeof(dns_resolver)); dns_resolver *r = gpr_malloc(sizeof(dns_resolver));
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
r->combiner = GRPC_COMBINER_REF(args->combiner, "dns_resolver"); grpc_resolver_init(&r->base, &dns_resolver_vtable, args->combiner);
grpc_resolver_init(&r->base, &dns_resolver_vtable);
r->name_to_resolve = gpr_strdup(path); r->name_to_resolve = gpr_strdup(path);
r->default_port = gpr_strdup(default_port); r->default_port = gpr_strdup(default_port);
r->channel_args = grpc_channel_args_copy(args->args); r->channel_args = grpc_channel_args_copy(args->args);
......
...@@ -59,8 +59,6 @@ typedef struct { ...@@ -59,8 +59,6 @@ typedef struct {
grpc_lb_addresses *addresses; grpc_lb_addresses *addresses;
/** channel args */ /** channel args */
grpc_channel_args *channel_args; grpc_channel_args *channel_args;
/** combiner guarding the rest of the state */
grpc_combiner *combiner;
/** have we published? */ /** have we published? */
bool published; bool published;
/** pending next completion, or NULL */ /** pending next completion, or NULL */
...@@ -127,7 +125,6 @@ static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, ...@@ -127,7 +125,6 @@ static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) { static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *gr) {
sockaddr_resolver *r = (sockaddr_resolver *)gr; sockaddr_resolver *r = (sockaddr_resolver *)gr;
GRPC_COMBINER_UNREF(exec_ctx, r->combiner, "sockaddr_resolver");
grpc_lb_addresses_destroy(exec_ctx, r->addresses); grpc_lb_addresses_destroy(exec_ctx, r->addresses);
grpc_channel_args_destroy(exec_ctx, r->channel_args); grpc_channel_args_destroy(exec_ctx, r->channel_args);
gpr_free(r); gpr_free(r);
...@@ -197,8 +194,7 @@ static grpc_resolver *sockaddr_create(grpc_exec_ctx *exec_ctx, ...@@ -197,8 +194,7 @@ static grpc_resolver *sockaddr_create(grpc_exec_ctx *exec_ctx,
memset(r, 0, sizeof(*r)); memset(r, 0, sizeof(*r));
r->addresses = addresses; r->addresses = addresses;
r->channel_args = grpc_channel_args_copy(args->args); r->channel_args = grpc_channel_args_copy(args->args);
r->combiner = GRPC_COMBINER_REF(args->combiner, "sockaddr_resolver"); grpc_resolver_init(&r->base, &sockaddr_resolver_vtable, args->combiner);
grpc_resolver_init(&r->base, &sockaddr_resolver_vtable);
return &r->base; return &r->base;
} }
......
...@@ -213,7 +213,7 @@ static grpc_resolver* fake_resolver_create(grpc_exec_ctx* exec_ctx, ...@@ -213,7 +213,7 @@ static grpc_resolver* fake_resolver_create(grpc_exec_ctx* exec_ctx,
r->channel_args = grpc_channel_args_copy(args->args); r->channel_args = grpc_channel_args_copy(args->args);
r->addresses = addresses; r->addresses = addresses;
gpr_mu_init(&r->mu); gpr_mu_init(&r->mu);
grpc_resolver_init(&r->base, &fake_resolver_vtable); grpc_resolver_init(&r->base, &fake_resolver_vtable, args->combiner);
return &r->base; return &r->base;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment