aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/ext/client_config
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2016-09-07 08:28:00 -0700
committerGravatar Mark D. Roth <roth@google.com>2016-09-07 08:28:00 -0700
commite011b1e4cae5cedebea25f75fda69ba56b124572 (patch)
tree1af2c5b58cdc2cc97f519ac91b153ccc34b60985 /src/core/ext/client_config
parentf16823431072bfadcc534c134520e29fc244a25c (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.h4
-rw-r--r--src/core/ext/client_config/resolver_result.c24
-rw-r--r--src/core/ext/client_config/resolver_result.h24
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;