Merge branch 'master' of github.com:grpc/grpc into lb_add_md

pull/7746/head
David Garcia Quintas 8 years ago
commit fbe907f2bd
  1. 16
      BUILD
  2. 6
      CMakeLists.txt
  3. 6
      Makefile
  4. 2
      binding.gyp
  5. 4
      build.yaml
  6. 2
      config.m4
  7. 6
      gRPC-Core.podspec
  8. 4
      grpc.gemspec
  9. 4
      package.xml
  10. 4
      src/core/ext/client_config/README.md
  11. 83
      src/core/ext/client_config/client_channel.c
  12. 2
      src/core/ext/client_config/lb_policy_factory.h
  13. 4
      src/core/ext/client_config/resolver.c
  14. 12
      src/core/ext/client_config/resolver.h
  15. 2
      src/core/ext/client_config/resolver_factory.h
  16. 23
      src/core/ext/client_config/resolver_result.c
  17. 27
      src/core/ext/client_config/resolver_result.h
  18. 42
      src/core/ext/resolver/dns/native/dns_resolver.c
  19. 18
      src/core/ext/resolver/sockaddr/sockaddr_resolver.c
  20. 2
      src/python/grpcio/grpc_core_dependencies.py
  21. 12
      test/core/client_config/resolvers/dns_resolver_connectivity_test.c
  22. 4
      tools/doxygen/Doxyfile.core.internal
  23. 6
      tools/run_tests/sources_and_headers.json
  24. 6
      vsprojects/vcxproj/grpc/grpc.vcxproj
  25. 12
      vsprojects/vcxproj/grpc/grpc.vcxproj.filters
  26. 6
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
  27. 12
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters

16
BUILD

@ -288,7 +288,6 @@ cc_library(
"src/core/lib/tsi/transport_security_interface.h", "src/core/lib/tsi/transport_security_interface.h",
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
"src/core/ext/client_config/initial_connect_string.h", "src/core/ext/client_config/initial_connect_string.h",
"src/core/ext/client_config/lb_policy.h", "src/core/ext/client_config/lb_policy.h",
@ -298,6 +297,7 @@ cc_library(
"src/core/ext/client_config/resolver.h", "src/core/ext/client_config/resolver.h",
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.h", "src/core/ext/client_config/subchannel_call_holder.h",
"src/core/ext/client_config/subchannel_index.h", "src/core/ext/client_config/subchannel_index.h",
@ -461,7 +461,6 @@ cc_library(
"src/core/ext/client_config/channel_connectivity.c", "src/core/ext/client_config/channel_connectivity.c",
"src/core/ext/client_config/client_channel.c", "src/core/ext/client_config/client_channel.c",
"src/core/ext/client_config/client_channel_factory.c", "src/core/ext/client_config/client_channel_factory.c",
"src/core/ext/client_config/client_config.c",
"src/core/ext/client_config/client_config_plugin.c", "src/core/ext/client_config/client_config_plugin.c",
"src/core/ext/client_config/connector.c", "src/core/ext/client_config/connector.c",
"src/core/ext/client_config/default_initial_connect_string.c", "src/core/ext/client_config/default_initial_connect_string.c",
@ -473,6 +472,7 @@ cc_library(
"src/core/ext/client_config/resolver.c", "src/core/ext/client_config/resolver.c",
"src/core/ext/client_config/resolver_factory.c", "src/core/ext/client_config/resolver_factory.c",
"src/core/ext/client_config/resolver_registry.c", "src/core/ext/client_config/resolver_registry.c",
"src/core/ext/client_config/resolver_result.c",
"src/core/ext/client_config/subchannel.c", "src/core/ext/client_config/subchannel.c",
"src/core/ext/client_config/subchannel_call_holder.c", "src/core/ext/client_config/subchannel_call_holder.c",
"src/core/ext/client_config/subchannel_index.c", "src/core/ext/client_config/subchannel_index.c",
@ -660,7 +660,6 @@ cc_library(
"src/core/ext/transport/chttp2/alpn/alpn.h", "src/core/ext/transport/chttp2/alpn/alpn.h",
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
"src/core/ext/client_config/initial_connect_string.h", "src/core/ext/client_config/initial_connect_string.h",
"src/core/ext/client_config/lb_policy.h", "src/core/ext/client_config/lb_policy.h",
@ -670,6 +669,7 @@ cc_library(
"src/core/ext/client_config/resolver.h", "src/core/ext/client_config/resolver.h",
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.h", "src/core/ext/client_config/subchannel_call_holder.h",
"src/core/ext/client_config/subchannel_index.h", "src/core/ext/client_config/subchannel_index.h",
@ -817,7 +817,6 @@ cc_library(
"src/core/ext/client_config/channel_connectivity.c", "src/core/ext/client_config/channel_connectivity.c",
"src/core/ext/client_config/client_channel.c", "src/core/ext/client_config/client_channel.c",
"src/core/ext/client_config/client_channel_factory.c", "src/core/ext/client_config/client_channel_factory.c",
"src/core/ext/client_config/client_config.c",
"src/core/ext/client_config/client_config_plugin.c", "src/core/ext/client_config/client_config_plugin.c",
"src/core/ext/client_config/connector.c", "src/core/ext/client_config/connector.c",
"src/core/ext/client_config/default_initial_connect_string.c", "src/core/ext/client_config/default_initial_connect_string.c",
@ -829,6 +828,7 @@ cc_library(
"src/core/ext/client_config/resolver.c", "src/core/ext/client_config/resolver.c",
"src/core/ext/client_config/resolver_factory.c", "src/core/ext/client_config/resolver_factory.c",
"src/core/ext/client_config/resolver_registry.c", "src/core/ext/client_config/resolver_registry.c",
"src/core/ext/client_config/resolver_result.c",
"src/core/ext/client_config/subchannel.c", "src/core/ext/client_config/subchannel.c",
"src/core/ext/client_config/subchannel_call_holder.c", "src/core/ext/client_config/subchannel_call_holder.c",
"src/core/ext/client_config/subchannel_index.c", "src/core/ext/client_config/subchannel_index.c",
@ -1013,7 +1013,6 @@ cc_library(
"src/core/ext/transport/chttp2/alpn/alpn.h", "src/core/ext/transport/chttp2/alpn/alpn.h",
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
"src/core/ext/client_config/initial_connect_string.h", "src/core/ext/client_config/initial_connect_string.h",
"src/core/ext/client_config/lb_policy.h", "src/core/ext/client_config/lb_policy.h",
@ -1023,6 +1022,7 @@ cc_library(
"src/core/ext/client_config/resolver.h", "src/core/ext/client_config/resolver.h",
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.h", "src/core/ext/client_config/subchannel_call_holder.h",
"src/core/ext/client_config/subchannel_index.h", "src/core/ext/client_config/subchannel_index.h",
@ -1161,7 +1161,6 @@ cc_library(
"src/core/ext/client_config/channel_connectivity.c", "src/core/ext/client_config/channel_connectivity.c",
"src/core/ext/client_config/client_channel.c", "src/core/ext/client_config/client_channel.c",
"src/core/ext/client_config/client_channel_factory.c", "src/core/ext/client_config/client_channel_factory.c",
"src/core/ext/client_config/client_config.c",
"src/core/ext/client_config/client_config_plugin.c", "src/core/ext/client_config/client_config_plugin.c",
"src/core/ext/client_config/connector.c", "src/core/ext/client_config/connector.c",
"src/core/ext/client_config/default_initial_connect_string.c", "src/core/ext/client_config/default_initial_connect_string.c",
@ -1173,6 +1172,7 @@ cc_library(
"src/core/ext/client_config/resolver.c", "src/core/ext/client_config/resolver.c",
"src/core/ext/client_config/resolver_factory.c", "src/core/ext/client_config/resolver_factory.c",
"src/core/ext/client_config/resolver_registry.c", "src/core/ext/client_config/resolver_registry.c",
"src/core/ext/client_config/resolver_result.c",
"src/core/ext/client_config/subchannel.c", "src/core/ext/client_config/subchannel.c",
"src/core/ext/client_config/subchannel_call_holder.c", "src/core/ext/client_config/subchannel_call_holder.c",
"src/core/ext/client_config/subchannel_index.c", "src/core/ext/client_config/subchannel_index.c",
@ -2307,7 +2307,6 @@ objc_library(
"src/core/ext/client_config/channel_connectivity.c", "src/core/ext/client_config/channel_connectivity.c",
"src/core/ext/client_config/client_channel.c", "src/core/ext/client_config/client_channel.c",
"src/core/ext/client_config/client_channel_factory.c", "src/core/ext/client_config/client_channel_factory.c",
"src/core/ext/client_config/client_config.c",
"src/core/ext/client_config/client_config_plugin.c", "src/core/ext/client_config/client_config_plugin.c",
"src/core/ext/client_config/connector.c", "src/core/ext/client_config/connector.c",
"src/core/ext/client_config/default_initial_connect_string.c", "src/core/ext/client_config/default_initial_connect_string.c",
@ -2319,6 +2318,7 @@ objc_library(
"src/core/ext/client_config/resolver.c", "src/core/ext/client_config/resolver.c",
"src/core/ext/client_config/resolver_factory.c", "src/core/ext/client_config/resolver_factory.c",
"src/core/ext/client_config/resolver_registry.c", "src/core/ext/client_config/resolver_registry.c",
"src/core/ext/client_config/resolver_result.c",
"src/core/ext/client_config/subchannel.c", "src/core/ext/client_config/subchannel.c",
"src/core/ext/client_config/subchannel_call_holder.c", "src/core/ext/client_config/subchannel_call_holder.c",
"src/core/ext/client_config/subchannel_index.c", "src/core/ext/client_config/subchannel_index.c",
@ -2508,7 +2508,6 @@ objc_library(
"src/core/lib/tsi/transport_security_interface.h", "src/core/lib/tsi/transport_security_interface.h",
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
"src/core/ext/client_config/initial_connect_string.h", "src/core/ext/client_config/initial_connect_string.h",
"src/core/ext/client_config/lb_policy.h", "src/core/ext/client_config/lb_policy.h",
@ -2518,6 +2517,7 @@ objc_library(
"src/core/ext/client_config/resolver.h", "src/core/ext/client_config/resolver.h",
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.h", "src/core/ext/client_config/subchannel_call_holder.h",
"src/core/ext/client_config/subchannel_index.h", "src/core/ext/client_config/subchannel_index.h",

@ -435,7 +435,6 @@ add_library(grpc
src/core/ext/client_config/channel_connectivity.c src/core/ext/client_config/channel_connectivity.c
src/core/ext/client_config/client_channel.c src/core/ext/client_config/client_channel.c
src/core/ext/client_config/client_channel_factory.c src/core/ext/client_config/client_channel_factory.c
src/core/ext/client_config/client_config.c
src/core/ext/client_config/client_config_plugin.c src/core/ext/client_config/client_config_plugin.c
src/core/ext/client_config/connector.c src/core/ext/client_config/connector.c
src/core/ext/client_config/default_initial_connect_string.c src/core/ext/client_config/default_initial_connect_string.c
@ -447,6 +446,7 @@ add_library(grpc
src/core/ext/client_config/resolver.c src/core/ext/client_config/resolver.c
src/core/ext/client_config/resolver_factory.c src/core/ext/client_config/resolver_factory.c
src/core/ext/client_config/resolver_registry.c src/core/ext/client_config/resolver_registry.c
src/core/ext/client_config/resolver_result.c
src/core/ext/client_config/subchannel.c src/core/ext/client_config/subchannel.c
src/core/ext/client_config/subchannel_call_holder.c src/core/ext/client_config/subchannel_call_holder.c
src/core/ext/client_config/subchannel_index.c src/core/ext/client_config/subchannel_index.c
@ -667,7 +667,6 @@ add_library(grpc_cronet
src/core/ext/client_config/channel_connectivity.c src/core/ext/client_config/channel_connectivity.c
src/core/ext/client_config/client_channel.c src/core/ext/client_config/client_channel.c
src/core/ext/client_config/client_channel_factory.c src/core/ext/client_config/client_channel_factory.c
src/core/ext/client_config/client_config.c
src/core/ext/client_config/client_config_plugin.c src/core/ext/client_config/client_config_plugin.c
src/core/ext/client_config/connector.c src/core/ext/client_config/connector.c
src/core/ext/client_config/default_initial_connect_string.c src/core/ext/client_config/default_initial_connect_string.c
@ -679,6 +678,7 @@ add_library(grpc_cronet
src/core/ext/client_config/resolver.c src/core/ext/client_config/resolver.c
src/core/ext/client_config/resolver_factory.c src/core/ext/client_config/resolver_factory.c
src/core/ext/client_config/resolver_registry.c src/core/ext/client_config/resolver_registry.c
src/core/ext/client_config/resolver_result.c
src/core/ext/client_config/subchannel.c src/core/ext/client_config/subchannel.c
src/core/ext/client_config/subchannel_call_holder.c src/core/ext/client_config/subchannel_call_holder.c
src/core/ext/client_config/subchannel_index.c src/core/ext/client_config/subchannel_index.c
@ -899,7 +899,6 @@ add_library(grpc_unsecure
src/core/ext/client_config/channel_connectivity.c src/core/ext/client_config/channel_connectivity.c
src/core/ext/client_config/client_channel.c src/core/ext/client_config/client_channel.c
src/core/ext/client_config/client_channel_factory.c src/core/ext/client_config/client_channel_factory.c
src/core/ext/client_config/client_config.c
src/core/ext/client_config/client_config_plugin.c src/core/ext/client_config/client_config_plugin.c
src/core/ext/client_config/connector.c src/core/ext/client_config/connector.c
src/core/ext/client_config/default_initial_connect_string.c src/core/ext/client_config/default_initial_connect_string.c
@ -911,6 +910,7 @@ add_library(grpc_unsecure
src/core/ext/client_config/resolver.c src/core/ext/client_config/resolver.c
src/core/ext/client_config/resolver_factory.c src/core/ext/client_config/resolver_factory.c
src/core/ext/client_config/resolver_registry.c src/core/ext/client_config/resolver_registry.c
src/core/ext/client_config/resolver_result.c
src/core/ext/client_config/subchannel.c src/core/ext/client_config/subchannel.c
src/core/ext/client_config/subchannel_call_holder.c src/core/ext/client_config/subchannel_call_holder.c
src/core/ext/client_config/subchannel_index.c src/core/ext/client_config/subchannel_index.c

@ -2651,7 +2651,6 @@ LIBGRPC_SRC = \
src/core/ext/client_config/channel_connectivity.c \ src/core/ext/client_config/channel_connectivity.c \
src/core/ext/client_config/client_channel.c \ src/core/ext/client_config/client_channel.c \
src/core/ext/client_config/client_channel_factory.c \ src/core/ext/client_config/client_channel_factory.c \
src/core/ext/client_config/client_config.c \
src/core/ext/client_config/client_config_plugin.c \ src/core/ext/client_config/client_config_plugin.c \
src/core/ext/client_config/connector.c \ src/core/ext/client_config/connector.c \
src/core/ext/client_config/default_initial_connect_string.c \ src/core/ext/client_config/default_initial_connect_string.c \
@ -2663,6 +2662,7 @@ LIBGRPC_SRC = \
src/core/ext/client_config/resolver.c \ src/core/ext/client_config/resolver.c \
src/core/ext/client_config/resolver_factory.c \ src/core/ext/client_config/resolver_factory.c \
src/core/ext/client_config/resolver_registry.c \ src/core/ext/client_config/resolver_registry.c \
src/core/ext/client_config/resolver_result.c \
src/core/ext/client_config/subchannel.c \ src/core/ext/client_config/subchannel.c \
src/core/ext/client_config/subchannel_call_holder.c \ src/core/ext/client_config/subchannel_call_holder.c \
src/core/ext/client_config/subchannel_index.c \ src/core/ext/client_config/subchannel_index.c \
@ -2901,7 +2901,6 @@ LIBGRPC_CRONET_SRC = \
src/core/ext/client_config/channel_connectivity.c \ src/core/ext/client_config/channel_connectivity.c \
src/core/ext/client_config/client_channel.c \ src/core/ext/client_config/client_channel.c \
src/core/ext/client_config/client_channel_factory.c \ src/core/ext/client_config/client_channel_factory.c \
src/core/ext/client_config/client_config.c \
src/core/ext/client_config/client_config_plugin.c \ src/core/ext/client_config/client_config_plugin.c \
src/core/ext/client_config/connector.c \ src/core/ext/client_config/connector.c \
src/core/ext/client_config/default_initial_connect_string.c \ src/core/ext/client_config/default_initial_connect_string.c \
@ -2913,6 +2912,7 @@ LIBGRPC_CRONET_SRC = \
src/core/ext/client_config/resolver.c \ src/core/ext/client_config/resolver.c \
src/core/ext/client_config/resolver_factory.c \ src/core/ext/client_config/resolver_factory.c \
src/core/ext/client_config/resolver_registry.c \ src/core/ext/client_config/resolver_registry.c \
src/core/ext/client_config/resolver_result.c \
src/core/ext/client_config/subchannel.c \ src/core/ext/client_config/subchannel.c \
src/core/ext/client_config/subchannel_call_holder.c \ src/core/ext/client_config/subchannel_call_holder.c \
src/core/ext/client_config/subchannel_index.c \ src/core/ext/client_config/subchannel_index.c \
@ -3360,7 +3360,6 @@ LIBGRPC_UNSECURE_SRC = \
src/core/ext/client_config/channel_connectivity.c \ src/core/ext/client_config/channel_connectivity.c \
src/core/ext/client_config/client_channel.c \ src/core/ext/client_config/client_channel.c \
src/core/ext/client_config/client_channel_factory.c \ src/core/ext/client_config/client_channel_factory.c \
src/core/ext/client_config/client_config.c \
src/core/ext/client_config/client_config_plugin.c \ src/core/ext/client_config/client_config_plugin.c \
src/core/ext/client_config/connector.c \ src/core/ext/client_config/connector.c \
src/core/ext/client_config/default_initial_connect_string.c \ src/core/ext/client_config/default_initial_connect_string.c \
@ -3372,6 +3371,7 @@ LIBGRPC_UNSECURE_SRC = \
src/core/ext/client_config/resolver.c \ src/core/ext/client_config/resolver.c \
src/core/ext/client_config/resolver_factory.c \ src/core/ext/client_config/resolver_factory.c \
src/core/ext/client_config/resolver_registry.c \ src/core/ext/client_config/resolver_registry.c \
src/core/ext/client_config/resolver_result.c \
src/core/ext/client_config/subchannel.c \ src/core/ext/client_config/subchannel.c \
src/core/ext/client_config/subchannel_call_holder.c \ src/core/ext/client_config/subchannel_call_holder.c \
src/core/ext/client_config/subchannel_index.c \ src/core/ext/client_config/subchannel_index.c \

@ -707,7 +707,6 @@
'src/core/ext/client_config/channel_connectivity.c', 'src/core/ext/client_config/channel_connectivity.c',
'src/core/ext/client_config/client_channel.c', 'src/core/ext/client_config/client_channel.c',
'src/core/ext/client_config/client_channel_factory.c', 'src/core/ext/client_config/client_channel_factory.c',
'src/core/ext/client_config/client_config.c',
'src/core/ext/client_config/client_config_plugin.c', 'src/core/ext/client_config/client_config_plugin.c',
'src/core/ext/client_config/connector.c', 'src/core/ext/client_config/connector.c',
'src/core/ext/client_config/default_initial_connect_string.c', 'src/core/ext/client_config/default_initial_connect_string.c',
@ -719,6 +718,7 @@
'src/core/ext/client_config/resolver.c', 'src/core/ext/client_config/resolver.c',
'src/core/ext/client_config/resolver_factory.c', 'src/core/ext/client_config/resolver_factory.c',
'src/core/ext/client_config/resolver_registry.c', 'src/core/ext/client_config/resolver_registry.c',
'src/core/ext/client_config/resolver_result.c',
'src/core/ext/client_config/subchannel.c', 'src/core/ext/client_config/subchannel.c',
'src/core/ext/client_config/subchannel_call_holder.c', 'src/core/ext/client_config/subchannel_call_holder.c',
'src/core/ext/client_config/subchannel_index.c', 'src/core/ext/client_config/subchannel_index.c',

@ -333,7 +333,6 @@ filegroups:
headers: headers:
- src/core/ext/client_config/client_channel.h - src/core/ext/client_config/client_channel.h
- src/core/ext/client_config/client_channel_factory.h - src/core/ext/client_config/client_channel_factory.h
- src/core/ext/client_config/client_config.h
- src/core/ext/client_config/connector.h - src/core/ext/client_config/connector.h
- src/core/ext/client_config/initial_connect_string.h - src/core/ext/client_config/initial_connect_string.h
- src/core/ext/client_config/lb_policy.h - src/core/ext/client_config/lb_policy.h
@ -343,6 +342,7 @@ filegroups:
- src/core/ext/client_config/resolver.h - src/core/ext/client_config/resolver.h
- src/core/ext/client_config/resolver_factory.h - src/core/ext/client_config/resolver_factory.h
- src/core/ext/client_config/resolver_registry.h - src/core/ext/client_config/resolver_registry.h
- src/core/ext/client_config/resolver_result.h
- src/core/ext/client_config/subchannel.h - src/core/ext/client_config/subchannel.h
- src/core/ext/client_config/subchannel_call_holder.h - src/core/ext/client_config/subchannel_call_holder.h
- src/core/ext/client_config/subchannel_index.h - src/core/ext/client_config/subchannel_index.h
@ -351,7 +351,6 @@ filegroups:
- src/core/ext/client_config/channel_connectivity.c - src/core/ext/client_config/channel_connectivity.c
- src/core/ext/client_config/client_channel.c - src/core/ext/client_config/client_channel.c
- src/core/ext/client_config/client_channel_factory.c - src/core/ext/client_config/client_channel_factory.c
- src/core/ext/client_config/client_config.c
- src/core/ext/client_config/client_config_plugin.c - src/core/ext/client_config/client_config_plugin.c
- src/core/ext/client_config/connector.c - src/core/ext/client_config/connector.c
- src/core/ext/client_config/default_initial_connect_string.c - src/core/ext/client_config/default_initial_connect_string.c
@ -363,6 +362,7 @@ filegroups:
- src/core/ext/client_config/resolver.c - src/core/ext/client_config/resolver.c
- src/core/ext/client_config/resolver_factory.c - src/core/ext/client_config/resolver_factory.c
- src/core/ext/client_config/resolver_registry.c - src/core/ext/client_config/resolver_registry.c
- src/core/ext/client_config/resolver_result.c
- src/core/ext/client_config/subchannel.c - src/core/ext/client_config/subchannel.c
- src/core/ext/client_config/subchannel_call_holder.c - src/core/ext/client_config/subchannel_call_holder.c
- src/core/ext/client_config/subchannel_index.c - src/core/ext/client_config/subchannel_index.c

@ -226,7 +226,6 @@ if test "$PHP_GRPC" != "no"; then
src/core/ext/client_config/channel_connectivity.c \ src/core/ext/client_config/channel_connectivity.c \
src/core/ext/client_config/client_channel.c \ src/core/ext/client_config/client_channel.c \
src/core/ext/client_config/client_channel_factory.c \ src/core/ext/client_config/client_channel_factory.c \
src/core/ext/client_config/client_config.c \
src/core/ext/client_config/client_config_plugin.c \ src/core/ext/client_config/client_config_plugin.c \
src/core/ext/client_config/connector.c \ src/core/ext/client_config/connector.c \
src/core/ext/client_config/default_initial_connect_string.c \ src/core/ext/client_config/default_initial_connect_string.c \
@ -238,6 +237,7 @@ if test "$PHP_GRPC" != "no"; then
src/core/ext/client_config/resolver.c \ src/core/ext/client_config/resolver.c \
src/core/ext/client_config/resolver_factory.c \ src/core/ext/client_config/resolver_factory.c \
src/core/ext/client_config/resolver_registry.c \ src/core/ext/client_config/resolver_registry.c \
src/core/ext/client_config/resolver_result.c \
src/core/ext/client_config/subchannel.c \ src/core/ext/client_config/subchannel.c \
src/core/ext/client_config/subchannel_call_holder.c \ src/core/ext/client_config/subchannel_call_holder.c \
src/core/ext/client_config/subchannel_index.c \ src/core/ext/client_config/subchannel_index.c \

@ -379,7 +379,6 @@ Pod::Spec.new do |s|
'src/core/lib/tsi/transport_security_interface.h', 'src/core/lib/tsi/transport_security_interface.h',
'src/core/ext/client_config/client_channel.h', 'src/core/ext/client_config/client_channel.h',
'src/core/ext/client_config/client_channel_factory.h', 'src/core/ext/client_config/client_channel_factory.h',
'src/core/ext/client_config/client_config.h',
'src/core/ext/client_config/connector.h', 'src/core/ext/client_config/connector.h',
'src/core/ext/client_config/initial_connect_string.h', 'src/core/ext/client_config/initial_connect_string.h',
'src/core/ext/client_config/lb_policy.h', 'src/core/ext/client_config/lb_policy.h',
@ -389,6 +388,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_config/resolver.h', 'src/core/ext/client_config/resolver.h',
'src/core/ext/client_config/resolver_factory.h', 'src/core/ext/client_config/resolver_factory.h',
'src/core/ext/client_config/resolver_registry.h', 'src/core/ext/client_config/resolver_registry.h',
'src/core/ext/client_config/resolver_result.h',
'src/core/ext/client_config/subchannel.h', 'src/core/ext/client_config/subchannel.h',
'src/core/ext/client_config/subchannel_call_holder.h', 'src/core/ext/client_config/subchannel_call_holder.h',
'src/core/ext/client_config/subchannel_index.h', 'src/core/ext/client_config/subchannel_index.h',
@ -556,7 +556,6 @@ Pod::Spec.new do |s|
'src/core/ext/client_config/channel_connectivity.c', 'src/core/ext/client_config/channel_connectivity.c',
'src/core/ext/client_config/client_channel.c', 'src/core/ext/client_config/client_channel.c',
'src/core/ext/client_config/client_channel_factory.c', 'src/core/ext/client_config/client_channel_factory.c',
'src/core/ext/client_config/client_config.c',
'src/core/ext/client_config/client_config_plugin.c', 'src/core/ext/client_config/client_config_plugin.c',
'src/core/ext/client_config/connector.c', 'src/core/ext/client_config/connector.c',
'src/core/ext/client_config/default_initial_connect_string.c', 'src/core/ext/client_config/default_initial_connect_string.c',
@ -568,6 +567,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_config/resolver.c', 'src/core/ext/client_config/resolver.c',
'src/core/ext/client_config/resolver_factory.c', 'src/core/ext/client_config/resolver_factory.c',
'src/core/ext/client_config/resolver_registry.c', 'src/core/ext/client_config/resolver_registry.c',
'src/core/ext/client_config/resolver_result.c',
'src/core/ext/client_config/subchannel.c', 'src/core/ext/client_config/subchannel.c',
'src/core/ext/client_config/subchannel_call_holder.c', 'src/core/ext/client_config/subchannel_call_holder.c',
'src/core/ext/client_config/subchannel_index.c', 'src/core/ext/client_config/subchannel_index.c',
@ -740,7 +740,6 @@ Pod::Spec.new do |s|
'src/core/lib/tsi/transport_security_interface.h', 'src/core/lib/tsi/transport_security_interface.h',
'src/core/ext/client_config/client_channel.h', 'src/core/ext/client_config/client_channel.h',
'src/core/ext/client_config/client_channel_factory.h', 'src/core/ext/client_config/client_channel_factory.h',
'src/core/ext/client_config/client_config.h',
'src/core/ext/client_config/connector.h', 'src/core/ext/client_config/connector.h',
'src/core/ext/client_config/initial_connect_string.h', 'src/core/ext/client_config/initial_connect_string.h',
'src/core/ext/client_config/lb_policy.h', 'src/core/ext/client_config/lb_policy.h',
@ -750,6 +749,7 @@ Pod::Spec.new do |s|
'src/core/ext/client_config/resolver.h', 'src/core/ext/client_config/resolver.h',
'src/core/ext/client_config/resolver_factory.h', 'src/core/ext/client_config/resolver_factory.h',
'src/core/ext/client_config/resolver_registry.h', 'src/core/ext/client_config/resolver_registry.h',
'src/core/ext/client_config/resolver_result.h',
'src/core/ext/client_config/subchannel.h', 'src/core/ext/client_config/subchannel.h',
'src/core/ext/client_config/subchannel_call_holder.h', 'src/core/ext/client_config/subchannel_call_holder.h',
'src/core/ext/client_config/subchannel_index.h', 'src/core/ext/client_config/subchannel_index.h',

@ -298,7 +298,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/tsi/transport_security_interface.h ) s.files += %w( src/core/lib/tsi/transport_security_interface.h )
s.files += %w( src/core/ext/client_config/client_channel.h ) s.files += %w( src/core/ext/client_config/client_channel.h )
s.files += %w( src/core/ext/client_config/client_channel_factory.h ) s.files += %w( src/core/ext/client_config/client_channel_factory.h )
s.files += %w( src/core/ext/client_config/client_config.h )
s.files += %w( src/core/ext/client_config/connector.h ) s.files += %w( src/core/ext/client_config/connector.h )
s.files += %w( src/core/ext/client_config/initial_connect_string.h ) s.files += %w( src/core/ext/client_config/initial_connect_string.h )
s.files += %w( src/core/ext/client_config/lb_policy.h ) s.files += %w( src/core/ext/client_config/lb_policy.h )
@ -308,6 +307,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_config/resolver.h ) s.files += %w( src/core/ext/client_config/resolver.h )
s.files += %w( src/core/ext/client_config/resolver_factory.h ) s.files += %w( src/core/ext/client_config/resolver_factory.h )
s.files += %w( src/core/ext/client_config/resolver_registry.h ) s.files += %w( src/core/ext/client_config/resolver_registry.h )
s.files += %w( src/core/ext/client_config/resolver_result.h )
s.files += %w( src/core/ext/client_config/subchannel.h ) s.files += %w( src/core/ext/client_config/subchannel.h )
s.files += %w( src/core/ext/client_config/subchannel_call_holder.h ) s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
s.files += %w( src/core/ext/client_config/subchannel_index.h ) s.files += %w( src/core/ext/client_config/subchannel_index.h )
@ -475,7 +475,6 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_config/channel_connectivity.c ) s.files += %w( src/core/ext/client_config/channel_connectivity.c )
s.files += %w( src/core/ext/client_config/client_channel.c ) s.files += %w( src/core/ext/client_config/client_channel.c )
s.files += %w( src/core/ext/client_config/client_channel_factory.c ) s.files += %w( src/core/ext/client_config/client_channel_factory.c )
s.files += %w( src/core/ext/client_config/client_config.c )
s.files += %w( src/core/ext/client_config/client_config_plugin.c ) s.files += %w( src/core/ext/client_config/client_config_plugin.c )
s.files += %w( src/core/ext/client_config/connector.c ) s.files += %w( src/core/ext/client_config/connector.c )
s.files += %w( src/core/ext/client_config/default_initial_connect_string.c ) s.files += %w( src/core/ext/client_config/default_initial_connect_string.c )
@ -487,6 +486,7 @@ Gem::Specification.new do |s|
s.files += %w( src/core/ext/client_config/resolver.c ) s.files += %w( src/core/ext/client_config/resolver.c )
s.files += %w( src/core/ext/client_config/resolver_factory.c ) s.files += %w( src/core/ext/client_config/resolver_factory.c )
s.files += %w( src/core/ext/client_config/resolver_registry.c ) s.files += %w( src/core/ext/client_config/resolver_registry.c )
s.files += %w( src/core/ext/client_config/resolver_result.c )
s.files += %w( src/core/ext/client_config/subchannel.c ) s.files += %w( src/core/ext/client_config/subchannel.c )
s.files += %w( src/core/ext/client_config/subchannel_call_holder.c ) s.files += %w( src/core/ext/client_config/subchannel_call_holder.c )
s.files += %w( src/core/ext/client_config/subchannel_index.c ) s.files += %w( src/core/ext/client_config/subchannel_index.c )

@ -306,7 +306,6 @@
<file baseinstalldir="/" name="src/core/lib/tsi/transport_security_interface.h" role="src" /> <file baseinstalldir="/" name="src/core/lib/tsi/transport_security_interface.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_channel.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/client_channel.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_config.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/connector.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/connector.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/initial_connect_string.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/initial_connect_string.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/lb_policy.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy.h" role="src" />
@ -316,6 +315,7 @@
<file baseinstalldir="/" name="src/core/ext/client_config/resolver.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_result.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
@ -483,7 +483,6 @@
<file baseinstalldir="/" name="src/core/ext/client_config/channel_connectivity.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/channel_connectivity.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_channel.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/client_channel.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_config.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/client_config_plugin.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/client_config_plugin.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/connector.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/connector.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/default_initial_connect_string.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/default_initial_connect_string.c" role="src" />
@ -495,6 +494,7 @@
<file baseinstalldir="/" name="src/core/ext/client_config/resolver.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/resolver_result.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.c" role="src" />
<file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.c" role="src" /> <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.c" role="src" />

@ -12,7 +12,7 @@ data might include:
- a load balancing policy to decide which server to send a request to - a load balancing policy to decide which server to send a request to
- a set of filters to mutate outgoing requests (say, by adding metadata) - a set of filters to mutate outgoing requests (say, by adding metadata)
The resolver provides this data as a stream of grpc_client_config objects to The resolver provides this data as a stream of grpc_resolver_result objects to
the channel. We represent configuration as a stream so that it can be changed the channel. We represent configuration as a stream so that it can be changed
by the resolver during execution, by reacting to external events (such as a by the resolver during execution, by reacting to external events (such as a
new configuration file being pushed to some store). new configuration file being pushed to some store).
@ -22,7 +22,7 @@ Load Balancing
-------------- --------------
Load balancing configuration is provided by a grpc_lb_policy object, stored as Load balancing configuration is provided by a grpc_lb_policy object, stored as
part of grpc_client_config. part of grpc_resolver_result.
The primary job of the load balancing policies is to pick a target server given only the The primary job of the load balancing policies is to pick a target server given only the
initial metadata for a request. It does this by providing a grpc_subchannel initial metadata for a request. It does this by providing a grpc_subchannel

@ -62,16 +62,15 @@ typedef struct client_channel_channel_data {
/** mutex protecting client configuration, including all /** mutex protecting client configuration, including all
variables below in this data structure */ variables below in this data structure */
gpr_mu mu_config; gpr_mu mu;
/** currently active load balancer - guarded by mu_config */ /** currently active load balancer - guarded by mu */
grpc_lb_policy *lb_policy; grpc_lb_policy *lb_policy;
/** incoming configuration - set by resolver.next /** incoming resolver result - set by resolver.next(), guarded by mu */
guarded by mu_config */ grpc_resolver_result *resolver_result;
grpc_client_config *incoming_configuration;
/** a list of closures that are all waiting for config to come in */ /** a list of closures that are all waiting for config to come in */
grpc_closure_list waiting_for_config_closures; grpc_closure_list waiting_for_config_closures;
/** resolver callback */ /** resolver callback */
grpc_closure on_config_changed; grpc_closure on_resolver_result_changed;
/** connectivity state being tracked */ /** connectivity state being tracked */
grpc_connectivity_state_tracker state_tracker; grpc_connectivity_state_tracker state_tracker;
/** when an lb_policy arrives, should we try to exit idle */ /** when an lb_policy arrives, should we try to exit idle */
@ -156,9 +155,9 @@ static void on_lb_policy_state_changed(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) { grpc_error *error) {
lb_policy_connectivity_watcher *w = arg; lb_policy_connectivity_watcher *w = arg;
gpr_mu_lock(&w->chand->mu_config); gpr_mu_lock(&w->chand->mu);
on_lb_policy_state_changed_locked(exec_ctx, w, error); on_lb_policy_state_changed_locked(exec_ctx, w, error);
gpr_mu_unlock(&w->chand->mu_config); gpr_mu_unlock(&w->chand->mu);
GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, "watch_lb_policy"); GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, "watch_lb_policy");
gpr_free(w); gpr_free(w);
@ -178,8 +177,8 @@ static void watch_lb_policy(grpc_exec_ctx *exec_ctx, channel_data *chand,
&w->on_changed); &w->on_changed);
} }
static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg, static void cc_on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) { grpc_error *error) {
channel_data *chand = arg; channel_data *chand = arg;
grpc_lb_policy *lb_policy = NULL; grpc_lb_policy *lb_policy = NULL;
grpc_lb_policy *old_lb_policy; grpc_lb_policy *old_lb_policy;
@ -187,8 +186,8 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
int exit_idle = 0; int exit_idle = 0;
grpc_error *state_error = GRPC_ERROR_CREATE("No load balancing policy"); grpc_error *state_error = GRPC_ERROR_CREATE("No load balancing policy");
if (chand->incoming_configuration != NULL) { if (chand->resolver_result != NULL) {
lb_policy = grpc_client_config_get_lb_policy(chand->incoming_configuration); lb_policy = grpc_resolver_result_get_lb_policy(chand->resolver_result);
if (lb_policy != NULL) { if (lb_policy != NULL) {
GRPC_LB_POLICY_REF(lb_policy, "channel"); GRPC_LB_POLICY_REF(lb_policy, "channel");
GRPC_LB_POLICY_REF(lb_policy, "config_change"); GRPC_LB_POLICY_REF(lb_policy, "config_change");
@ -197,17 +196,17 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
grpc_lb_policy_check_connectivity(exec_ctx, lb_policy, &state_error); grpc_lb_policy_check_connectivity(exec_ctx, lb_policy, &state_error);
} }
grpc_client_config_unref(exec_ctx, chand->incoming_configuration); grpc_resolver_result_unref(exec_ctx, chand->resolver_result);
} }
chand->incoming_configuration = NULL; chand->resolver_result = NULL;
if (lb_policy != NULL) { if (lb_policy != NULL) {
grpc_pollset_set_add_pollset_set(exec_ctx, lb_policy->interested_parties, grpc_pollset_set_add_pollset_set(exec_ctx, lb_policy->interested_parties,
chand->interested_parties); chand->interested_parties);
} }
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
old_lb_policy = chand->lb_policy; old_lb_policy = chand->lb_policy;
chand->lb_policy = lb_policy; chand->lb_policy = lb_policy;
if (lb_policy != NULL) { if (lb_policy != NULL) {
@ -233,10 +232,9 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
watch_lb_policy(exec_ctx, chand, lb_policy, state); watch_lb_policy(exec_ctx, chand, lb_policy, state);
} }
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver"); GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
grpc_resolver_next(exec_ctx, chand->resolver, grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
&chand->incoming_configuration, &chand->on_resolver_result_changed);
&chand->on_config_changed); gpr_mu_unlock(&chand->mu);
gpr_mu_unlock(&chand->mu_config);
} else { } else {
if (chand->resolver != NULL) { if (chand->resolver != NULL) {
grpc_resolver_shutdown(exec_ctx, chand->resolver); grpc_resolver_shutdown(exec_ctx, chand->resolver);
@ -249,7 +247,7 @@ static void cc_on_config_changed(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_ERROR_CREATE_REFERENCING("Got config after disconnection", refs, GRPC_ERROR_CREATE_REFERENCING("Got config after disconnection", refs,
GPR_ARRAY_SIZE(refs)), GPR_ARRAY_SIZE(refs)),
"resolver_gone"); "resolver_gone");
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
} }
if (exit_idle) { if (exit_idle) {
@ -284,7 +282,7 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
op->bind_pollset); op->bind_pollset);
} }
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
if (op->on_connectivity_state_change != NULL) { if (op->on_connectivity_state_change != NULL) {
grpc_connectivity_state_notify_on_state_change( grpc_connectivity_state_notify_on_state_change(
exec_ctx, &chand->state_tracker, op->connectivity_state, exec_ctx, &chand->state_tracker, op->connectivity_state,
@ -329,7 +327,7 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
} }
GRPC_ERROR_UNREF(op->disconnect_with_error); GRPC_ERROR_UNREF(op->disconnect_with_error);
} }
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
} }
typedef struct { typedef struct {
@ -377,7 +375,7 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
GPR_ASSERT(connected_subchannel); GPR_ASSERT(connected_subchannel);
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
if (initial_metadata == NULL) { if (initial_metadata == NULL) {
if (chand->lb_policy != NULL) { if (chand->lb_policy != NULL) {
grpc_lb_policy_cancel_pick(exec_ctx, chand->lb_policy, grpc_lb_policy_cancel_pick(exec_ctx, chand->lb_policy,
@ -392,7 +390,7 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
GRPC_ERROR_CREATE("Pick cancelled"), NULL); GRPC_ERROR_CREATE("Pick cancelled"), NULL);
} }
} }
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
GPR_TIMER_END("cc_pick_subchannel", 0); GPR_TIMER_END("cc_pick_subchannel", 0);
return 1; return 1;
} }
@ -400,7 +398,7 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
grpc_lb_policy *lb_policy = chand->lb_policy; grpc_lb_policy *lb_policy = chand->lb_policy;
int r; int r;
GRPC_LB_POLICY_REF(lb_policy, "cc_pick_subchannel"); GRPC_LB_POLICY_REF(lb_policy, "cc_pick_subchannel");
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
const grpc_lb_policy_pick_args inputs = {calld->pollent, initial_metadata, const grpc_lb_policy_pick_args inputs = {calld->pollent, initial_metadata,
initial_metadata_flags, initial_metadata_flags,
&calld->lb_token_mdelem}; &calld->lb_token_mdelem};
@ -413,9 +411,8 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
if (chand->resolver != NULL && !chand->started_resolving) { if (chand->resolver != NULL && !chand->started_resolving) {
chand->started_resolving = 1; chand->started_resolving = 1;
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver"); GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
grpc_resolver_next(exec_ctx, chand->resolver, grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
&chand->incoming_configuration, &chand->on_resolver_result_changed);
&chand->on_config_changed);
} }
if (chand->resolver != NULL) { if (chand->resolver != NULL) {
cpa = gpr_malloc(sizeof(*cpa)); cpa = gpr_malloc(sizeof(*cpa));
@ -431,7 +428,7 @@ static int cc_pick_subchannel(grpc_exec_ctx *exec_ctx, void *elemp,
grpc_exec_ctx_sched(exec_ctx, on_ready, GRPC_ERROR_CREATE("Disconnected"), grpc_exec_ctx_sched(exec_ctx, on_ready, GRPC_ERROR_CREATE("Disconnected"),
NULL); NULL);
} }
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
GPR_TIMER_END("cc_pick_subchannel", 0); GPR_TIMER_END("cc_pick_subchannel", 0);
return 0; return 0;
@ -465,8 +462,9 @@ static void init_channel_elem(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(args->is_last); GPR_ASSERT(args->is_last);
GPR_ASSERT(elem->filter == &grpc_client_channel_filter); GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
gpr_mu_init(&chand->mu_config); gpr_mu_init(&chand->mu);
grpc_closure_init(&chand->on_config_changed, cc_on_config_changed, chand); grpc_closure_init(&chand->on_resolver_result_changed,
cc_on_resolver_result_changed, chand);
chand->owning_stack = args->channel_stack; chand->owning_stack = args->channel_stack;
grpc_connectivity_state_init(&chand->state_tracker, GRPC_CHANNEL_IDLE, grpc_connectivity_state_init(&chand->state_tracker, GRPC_CHANNEL_IDLE,
@ -491,7 +489,7 @@ static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
} }
grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker); grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker);
grpc_pollset_set_destroy(chand->interested_parties); grpc_pollset_set_destroy(chand->interested_parties);
gpr_mu_destroy(&chand->mu_config); gpr_mu_destroy(&chand->mu);
} }
static void cc_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, static void cc_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
@ -521,7 +519,7 @@ void grpc_client_channel_set_resolver(grpc_exec_ctx *exec_ctx,
/* post construction initialization: set the transport setup pointer */ /* post construction initialization: set the transport setup pointer */
grpc_channel_element *elem = grpc_channel_stack_last_element(channel_stack); grpc_channel_element *elem = grpc_channel_stack_last_element(channel_stack);
channel_data *chand = elem->channel_data; channel_data *chand = elem->channel_data;
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
GPR_ASSERT(!chand->resolver); GPR_ASSERT(!chand->resolver);
chand->resolver = resolver; chand->resolver = resolver;
GRPC_RESOLVER_REF(resolver, "channel"); GRPC_RESOLVER_REF(resolver, "channel");
@ -529,17 +527,17 @@ void grpc_client_channel_set_resolver(grpc_exec_ctx *exec_ctx,
chand->exit_idle_when_lb_policy_arrives) { chand->exit_idle_when_lb_policy_arrives) {
chand->started_resolving = 1; chand->started_resolving = 1;
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver"); GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
grpc_resolver_next(exec_ctx, resolver, &chand->incoming_configuration, grpc_resolver_next(exec_ctx, resolver, &chand->resolver_result,
&chand->on_config_changed); &chand->on_resolver_result_changed);
} }
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
} }
grpc_connectivity_state grpc_client_channel_check_connectivity_state( grpc_connectivity_state grpc_client_channel_check_connectivity_state(
grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect) { grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect) {
channel_data *chand = elem->channel_data; channel_data *chand = elem->channel_data;
grpc_connectivity_state out; grpc_connectivity_state out;
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
out = grpc_connectivity_state_check(&chand->state_tracker, NULL); out = grpc_connectivity_state_check(&chand->state_tracker, NULL);
if (out == GRPC_CHANNEL_IDLE && try_to_connect) { if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
if (chand->lb_policy != NULL) { if (chand->lb_policy != NULL) {
@ -549,13 +547,12 @@ grpc_connectivity_state grpc_client_channel_check_connectivity_state(
if (!chand->started_resolving && chand->resolver != NULL) { if (!chand->started_resolving && chand->resolver != NULL) {
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver"); GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
chand->started_resolving = 1; chand->started_resolving = 1;
grpc_resolver_next(exec_ctx, chand->resolver, grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
&chand->incoming_configuration, &chand->on_resolver_result_changed);
&chand->on_config_changed);
} }
} }
} }
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
return out; return out;
} }
@ -590,8 +587,8 @@ void grpc_client_channel_watch_connectivity_state(
grpc_closure_init(&w->my_closure, on_external_watch_complete, w); grpc_closure_init(&w->my_closure, on_external_watch_complete, w);
GRPC_CHANNEL_STACK_REF(w->chand->owning_stack, GRPC_CHANNEL_STACK_REF(w->chand->owning_stack,
"external_connectivity_watcher"); "external_connectivity_watcher");
gpr_mu_lock(&chand->mu_config); gpr_mu_lock(&chand->mu);
grpc_connectivity_state_notify_on_state_change( grpc_connectivity_state_notify_on_state_change(
exec_ctx, &chand->state_tracker, state, &w->my_closure); exec_ctx, &chand->state_tracker, state, &w->my_closure);
gpr_mu_unlock(&chand->mu_config); gpr_mu_unlock(&chand->mu);
} }

@ -43,8 +43,6 @@
typedef struct grpc_lb_policy_factory grpc_lb_policy_factory; typedef struct grpc_lb_policy_factory grpc_lb_policy_factory;
typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable; typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable;
/** grpc_lb_policy provides grpc_client_config objects to grpc_channel
objects */
struct grpc_lb_policy_factory { struct grpc_lb_policy_factory {
const grpc_lb_policy_factory_vtable *vtable; const grpc_lb_policy_factory_vtable *vtable;
}; };

@ -76,7 +76,7 @@ void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
} }
void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
grpc_client_config **target_config, grpc_resolver_result **result,
grpc_closure *on_complete) { grpc_closure *on_complete) {
resolver->vtable->next(exec_ctx, resolver, target_config, on_complete); resolver->vtable->next(exec_ctx, resolver, result, on_complete);
} }

@ -34,14 +34,14 @@
#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
#define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H #define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
#include "src/core/ext/client_config/client_config.h" #include "src/core/ext/client_config/resolver_result.h"
#include "src/core/ext/client_config/subchannel.h" #include "src/core/ext/client_config/subchannel.h"
#include "src/core/lib/iomgr/iomgr.h" #include "src/core/lib/iomgr/iomgr.h"
typedef struct grpc_resolver grpc_resolver; typedef struct grpc_resolver grpc_resolver;
typedef struct grpc_resolver_vtable grpc_resolver_vtable; typedef struct grpc_resolver_vtable grpc_resolver_vtable;
/** grpc_resolver provides grpc_client_config objects to grpc_channel /** grpc_resolver provides grpc_resolver_result objects to grpc_channel
objects */ objects */
struct grpc_resolver { struct grpc_resolver {
const grpc_resolver_vtable *vtable; const grpc_resolver_vtable *vtable;
@ -53,7 +53,7 @@ struct grpc_resolver_vtable {
void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver); void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
void (*channel_saw_error)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver); void (*channel_saw_error)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
void (*next)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, void (*next)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
grpc_client_config **target_config, grpc_closure *on_complete); grpc_resolver_result **result, grpc_closure *on_complete);
}; };
#ifdef GRPC_RESOLVER_REFCOUNT_DEBUG #ifdef GRPC_RESOLVER_REFCOUNT_DEBUG
@ -82,13 +82,13 @@ void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
grpc_resolver *resolver); grpc_resolver *resolver);
/** Get the next client config. Called by the channel to fetch a new /** Get the next client config. Called by the channel to fetch a new
configuration. Expected to set *target_config with a new configuration, configuration. Expected to set *result with a new configuration,
and then schedule on_complete for execution. and then schedule on_complete for execution.
If resolution is fatally broken, set *target_config to NULL and If resolution is fatally broken, set *result to NULL and
schedule on_complete. */ schedule on_complete. */
void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
grpc_client_config **target_config, grpc_resolver_result **result,
grpc_closure *on_complete); grpc_closure *on_complete);
#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H */ #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H */

@ -41,7 +41,7 @@
typedef struct grpc_resolver_factory grpc_resolver_factory; typedef struct grpc_resolver_factory grpc_resolver_factory;
typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable; typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
/** grpc_resolver provides grpc_client_config objects to grpc_channel /** grpc_resolver provides grpc_resolver_result objects to grpc_channel
objects */ objects */
struct grpc_resolver_factory { struct grpc_resolver_factory {
const grpc_resolver_factory_vtable *vtable; const grpc_resolver_factory_vtable *vtable;

@ -31,44 +31,45 @@
* *
*/ */
#include "src/core/ext/client_config/client_config.h" #include "src/core/ext/client_config/resolver_result.h"
#include <string.h> #include <string.h>
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
struct grpc_client_config { struct grpc_resolver_result {
gpr_refcount refs; gpr_refcount refs;
grpc_lb_policy *lb_policy; grpc_lb_policy *lb_policy;
}; };
grpc_client_config *grpc_client_config_create() { grpc_resolver_result *grpc_resolver_result_create() {
grpc_client_config *c = gpr_malloc(sizeof(*c)); grpc_resolver_result *c = gpr_malloc(sizeof(*c));
memset(c, 0, sizeof(*c)); memset(c, 0, sizeof(*c));
gpr_ref_init(&c->refs, 1); gpr_ref_init(&c->refs, 1);
return c; return c;
} }
void grpc_client_config_ref(grpc_client_config *c) { gpr_ref(&c->refs); } void grpc_resolver_result_ref(grpc_resolver_result *c) { gpr_ref(&c->refs); }
void grpc_client_config_unref(grpc_exec_ctx *exec_ctx, grpc_client_config *c) { void grpc_resolver_result_unref(grpc_exec_ctx *exec_ctx,
grpc_resolver_result *c) {
if (gpr_unref(&c->refs)) { if (gpr_unref(&c->refs)) {
if (c->lb_policy != NULL) { if (c->lb_policy != NULL) {
GRPC_LB_POLICY_UNREF(exec_ctx, c->lb_policy, "client_config"); GRPC_LB_POLICY_UNREF(exec_ctx, c->lb_policy, "resolver_result");
} }
gpr_free(c); gpr_free(c);
} }
} }
void grpc_client_config_set_lb_policy(grpc_client_config *c, void grpc_resolver_result_set_lb_policy(grpc_resolver_result *c,
grpc_lb_policy *lb_policy) { grpc_lb_policy *lb_policy) {
GPR_ASSERT(c->lb_policy == NULL); GPR_ASSERT(c->lb_policy == NULL);
if (lb_policy) { if (lb_policy) {
GRPC_LB_POLICY_REF(lb_policy, "client_config"); GRPC_LB_POLICY_REF(lb_policy, "resolver_result");
} }
c->lb_policy = lb_policy; c->lb_policy = lb_policy;
} }
grpc_lb_policy *grpc_client_config_get_lb_policy(grpc_client_config *c) { grpc_lb_policy *grpc_resolver_result_get_lb_policy(grpc_resolver_result *c) {
return c->lb_policy; return c->lb_policy;
} }

@ -31,23 +31,22 @@
* *
*/ */
#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H #ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_RESULT_H
#define GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H #define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_RESULT_H
#include "src/core/ext/client_config/lb_policy.h" #include "src/core/ext/client_config/lb_policy.h"
/** Total configuration for a client. Provided, and updated, by /** Results reported from a grpc_resolver. */
grpc_resolver */ typedef struct grpc_resolver_result grpc_resolver_result;
typedef struct grpc_client_config grpc_client_config;
grpc_client_config *grpc_client_config_create(); grpc_resolver_result *grpc_resolver_result_create();
void grpc_client_config_ref(grpc_client_config *client_config); void grpc_resolver_result_ref(grpc_resolver_result *client_config);
void grpc_client_config_unref(grpc_exec_ctx *exec_ctx, void grpc_resolver_result_unref(grpc_exec_ctx *exec_ctx,
grpc_client_config *client_config); grpc_resolver_result *client_config);
void grpc_client_config_set_lb_policy(grpc_client_config *client_config, void grpc_resolver_result_set_lb_policy(grpc_resolver_result *client_config,
grpc_lb_policy *lb_policy); grpc_lb_policy *lb_policy);
grpc_lb_policy *grpc_client_config_get_lb_policy( grpc_lb_policy *grpc_resolver_result_get_lb_policy(
grpc_client_config *client_config); grpc_resolver_result *client_config);
#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H */ #endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_RESULT_H */

@ -67,16 +67,16 @@ typedef struct {
gpr_mu mu; gpr_mu mu;
/** are we currently resolving? */ /** are we currently resolving? */
int resolving; int resolving;
/** which version of resolved_config have we published? */ /** which version of the result have we published? */
int published_version; int published_version;
/** which version of resolved_config is current? */ /** which version of the result is current? */
int resolved_version; int resolved_version;
/** pending next completion, or NULL */ /** pending next completion, or NULL */
grpc_closure *next_completion; grpc_closure *next_completion;
/** target config address for next completion */ /** target result address for next completion */
grpc_client_config **target_config; grpc_resolver_result **target_result;
/** current (fully resolved) config */ /** current (fully resolved) result */
grpc_client_config *resolved_config; grpc_resolver_result *resolved_result;
/** retry timer */ /** retry timer */
bool have_retry_timer; bool have_retry_timer;
grpc_timer retry_timer; grpc_timer retry_timer;
@ -97,7 +97,7 @@ static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
static void dns_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *r); static void dns_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
static void dns_channel_saw_error(grpc_exec_ctx *exec_ctx, grpc_resolver *r); static void dns_channel_saw_error(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *r, static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *r,
grpc_client_config **target_config, grpc_resolver_result **target_result,
grpc_closure *on_complete); grpc_closure *on_complete);
static const grpc_resolver_vtable dns_resolver_vtable = { static const grpc_resolver_vtable dns_resolver_vtable = {
@ -110,7 +110,7 @@ static void dns_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver) {
grpc_timer_cancel(exec_ctx, &r->retry_timer); grpc_timer_cancel(exec_ctx, &r->retry_timer);
} }
if (r->next_completion != NULL) { if (r->next_completion != NULL) {
*r->target_config = NULL; *r->target_result = NULL;
grpc_exec_ctx_sched(exec_ctx, r->next_completion, grpc_exec_ctx_sched(exec_ctx, r->next_completion,
GRPC_ERROR_CREATE("Resolver Shutdown"), NULL); GRPC_ERROR_CREATE("Resolver Shutdown"), NULL);
r->next_completion = NULL; r->next_completion = NULL;
@ -130,13 +130,13 @@ static void dns_channel_saw_error(grpc_exec_ctx *exec_ctx,
} }
static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, static void dns_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
grpc_client_config **target_config, grpc_resolver_result **target_result,
grpc_closure *on_complete) { grpc_closure *on_complete) {
dns_resolver *r = (dns_resolver *)resolver; dns_resolver *r = (dns_resolver *)resolver;
gpr_mu_lock(&r->mu); gpr_mu_lock(&r->mu);
GPR_ASSERT(!r->next_completion); GPR_ASSERT(!r->next_completion);
r->next_completion = on_complete; r->next_completion = on_complete;
r->target_config = target_config; r->target_result = target_result;
if (r->resolved_version == 0 && !r->resolving) { if (r->resolved_version == 0 && !r->resolving) {
gpr_backoff_reset(&r->backoff_state); gpr_backoff_reset(&r->backoff_state);
dns_start_resolving_locked(exec_ctx, r); dns_start_resolving_locked(exec_ctx, r);
@ -165,7 +165,7 @@ static void dns_on_retry_timer(grpc_exec_ctx *exec_ctx, void *arg,
static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg, static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) { grpc_error *error) {
dns_resolver *r = arg; dns_resolver *r = arg;
grpc_client_config *config = NULL; grpc_resolver_result *result = NULL;
grpc_lb_policy *lb_policy; grpc_lb_policy *lb_policy;
gpr_mu_lock(&r->mu); gpr_mu_lock(&r->mu);
GPR_ASSERT(r->resolving); GPR_ASSERT(r->resolving);
@ -173,14 +173,14 @@ static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg,
grpc_resolved_addresses *addresses = r->addresses; grpc_resolved_addresses *addresses = r->addresses;
if (addresses != NULL) { if (addresses != NULL) {
grpc_lb_policy_args lb_policy_args; grpc_lb_policy_args lb_policy_args;
config = grpc_client_config_create(); result = grpc_resolver_result_create();
memset(&lb_policy_args, 0, sizeof(lb_policy_args)); memset(&lb_policy_args, 0, sizeof(lb_policy_args));
lb_policy_args.addresses = addresses; lb_policy_args.addresses = addresses;
lb_policy_args.client_channel_factory = r->client_channel_factory; lb_policy_args.client_channel_factory = r->client_channel_factory;
lb_policy = lb_policy =
grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args); grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args);
if (lb_policy != NULL) { if (lb_policy != NULL) {
grpc_client_config_set_lb_policy(config, lb_policy); grpc_resolver_result_set_lb_policy(result, lb_policy);
GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "construction"); GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "construction");
} }
grpc_resolved_addresses_destroy(addresses); grpc_resolved_addresses_destroy(addresses);
@ -203,10 +203,10 @@ static void dns_on_resolved(grpc_exec_ctx *exec_ctx, void *arg,
grpc_timer_init(exec_ctx, &r->retry_timer, next_try, dns_on_retry_timer, r, grpc_timer_init(exec_ctx, &r->retry_timer, next_try, dns_on_retry_timer, r,
now); now);
} }
if (r->resolved_config) { if (r->resolved_result) {
grpc_client_config_unref(exec_ctx, r->resolved_config); grpc_resolver_result_unref(exec_ctx, r->resolved_result);
} }
r->resolved_config = config; r->resolved_result = result;
r->resolved_version++; r->resolved_version++;
dns_maybe_finish_next_locked(exec_ctx, r); dns_maybe_finish_next_locked(exec_ctx, r);
gpr_mu_unlock(&r->mu); gpr_mu_unlock(&r->mu);
@ -228,9 +228,9 @@ static void dns_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
dns_resolver *r) { dns_resolver *r) {
if (r->next_completion != NULL && if (r->next_completion != NULL &&
r->resolved_version != r->published_version) { r->resolved_version != r->published_version) {
*r->target_config = r->resolved_config; *r->target_result = r->resolved_result;
if (r->resolved_config) { if (r->resolved_result) {
grpc_client_config_ref(r->resolved_config); grpc_resolver_result_ref(r->resolved_result);
} }
grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL); grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL);
r->next_completion = NULL; r->next_completion = NULL;
@ -241,8 +241,8 @@ 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;
gpr_mu_destroy(&r->mu); gpr_mu_destroy(&r->mu);
if (r->resolved_config) { if (r->resolved_result) {
grpc_client_config_unref(exec_ctx, r->resolved_config); grpc_resolver_result_unref(exec_ctx, r->resolved_result);
} }
grpc_client_channel_factory_unref(exec_ctx, r->client_channel_factory); grpc_client_channel_factory_unref(exec_ctx, r->client_channel_factory);
gpr_free(r->name); gpr_free(r->name);

@ -66,8 +66,8 @@ typedef struct {
int published; int published;
/** pending next completion, or NULL */ /** pending next completion, or NULL */
grpc_closure *next_completion; grpc_closure *next_completion;
/** target config address for next completion */ /** target result address for next completion */
grpc_client_config **target_config; grpc_resolver_result **target_result;
} sockaddr_resolver; } sockaddr_resolver;
static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r); static void sockaddr_destroy(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
@ -79,7 +79,7 @@ static void sockaddr_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *r);
static void sockaddr_channel_saw_error(grpc_exec_ctx *exec_ctx, static void sockaddr_channel_saw_error(grpc_exec_ctx *exec_ctx,
grpc_resolver *r); grpc_resolver *r);
static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *r, static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *r,
grpc_client_config **target_config, grpc_resolver_result **target_result,
grpc_closure *on_complete); grpc_closure *on_complete);
static const grpc_resolver_vtable sockaddr_resolver_vtable = { static const grpc_resolver_vtable sockaddr_resolver_vtable = {
@ -91,7 +91,7 @@ static void sockaddr_shutdown(grpc_exec_ctx *exec_ctx,
sockaddr_resolver *r = (sockaddr_resolver *)resolver; sockaddr_resolver *r = (sockaddr_resolver *)resolver;
gpr_mu_lock(&r->mu); gpr_mu_lock(&r->mu);
if (r->next_completion != NULL) { if (r->next_completion != NULL) {
*r->target_config = NULL; *r->target_result = NULL;
grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL); grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL);
r->next_completion = NULL; r->next_completion = NULL;
} }
@ -108,13 +108,13 @@ static void sockaddr_channel_saw_error(grpc_exec_ctx *exec_ctx,
} }
static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver, static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
grpc_client_config **target_config, grpc_resolver_result **target_result,
grpc_closure *on_complete) { grpc_closure *on_complete) {
sockaddr_resolver *r = (sockaddr_resolver *)resolver; sockaddr_resolver *r = (sockaddr_resolver *)resolver;
gpr_mu_lock(&r->mu); gpr_mu_lock(&r->mu);
GPR_ASSERT(!r->next_completion); GPR_ASSERT(!r->next_completion);
r->next_completion = on_complete; r->next_completion = on_complete;
r->target_config = target_config; r->target_result = target_result;
sockaddr_maybe_finish_next_locked(exec_ctx, r); sockaddr_maybe_finish_next_locked(exec_ctx, r);
gpr_mu_unlock(&r->mu); gpr_mu_unlock(&r->mu);
} }
@ -122,17 +122,17 @@ static void sockaddr_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx, static void sockaddr_maybe_finish_next_locked(grpc_exec_ctx *exec_ctx,
sockaddr_resolver *r) { sockaddr_resolver *r) {
if (r->next_completion != NULL && !r->published) { if (r->next_completion != NULL && !r->published) {
grpc_client_config *cfg = grpc_client_config_create(); grpc_resolver_result *result = grpc_resolver_result_create();
grpc_lb_policy_args lb_policy_args; grpc_lb_policy_args lb_policy_args;
memset(&lb_policy_args, 0, sizeof(lb_policy_args)); memset(&lb_policy_args, 0, sizeof(lb_policy_args));
lb_policy_args.addresses = r->addresses; lb_policy_args.addresses = r->addresses;
lb_policy_args.client_channel_factory = r->client_channel_factory; lb_policy_args.client_channel_factory = r->client_channel_factory;
grpc_lb_policy *lb_policy = grpc_lb_policy *lb_policy =
grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args); grpc_lb_policy_create(exec_ctx, r->lb_policy_name, &lb_policy_args);
grpc_client_config_set_lb_policy(cfg, lb_policy); grpc_resolver_result_set_lb_policy(result, lb_policy);
GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "sockaddr"); GRPC_LB_POLICY_UNREF(exec_ctx, lb_policy, "sockaddr");
r->published = 1; r->published = 1;
*r->target_config = cfg; *r->target_result = result;
grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL); grpc_exec_ctx_sched(exec_ctx, r->next_completion, GRPC_ERROR_NONE, NULL);
r->next_completion = NULL; r->next_completion = NULL;
} }

@ -220,7 +220,6 @@ CORE_SOURCE_FILES = [
'src/core/ext/client_config/channel_connectivity.c', 'src/core/ext/client_config/channel_connectivity.c',
'src/core/ext/client_config/client_channel.c', 'src/core/ext/client_config/client_channel.c',
'src/core/ext/client_config/client_channel_factory.c', 'src/core/ext/client_config/client_channel_factory.c',
'src/core/ext/client_config/client_config.c',
'src/core/ext/client_config/client_config_plugin.c', 'src/core/ext/client_config/client_config_plugin.c',
'src/core/ext/client_config/connector.c', 'src/core/ext/client_config/connector.c',
'src/core/ext/client_config/default_initial_connect_string.c', 'src/core/ext/client_config/default_initial_connect_string.c',
@ -232,6 +231,7 @@ CORE_SOURCE_FILES = [
'src/core/ext/client_config/resolver.c', 'src/core/ext/client_config/resolver.c',
'src/core/ext/client_config/resolver_factory.c', 'src/core/ext/client_config/resolver_factory.c',
'src/core/ext/client_config/resolver_registry.c', 'src/core/ext/client_config/resolver_registry.c',
'src/core/ext/client_config/resolver_result.c',
'src/core/ext/client_config/subchannel.c', 'src/core/ext/client_config/subchannel.c',
'src/core/ext/client_config/subchannel_call_holder.c', 'src/core/ext/client_config/subchannel_call_holder.c',
'src/core/ext/client_config/subchannel_index.c', 'src/core/ext/client_config/subchannel_index.c',

@ -127,26 +127,26 @@ int main(int argc, char **argv) {
grpc_resolver *resolver = create_resolver("dns:test"); grpc_resolver *resolver = create_resolver("dns:test");
grpc_client_config *config = (grpc_client_config *)1; grpc_resolver_result *result = (grpc_resolver_result *)1;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
gpr_event ev1; gpr_event ev1;
gpr_event_init(&ev1); gpr_event_init(&ev1);
grpc_resolver_next(&exec_ctx, resolver, &config, grpc_resolver_next(&exec_ctx, resolver, &result,
grpc_closure_create(on_done, &ev1)); grpc_closure_create(on_done, &ev1));
grpc_exec_ctx_flush(&exec_ctx); grpc_exec_ctx_flush(&exec_ctx);
GPR_ASSERT(wait_loop(5, &ev1)); GPR_ASSERT(wait_loop(5, &ev1));
GPR_ASSERT(config == NULL); GPR_ASSERT(result == NULL);
gpr_event ev2; gpr_event ev2;
gpr_event_init(&ev2); gpr_event_init(&ev2);
grpc_resolver_next(&exec_ctx, resolver, &config, grpc_resolver_next(&exec_ctx, resolver, &result,
grpc_closure_create(on_done, &ev2)); grpc_closure_create(on_done, &ev2));
grpc_exec_ctx_flush(&exec_ctx); grpc_exec_ctx_flush(&exec_ctx);
GPR_ASSERT(wait_loop(30, &ev2)); GPR_ASSERT(wait_loop(30, &ev2));
GPR_ASSERT(config != NULL); GPR_ASSERT(result != NULL);
grpc_client_config_unref(&exec_ctx, config); grpc_resolver_result_unref(&exec_ctx, result);
GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test"); GRPC_RESOLVER_UNREF(&exec_ctx, resolver, "test");
grpc_exec_ctx_finish(&exec_ctx); grpc_exec_ctx_finish(&exec_ctx);

@ -917,7 +917,6 @@ src/core/lib/tsi/transport_security.h \
src/core/lib/tsi/transport_security_interface.h \ src/core/lib/tsi/transport_security_interface.h \
src/core/ext/client_config/client_channel.h \ src/core/ext/client_config/client_channel.h \
src/core/ext/client_config/client_channel_factory.h \ src/core/ext/client_config/client_channel_factory.h \
src/core/ext/client_config/client_config.h \
src/core/ext/client_config/connector.h \ src/core/ext/client_config/connector.h \
src/core/ext/client_config/initial_connect_string.h \ src/core/ext/client_config/initial_connect_string.h \
src/core/ext/client_config/lb_policy.h \ src/core/ext/client_config/lb_policy.h \
@ -927,6 +926,7 @@ src/core/ext/client_config/parse_address.h \
src/core/ext/client_config/resolver.h \ src/core/ext/client_config/resolver.h \
src/core/ext/client_config/resolver_factory.h \ src/core/ext/client_config/resolver_factory.h \
src/core/ext/client_config/resolver_registry.h \ src/core/ext/client_config/resolver_registry.h \
src/core/ext/client_config/resolver_result.h \
src/core/ext/client_config/subchannel.h \ src/core/ext/client_config/subchannel.h \
src/core/ext/client_config/subchannel_call_holder.h \ src/core/ext/client_config/subchannel_call_holder.h \
src/core/ext/client_config/subchannel_index.h \ src/core/ext/client_config/subchannel_index.h \
@ -1094,7 +1094,6 @@ src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
src/core/ext/client_config/channel_connectivity.c \ src/core/ext/client_config/channel_connectivity.c \
src/core/ext/client_config/client_channel.c \ src/core/ext/client_config/client_channel.c \
src/core/ext/client_config/client_channel_factory.c \ src/core/ext/client_config/client_channel_factory.c \
src/core/ext/client_config/client_config.c \
src/core/ext/client_config/client_config_plugin.c \ src/core/ext/client_config/client_config_plugin.c \
src/core/ext/client_config/connector.c \ src/core/ext/client_config/connector.c \
src/core/ext/client_config/default_initial_connect_string.c \ src/core/ext/client_config/default_initial_connect_string.c \
@ -1106,6 +1105,7 @@ src/core/ext/client_config/parse_address.c \
src/core/ext/client_config/resolver.c \ src/core/ext/client_config/resolver.c \
src/core/ext/client_config/resolver_factory.c \ src/core/ext/client_config/resolver_factory.c \
src/core/ext/client_config/resolver_registry.c \ src/core/ext/client_config/resolver_registry.c \
src/core/ext/client_config/resolver_result.c \
src/core/ext/client_config/subchannel.c \ src/core/ext/client_config/subchannel.c \
src/core/ext/client_config/subchannel_call_holder.c \ src/core/ext/client_config/subchannel_call_holder.c \
src/core/ext/client_config/subchannel_index.c \ src/core/ext/client_config/subchannel_index.c \

@ -6089,7 +6089,6 @@
"headers": [ "headers": [
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
"src/core/ext/client_config/initial_connect_string.h", "src/core/ext/client_config/initial_connect_string.h",
"src/core/ext/client_config/lb_policy.h", "src/core/ext/client_config/lb_policy.h",
@ -6099,6 +6098,7 @@
"src/core/ext/client_config/resolver.h", "src/core/ext/client_config/resolver.h",
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.h", "src/core/ext/client_config/subchannel_call_holder.h",
"src/core/ext/client_config/subchannel_index.h", "src/core/ext/client_config/subchannel_index.h",
@ -6112,8 +6112,6 @@
"src/core/ext/client_config/client_channel.h", "src/core/ext/client_config/client_channel.h",
"src/core/ext/client_config/client_channel_factory.c", "src/core/ext/client_config/client_channel_factory.c",
"src/core/ext/client_config/client_channel_factory.h", "src/core/ext/client_config/client_channel_factory.h",
"src/core/ext/client_config/client_config.c",
"src/core/ext/client_config/client_config.h",
"src/core/ext/client_config/client_config_plugin.c", "src/core/ext/client_config/client_config_plugin.c",
"src/core/ext/client_config/connector.c", "src/core/ext/client_config/connector.c",
"src/core/ext/client_config/connector.h", "src/core/ext/client_config/connector.h",
@ -6134,6 +6132,8 @@
"src/core/ext/client_config/resolver_factory.h", "src/core/ext/client_config/resolver_factory.h",
"src/core/ext/client_config/resolver_registry.c", "src/core/ext/client_config/resolver_registry.c",
"src/core/ext/client_config/resolver_registry.h", "src/core/ext/client_config/resolver_registry.h",
"src/core/ext/client_config/resolver_result.c",
"src/core/ext/client_config/resolver_result.h",
"src/core/ext/client_config/subchannel.c", "src/core/ext/client_config/subchannel.c",
"src/core/ext/client_config/subchannel.h", "src/core/ext/client_config/subchannel.h",
"src/core/ext/client_config/subchannel_call_holder.c", "src/core/ext/client_config/subchannel_call_holder.c",

@ -426,7 +426,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\lib\tsi\transport_security_interface.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\lib\tsi\transport_security_interface.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" />
@ -436,6 +435,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
@ -750,8 +750,6 @@
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
@ -774,6 +772,8 @@
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">

@ -436,9 +436,6 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
<Filter>src\core\ext\client_config</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
@ -472,6 +469,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.c">
<Filter>src\core\ext\client_config</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
@ -1046,9 +1046,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h">
<Filter>src\core\ext\client_config</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
@ -1076,6 +1073,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.h">
<Filter>src\core\ext\client_config</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>

@ -392,7 +392,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" />
@ -402,6 +401,7 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" /> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
@ -666,8 +666,6 @@
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
@ -690,6 +688,8 @@
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.c">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">

@ -361,9 +361,6 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
<Filter>src\core\ext\client_config</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
@ -397,6 +394,9 @@
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.c">
<Filter>src\core\ext\client_config</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c"> <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClCompile> </ClCompile>
@ -884,9 +884,6 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h">
<Filter>src\core\ext\client_config</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
@ -914,6 +911,9 @@
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_result.h">
<Filter>src\core\ext\client_config</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h"> <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h">
<Filter>src\core\ext\client_config</Filter> <Filter>src\core\ext\client_config</Filter>
</ClInclude> </ClInclude>

Loading…
Cancel
Save