Factor out channel state watching
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 5c74bf1..8dab263 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -936,6 +936,20 @@
"gpr",
"gpr_test_util",
"grpc",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "language": "c",
+ "name": "uri_parser_test",
+ "src": [
+ "test/core/client_config/uri_parser_test.c"
+ ]
+ },
+ {
+ "deps": [
+ "gpr",
+ "gpr_test_util",
+ "grpc",
"grpc++",
"grpc++_test_util",
"grpc_test_util"
@@ -8636,14 +8650,24 @@
"src/core/channel/census_filter.h",
"src/core/channel/channel_args.h",
"src/core/channel/channel_stack.h",
- "src/core/channel/child_channel.h",
"src/core/channel/client_channel.h",
- "src/core/channel/client_setup.h",
"src/core/channel/connected_channel.h",
+ "src/core/channel/connectivity_state.h",
"src/core/channel/context.h",
"src/core/channel/http_client_filter.h",
"src/core/channel/http_server_filter.h",
"src/core/channel/noop_filter.h",
+ "src/core/client_config/client_config.h",
+ "src/core/client_config/connector.h",
+ "src/core/client_config/lb_policies/pick_first.h",
+ "src/core/client_config/lb_policy.h",
+ "src/core/client_config/resolver.h",
+ "src/core/client_config/resolver_factory.h",
+ "src/core/client_config/resolver_registry.h",
+ "src/core/client_config/resolvers/dns_resolver.h",
+ "src/core/client_config/subchannel.h",
+ "src/core/client_config/subchannel_factory.h",
+ "src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
"src/core/httpcli/format_request.h",
@@ -8698,7 +8722,6 @@
"src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h",
"src/core/surface/channel.h",
- "src/core/surface/client.h",
"src/core/surface/completion_queue.h",
"src/core/surface/event_string.h",
"src/core/surface/init.h",
@@ -8717,6 +8740,8 @@
"src/core/transport/chttp2/hpack_table.h",
"src/core/transport/chttp2/http2_errors.h",
"src/core/transport/chttp2/huffsyms.h",
+ "src/core/transport/chttp2/incoming_metadata.h",
+ "src/core/transport/chttp2/internal.h",
"src/core/transport/chttp2/status_conversion.h",
"src/core/transport/chttp2/stream_encoder.h",
"src/core/transport/chttp2/stream_map.h",
@@ -8752,14 +8777,12 @@
"src/core/channel/channel_args.h",
"src/core/channel/channel_stack.c",
"src/core/channel/channel_stack.h",
- "src/core/channel/child_channel.c",
- "src/core/channel/child_channel.h",
"src/core/channel/client_channel.c",
"src/core/channel/client_channel.h",
- "src/core/channel/client_setup.c",
- "src/core/channel/client_setup.h",
"src/core/channel/connected_channel.c",
"src/core/channel/connected_channel.h",
+ "src/core/channel/connectivity_state.c",
+ "src/core/channel/connectivity_state.h",
"src/core/channel/context.h",
"src/core/channel/http_client_filter.c",
"src/core/channel/http_client_filter.h",
@@ -8767,6 +8790,28 @@
"src/core/channel/http_server_filter.h",
"src/core/channel/noop_filter.c",
"src/core/channel/noop_filter.h",
+ "src/core/client_config/client_config.c",
+ "src/core/client_config/client_config.h",
+ "src/core/client_config/connector.c",
+ "src/core/client_config/connector.h",
+ "src/core/client_config/lb_policies/pick_first.c",
+ "src/core/client_config/lb_policies/pick_first.h",
+ "src/core/client_config/lb_policy.c",
+ "src/core/client_config/lb_policy.h",
+ "src/core/client_config/resolver.c",
+ "src/core/client_config/resolver.h",
+ "src/core/client_config/resolver_factory.c",
+ "src/core/client_config/resolver_factory.h",
+ "src/core/client_config/resolver_registry.c",
+ "src/core/client_config/resolver_registry.h",
+ "src/core/client_config/resolvers/dns_resolver.c",
+ "src/core/client_config/resolvers/dns_resolver.h",
+ "src/core/client_config/subchannel.c",
+ "src/core/client_config/subchannel.h",
+ "src/core/client_config/subchannel_factory.c",
+ "src/core/client_config/subchannel_factory.h",
+ "src/core/client_config/uri_parser.c",
+ "src/core/client_config/uri_parser.h",
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/compression/message_compress.h",
@@ -8891,8 +8936,6 @@
"src/core/surface/channel.c",
"src/core/surface/channel.h",
"src/core/surface/channel_create.c",
- "src/core/surface/client.c",
- "src/core/surface/client.h",
"src/core/surface/completion_queue.c",
"src/core/surface/completion_queue.h",
"src/core/surface/event_string.c",
@@ -8933,16 +8976,22 @@
"src/core/transport/chttp2/http2_errors.h",
"src/core/transport/chttp2/huffsyms.c",
"src/core/transport/chttp2/huffsyms.h",
+ "src/core/transport/chttp2/incoming_metadata.c",
+ "src/core/transport/chttp2/incoming_metadata.h",
+ "src/core/transport/chttp2/internal.h",
+ "src/core/transport/chttp2/parsing.c",
"src/core/transport/chttp2/status_conversion.c",
"src/core/transport/chttp2/status_conversion.h",
"src/core/transport/chttp2/stream_encoder.c",
"src/core/transport/chttp2/stream_encoder.h",
+ "src/core/transport/chttp2/stream_lists.c",
"src/core/transport/chttp2/stream_map.c",
"src/core/transport/chttp2/stream_map.h",
"src/core/transport/chttp2/timeout_encoding.c",
"src/core/transport/chttp2/timeout_encoding.h",
"src/core/transport/chttp2/varint.c",
"src/core/transport/chttp2/varint.h",
+ "src/core/transport/chttp2/writing.c",
"src/core/transport/chttp2_transport.c",
"src/core/transport/chttp2_transport.h",
"src/core/transport/metadata.c",
@@ -9047,14 +9096,24 @@
"src/core/channel/census_filter.h",
"src/core/channel/channel_args.h",
"src/core/channel/channel_stack.h",
- "src/core/channel/child_channel.h",
"src/core/channel/client_channel.h",
- "src/core/channel/client_setup.h",
"src/core/channel/connected_channel.h",
+ "src/core/channel/connectivity_state.h",
"src/core/channel/context.h",
"src/core/channel/http_client_filter.h",
"src/core/channel/http_server_filter.h",
"src/core/channel/noop_filter.h",
+ "src/core/client_config/client_config.h",
+ "src/core/client_config/connector.h",
+ "src/core/client_config/lb_policies/pick_first.h",
+ "src/core/client_config/lb_policy.h",
+ "src/core/client_config/resolver.h",
+ "src/core/client_config/resolver_factory.h",
+ "src/core/client_config/resolver_registry.h",
+ "src/core/client_config/resolvers/dns_resolver.h",
+ "src/core/client_config/subchannel.h",
+ "src/core/client_config/subchannel_factory.h",
+ "src/core/client_config/uri_parser.h",
"src/core/compression/message_compress.h",
"src/core/debug/trace.h",
"src/core/iomgr/alarm.h",
@@ -9097,7 +9156,6 @@
"src/core/surface/byte_buffer_queue.h",
"src/core/surface/call.h",
"src/core/surface/channel.h",
- "src/core/surface/client.h",
"src/core/surface/completion_queue.h",
"src/core/surface/event_string.h",
"src/core/surface/init.h",
@@ -9116,6 +9174,8 @@
"src/core/transport/chttp2/hpack_table.h",
"src/core/transport/chttp2/http2_errors.h",
"src/core/transport/chttp2/huffsyms.h",
+ "src/core/transport/chttp2/incoming_metadata.h",
+ "src/core/transport/chttp2/internal.h",
"src/core/transport/chttp2/status_conversion.h",
"src/core/transport/chttp2/stream_encoder.h",
"src/core/transport/chttp2/stream_map.h",
@@ -9146,14 +9206,12 @@
"src/core/channel/channel_args.h",
"src/core/channel/channel_stack.c",
"src/core/channel/channel_stack.h",
- "src/core/channel/child_channel.c",
- "src/core/channel/child_channel.h",
"src/core/channel/client_channel.c",
"src/core/channel/client_channel.h",
- "src/core/channel/client_setup.c",
- "src/core/channel/client_setup.h",
"src/core/channel/connected_channel.c",
"src/core/channel/connected_channel.h",
+ "src/core/channel/connectivity_state.c",
+ "src/core/channel/connectivity_state.h",
"src/core/channel/context.h",
"src/core/channel/http_client_filter.c",
"src/core/channel/http_client_filter.h",
@@ -9161,6 +9219,28 @@
"src/core/channel/http_server_filter.h",
"src/core/channel/noop_filter.c",
"src/core/channel/noop_filter.h",
+ "src/core/client_config/client_config.c",
+ "src/core/client_config/client_config.h",
+ "src/core/client_config/connector.c",
+ "src/core/client_config/connector.h",
+ "src/core/client_config/lb_policies/pick_first.c",
+ "src/core/client_config/lb_policies/pick_first.h",
+ "src/core/client_config/lb_policy.c",
+ "src/core/client_config/lb_policy.h",
+ "src/core/client_config/resolver.c",
+ "src/core/client_config/resolver.h",
+ "src/core/client_config/resolver_factory.c",
+ "src/core/client_config/resolver_factory.h",
+ "src/core/client_config/resolver_registry.c",
+ "src/core/client_config/resolver_registry.h",
+ "src/core/client_config/resolvers/dns_resolver.c",
+ "src/core/client_config/resolvers/dns_resolver.h",
+ "src/core/client_config/subchannel.c",
+ "src/core/client_config/subchannel.h",
+ "src/core/client_config/subchannel_factory.c",
+ "src/core/client_config/subchannel_factory.h",
+ "src/core/client_config/uri_parser.c",
+ "src/core/client_config/uri_parser.h",
"src/core/compression/algorithm.c",
"src/core/compression/message_compress.c",
"src/core/compression/message_compress.h",
@@ -9255,8 +9335,6 @@
"src/core/surface/channel.c",
"src/core/surface/channel.h",
"src/core/surface/channel_create.c",
- "src/core/surface/client.c",
- "src/core/surface/client.h",
"src/core/surface/completion_queue.c",
"src/core/surface/completion_queue.h",
"src/core/surface/event_string.c",
@@ -9296,16 +9374,22 @@
"src/core/transport/chttp2/http2_errors.h",
"src/core/transport/chttp2/huffsyms.c",
"src/core/transport/chttp2/huffsyms.h",
+ "src/core/transport/chttp2/incoming_metadata.c",
+ "src/core/transport/chttp2/incoming_metadata.h",
+ "src/core/transport/chttp2/internal.h",
+ "src/core/transport/chttp2/parsing.c",
"src/core/transport/chttp2/status_conversion.c",
"src/core/transport/chttp2/status_conversion.h",
"src/core/transport/chttp2/stream_encoder.c",
"src/core/transport/chttp2/stream_encoder.h",
+ "src/core/transport/chttp2/stream_lists.c",
"src/core/transport/chttp2/stream_map.c",
"src/core/transport/chttp2/stream_map.h",
"src/core/transport/chttp2/timeout_encoding.c",
"src/core/transport/chttp2/timeout_encoding.h",
"src/core/transport/chttp2/varint.c",
"src/core/transport/chttp2/varint.h",
+ "src/core/transport/chttp2/writing.c",
"src/core/transport/chttp2_transport.c",
"src/core/transport/chttp2_transport.h",
"src/core/transport/metadata.c",