diff options
author | Mark D. Roth <roth@google.com> | 2016-09-07 08:28:00 -0700 |
---|---|---|
committer | Mark D. Roth <roth@google.com> | 2016-09-07 08:28:00 -0700 |
commit | e011b1e4cae5cedebea25f75fda69ba56b124572 (patch) | |
tree | 1af2c5b58cdc2cc97f519ac91b153ccc34b60985 /src/core/ext/client_config | |
parent | f16823431072bfadcc534c134520e29fc244a25c (diff) |
Move is_balancer into a new struct in the client_config directory.
Diffstat (limited to 'src/core/ext/client_config')
-rw-r--r-- | src/core/ext/client_config/lb_policy_factory.h | 4 | ||||
-rw-r--r-- | src/core/ext/client_config/resolver_result.c | 24 | ||||
-rw-r--r-- | src/core/ext/client_config/resolver_result.h | 24 |
3 files changed, 50 insertions, 2 deletions
diff --git a/src/core/ext/client_config/lb_policy_factory.h b/src/core/ext/client_config/lb_policy_factory.h index da1de3579a..6919b1eb98 100644 --- a/src/core/ext/client_config/lb_policy_factory.h +++ b/src/core/ext/client_config/lb_policy_factory.h @@ -36,7 +36,7 @@ #include "src/core/ext/client_config/client_channel_factory.h" #include "src/core/ext/client_config/lb_policy.h" -#include "src/core/lib/iomgr/resolve_address.h" +#include "src/core/ext/client_config/resolver_result.h" #include "src/core/lib/iomgr/exec_ctx.h" @@ -48,7 +48,7 @@ struct grpc_lb_policy_factory { }; typedef struct grpc_lb_policy_args { - grpc_resolved_addresses *addresses; + grpc_addresses *addresses; grpc_client_channel_factory *client_channel_factory; } grpc_lb_policy_args; diff --git a/src/core/ext/client_config/resolver_result.c b/src/core/ext/client_config/resolver_result.c index c6c4166e83..e14f761f05 100644 --- a/src/core/ext/client_config/resolver_result.c +++ b/src/core/ext/client_config/resolver_result.c @@ -37,6 +37,30 @@ #include <grpc/support/alloc.h> +grpc_addresses *grpc_addresses_create(size_t num_addresses) { + grpc_addresses *addresses = gpr_malloc(sizeof(grpc_addresses)); + addresses->num_addresses = num_addresses; + const size_t addresses_size = sizeof(grpc_address) * num_addresses; + addresses->addresses = gpr_malloc(addresses_size); + memset(addresses->addresses, 0, addresses_size); + return addresses; +} + +void grpc_addresses_set_address(grpc_addresses *addresses, size_t index, + void *address, size_t address_len, + bool is_balancer) { + GPR_ASSERT(index < addresses->num_addresses); + grpc_address *target = &addresses->addresses[index]; + memcpy(target->address.addr, address, address_len); + target->address.len = address_len; + target->is_balancer = is_balancer; +} + +void grpc_addresses_destroy(grpc_addresses *addresses) { + gpr_free(addresses->addresses); + gpr_free(addresses); +} + struct grpc_resolver_result { gpr_refcount refs; grpc_lb_policy *lb_policy; diff --git a/src/core/ext/client_config/resolver_result.h b/src/core/ext/client_config/resolver_result.h index 402f7dbd7e..4199ef512a 100644 --- a/src/core/ext/client_config/resolver_result.h +++ b/src/core/ext/client_config/resolver_result.h @@ -34,7 +34,31 @@ #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_RESULT_H #define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_RESULT_H +#include <stdbool.h> + #include "src/core/ext/client_config/lb_policy.h" +#include "src/core/lib/iomgr/resolve_address.h" + +/** Used to represent addresses returned by the resolver. */ +typedef struct grpc_address { + grpc_resolved_address address; + bool is_balancer; +} grpc_address; + +typedef struct grpc_addresses { + size_t num_addresses; + grpc_address *addresses; +} grpc_addresses; + +/** Returns a grpc_addresses struct with enough space for + \a num_addresses addresses. */ +grpc_addresses *grpc_addresses_create(size_t num_addresses); + +void grpc_addresses_set_address(grpc_addresses *addresses, size_t index, + void *address, size_t address_len, + bool is_balancer); + +void grpc_addresses_destroy(grpc_addresses *addresses); /** Results reported from a grpc_resolver. */ typedef struct grpc_resolver_result grpc_resolver_result; |