grpc 1.48.0-x86_64-linux → 1.49.0.pre1-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +98 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +90 -38
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <map>
|
25
25
|
#include <memory>
|
26
26
|
#include <string>
|
27
|
-
#include <type_traits>
|
28
27
|
#include <utility>
|
29
28
|
#include <vector>
|
30
29
|
|
@@ -34,6 +33,7 @@
|
|
34
33
|
#include "absl/status/statusor.h"
|
35
34
|
#include "absl/strings/string_view.h"
|
36
35
|
#include "absl/strings/strip.h"
|
36
|
+
#include "absl/types/optional.h"
|
37
37
|
|
38
38
|
#include <grpc/event_engine/event_engine.h>
|
39
39
|
#include <grpc/impl/codegen/grpc_types.h>
|
@@ -61,14 +61,12 @@
|
|
61
61
|
|
62
62
|
#if GRPC_ARES == 1
|
63
63
|
|
64
|
-
#include <limits.h>
|
65
64
|
#include <stdio.h>
|
66
65
|
#include <string.h>
|
67
66
|
|
68
67
|
#include <address_sorting/address_sorting.h>
|
69
68
|
|
70
69
|
#include "absl/container/flat_hash_set.h"
|
71
|
-
#include "absl/container/inlined_vector.h"
|
72
70
|
#include "absl/strings/str_cat.h"
|
73
71
|
|
74
72
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
@@ -99,7 +97,7 @@ namespace {
|
|
99
97
|
class AresClientChannelDNSResolver : public PollingResolver {
|
100
98
|
public:
|
101
99
|
AresClientChannelDNSResolver(ResolverArgs args,
|
102
|
-
const
|
100
|
+
const ChannelArgs& channel_args);
|
103
101
|
|
104
102
|
OrphanablePtr<Orphanable> StartRequest() override;
|
105
103
|
|
@@ -109,17 +107,43 @@ class AresClientChannelDNSResolver : public PollingResolver {
|
|
109
107
|
explicit AresRequestWrapper(
|
110
108
|
RefCountedPtr<AresClientChannelDNSResolver> resolver)
|
111
109
|
: resolver_(std::move(resolver)) {
|
112
|
-
|
113
|
-
|
114
|
-
|
110
|
+
// TODO(hork): replace this callback bookkeeping with promises.
|
111
|
+
// Locking to prevent completion before all records are queried
|
112
|
+
MutexLock lock(&on_resolved_mu_);
|
113
|
+
Ref(DEBUG_LOCATION, "OnHostnameResolved").release();
|
114
|
+
GRPC_CLOSURE_INIT(&on_hostname_resolved_, OnHostnameResolved, this,
|
115
|
+
nullptr);
|
116
|
+
hostname_request_.reset(grpc_dns_lookup_hostname_ares(
|
115
117
|
resolver_->authority().c_str(), resolver_->name_to_resolve().c_str(),
|
116
|
-
kDefaultSecurePort, resolver_->interested_parties(),
|
117
|
-
&addresses_,
|
118
|
-
|
119
|
-
|
120
|
-
resolver_
|
121
|
-
|
122
|
-
|
118
|
+
kDefaultSecurePort, resolver_->interested_parties(),
|
119
|
+
&on_hostname_resolved_, &addresses_, resolver_->query_timeout_ms_));
|
120
|
+
GRPC_CARES_TRACE_LOG(
|
121
|
+
"resolver:%p Started resolving hostnames. hostname_request_:%p",
|
122
|
+
resolver_.get(), hostname_request_.get());
|
123
|
+
if (resolver_->enable_srv_queries_) {
|
124
|
+
Ref(DEBUG_LOCATION, "OnSRVResolved").release();
|
125
|
+
GRPC_CLOSURE_INIT(&on_srv_resolved_, OnSRVResolved, this, nullptr);
|
126
|
+
srv_request_.reset(grpc_dns_lookup_srv_ares(
|
127
|
+
resolver_->authority().c_str(),
|
128
|
+
resolver_->name_to_resolve().c_str(),
|
129
|
+
resolver_->interested_parties(), &on_srv_resolved_,
|
130
|
+
&balancer_addresses_, resolver_->query_timeout_ms_));
|
131
|
+
GRPC_CARES_TRACE_LOG(
|
132
|
+
"resolver:%p Started resolving SRV records. srv_request_:%p",
|
133
|
+
resolver_.get(), srv_request_.get());
|
134
|
+
}
|
135
|
+
if (resolver_->request_service_config_) {
|
136
|
+
Ref(DEBUG_LOCATION, "OnTXTResolved").release();
|
137
|
+
GRPC_CLOSURE_INIT(&on_txt_resolved_, OnTXTResolved, this, nullptr);
|
138
|
+
txt_request_.reset(grpc_dns_lookup_txt_ares(
|
139
|
+
resolver_->authority().c_str(),
|
140
|
+
resolver_->name_to_resolve().c_str(),
|
141
|
+
resolver_->interested_parties(), &on_txt_resolved_,
|
142
|
+
&service_config_json_, resolver_->query_timeout_ms_));
|
143
|
+
GRPC_CARES_TRACE_LOG(
|
144
|
+
"resolver:%p Started resolving TXT records. txt_request_:%p",
|
145
|
+
resolver_.get(), srv_request_.get());
|
146
|
+
}
|
123
147
|
}
|
124
148
|
|
125
149
|
~AresRequestWrapper() override {
|
@@ -127,22 +151,49 @@ class AresClientChannelDNSResolver : public PollingResolver {
|
|
127
151
|
resolver_.reset(DEBUG_LOCATION, "dns-resolving");
|
128
152
|
}
|
129
153
|
|
130
|
-
|
131
|
-
|
154
|
+
// Note that thread safety cannot be analyzed due to this being invoked from
|
155
|
+
// OrphanablePtr<>, and there's no way to pass the lock annotation through
|
156
|
+
// there.
|
157
|
+
void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS {
|
158
|
+
{
|
159
|
+
MutexLock lock(&on_resolved_mu_);
|
160
|
+
if (hostname_request_ != nullptr) {
|
161
|
+
grpc_cancel_ares_request(hostname_request_.get());
|
162
|
+
}
|
163
|
+
if (srv_request_ != nullptr) {
|
164
|
+
grpc_cancel_ares_request(srv_request_.get());
|
165
|
+
}
|
166
|
+
if (txt_request_ != nullptr) {
|
167
|
+
grpc_cancel_ares_request(txt_request_.get());
|
168
|
+
}
|
169
|
+
}
|
132
170
|
Unref(DEBUG_LOCATION, "Orphan");
|
133
171
|
}
|
134
172
|
|
135
173
|
private:
|
136
|
-
static void
|
137
|
-
void
|
174
|
+
static void OnHostnameResolved(void* arg, grpc_error_handle error);
|
175
|
+
static void OnSRVResolved(void* arg, grpc_error_handle error);
|
176
|
+
static void OnTXTResolved(void* arg, grpc_error_handle error);
|
177
|
+
absl::optional<Result> OnResolvedLocked(grpc_error_handle error)
|
178
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(on_resolved_mu_);
|
138
179
|
|
180
|
+
Mutex on_resolved_mu_;
|
139
181
|
RefCountedPtr<AresClientChannelDNSResolver> resolver_;
|
140
|
-
|
141
|
-
|
182
|
+
grpc_closure on_hostname_resolved_;
|
183
|
+
std::unique_ptr<grpc_ares_request> hostname_request_
|
184
|
+
ABSL_GUARDED_BY(on_resolved_mu_);
|
185
|
+
grpc_closure on_srv_resolved_;
|
186
|
+
std::unique_ptr<grpc_ares_request> srv_request_
|
187
|
+
ABSL_GUARDED_BY(on_resolved_mu_);
|
188
|
+
grpc_closure on_txt_resolved_;
|
189
|
+
std::unique_ptr<grpc_ares_request> txt_request_
|
190
|
+
ABSL_GUARDED_BY(on_resolved_mu_);
|
142
191
|
// Output fields from ares request.
|
143
|
-
std::unique_ptr<ServerAddressList> addresses_
|
144
|
-
|
145
|
-
|
192
|
+
std::unique_ptr<ServerAddressList> addresses_
|
193
|
+
ABSL_GUARDED_BY(on_resolved_mu_);
|
194
|
+
std::unique_ptr<ServerAddressList> balancer_addresses_
|
195
|
+
ABSL_GUARDED_BY(on_resolved_mu_);
|
196
|
+
char* service_config_json_ ABSL_GUARDED_BY(on_resolved_mu_) = nullptr;
|
146
197
|
};
|
147
198
|
|
148
199
|
~AresClientChannelDNSResolver() override;
|
@@ -156,12 +207,14 @@ class AresClientChannelDNSResolver : public PollingResolver {
|
|
156
207
|
};
|
157
208
|
|
158
209
|
AresClientChannelDNSResolver::AresClientChannelDNSResolver(
|
159
|
-
ResolverArgs args, const
|
210
|
+
ResolverArgs args, const ChannelArgs& channel_args)
|
160
211
|
: PollingResolver(
|
161
212
|
std::move(args), channel_args,
|
162
|
-
Duration::
|
163
|
-
|
164
|
-
|
213
|
+
std::max(Duration::Zero(),
|
214
|
+
channel_args
|
215
|
+
.GetDurationFromIntMillis(
|
216
|
+
GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
|
217
|
+
.value_or(Duration::Seconds(30))),
|
165
218
|
BackOff::Options()
|
166
219
|
.set_initial_backoff(Duration::Milliseconds(
|
167
220
|
GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
|
@@ -170,13 +223,14 @@ AresClientChannelDNSResolver::AresClientChannelDNSResolver(
|
|
170
223
|
.set_max_backoff(Duration::Milliseconds(
|
171
224
|
GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
|
172
225
|
&grpc_trace_cares_resolver),
|
173
|
-
request_service_config_(
|
174
|
-
channel_args
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
226
|
+
request_service_config_(
|
227
|
+
!channel_args.GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
|
228
|
+
.value_or(true)),
|
229
|
+
enable_srv_queries_(channel_args.GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
|
230
|
+
.value_or(false)),
|
231
|
+
query_timeout_ms_(
|
232
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
|
233
|
+
.value_or(GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS))) {}
|
180
234
|
|
181
235
|
AresClientChannelDNSResolver::~AresClientChannelDNSResolver() {
|
182
236
|
GRPC_CARES_TRACE_LOG("resolver:%p destroying AresClientChannelDNSResolver",
|
@@ -199,16 +253,19 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) {
|
|
199
253
|
|
200
254
|
std::string ChooseServiceConfig(char* service_config_choice_json,
|
201
255
|
grpc_error_handle* error) {
|
202
|
-
|
203
|
-
if (!
|
204
|
-
|
256
|
+
auto json = Json::Parse(service_config_choice_json);
|
257
|
+
if (!json.ok()) {
|
258
|
+
*error = absl_status_to_grpc_error(json.status());
|
259
|
+
return "";
|
260
|
+
}
|
261
|
+
if (json->type() != Json::Type::ARRAY) {
|
205
262
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
206
263
|
"Service Config Choices, error: should be of type array");
|
207
264
|
return "";
|
208
265
|
}
|
209
266
|
const Json* service_config = nullptr;
|
210
267
|
std::vector<grpc_error_handle> error_list;
|
211
|
-
for (const Json& choice : json
|
268
|
+
for (const Json& choice : json->array_value()) {
|
212
269
|
if (choice.type() != Json::Type::OBJECT) {
|
213
270
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
214
271
|
"Service Config Choice, error: should be of type object"));
|
@@ -276,17 +333,71 @@ std::string ChooseServiceConfig(char* service_config_choice_json,
|
|
276
333
|
return service_config->Dump();
|
277
334
|
}
|
278
335
|
|
279
|
-
void AresClientChannelDNSResolver::AresRequestWrapper::
|
336
|
+
void AresClientChannelDNSResolver::AresRequestWrapper::OnHostnameResolved(
|
337
|
+
void* arg, grpc_error_handle error) {
|
338
|
+
auto* self = static_cast<AresRequestWrapper*>(arg);
|
339
|
+
absl::optional<Result> result;
|
340
|
+
{
|
341
|
+
MutexLock lock(&self->on_resolved_mu_);
|
342
|
+
self->hostname_request_.reset();
|
343
|
+
result = self->OnResolvedLocked(error);
|
344
|
+
}
|
345
|
+
if (result.has_value()) {
|
346
|
+
self->resolver_->OnRequestComplete(std::move(*result));
|
347
|
+
}
|
348
|
+
self->Unref(DEBUG_LOCATION, "OnHostnameResolved");
|
349
|
+
}
|
350
|
+
|
351
|
+
void AresClientChannelDNSResolver::AresRequestWrapper::OnSRVResolved(
|
352
|
+
void* arg, grpc_error_handle error) {
|
353
|
+
auto* self = static_cast<AresRequestWrapper*>(arg);
|
354
|
+
absl::optional<Result> result;
|
355
|
+
{
|
356
|
+
MutexLock lock(&self->on_resolved_mu_);
|
357
|
+
self->srv_request_.reset();
|
358
|
+
result = self->OnResolvedLocked(error);
|
359
|
+
}
|
360
|
+
if (result.has_value()) {
|
361
|
+
self->resolver_->OnRequestComplete(std::move(*result));
|
362
|
+
}
|
363
|
+
self->Unref(DEBUG_LOCATION, "OnSRVResolved");
|
364
|
+
}
|
365
|
+
|
366
|
+
void AresClientChannelDNSResolver::AresRequestWrapper::OnTXTResolved(
|
280
367
|
void* arg, grpc_error_handle error) {
|
281
368
|
auto* self = static_cast<AresRequestWrapper*>(arg);
|
282
|
-
|
369
|
+
absl::optional<Result> result;
|
370
|
+
{
|
371
|
+
MutexLock lock(&self->on_resolved_mu_);
|
372
|
+
self->txt_request_.reset();
|
373
|
+
result = self->OnResolvedLocked(error);
|
374
|
+
}
|
375
|
+
if (result.has_value()) {
|
376
|
+
self->resolver_->OnRequestComplete(std::move(*result));
|
377
|
+
}
|
378
|
+
self->Unref(DEBUG_LOCATION, "OnTXTResolved");
|
283
379
|
}
|
284
380
|
|
285
|
-
|
286
|
-
|
287
|
-
|
381
|
+
// Returns a Result if resolution is complete.
|
382
|
+
// callers must release the lock and call OnRequestComplete if a Result is
|
383
|
+
// returned. This is because OnRequestComplete may Orphan the resolver, which
|
384
|
+
// requires taking the lock.
|
385
|
+
absl::optional<AresClientChannelDNSResolver::Result>
|
386
|
+
AresClientChannelDNSResolver::AresRequestWrapper::OnResolvedLocked(
|
387
|
+
grpc_error_handle error) ABSL_EXCLUSIVE_LOCKS_REQUIRED(on_resolved_mu_) {
|
388
|
+
if (hostname_request_ != nullptr || srv_request_ != nullptr ||
|
389
|
+
txt_request_ != nullptr) {
|
390
|
+
GRPC_CARES_TRACE_LOG(
|
391
|
+
"resolver:%p OnResolved() waiting for results (hostname: %s, srv: %s, "
|
392
|
+
"txt: %s)",
|
393
|
+
this, hostname_request_ != nullptr ? "waiting" : "done",
|
394
|
+
srv_request_ != nullptr ? "waiting" : "done",
|
395
|
+
txt_request_ != nullptr ? "waiting" : "done");
|
396
|
+
return absl::nullopt;
|
397
|
+
}
|
398
|
+
GRPC_CARES_TRACE_LOG("resolver:%p OnResolved() proceeding", this);
|
288
399
|
Result result;
|
289
|
-
|
400
|
+
result.args = resolver_->channel_args();
|
290
401
|
// TODO(roth): Change logic to be able to report failures for addresses
|
291
402
|
// and service config independently of each other.
|
292
403
|
if (addresses_ != nullptr || balancer_addresses_ != nullptr) {
|
@@ -299,27 +410,26 @@ void AresClientChannelDNSResolver::AresRequestWrapper::OnResolved(
|
|
299
410
|
grpc_error_handle service_config_error = GRPC_ERROR_NONE;
|
300
411
|
std::string service_config_string =
|
301
412
|
ChooseServiceConfig(service_config_json_, &service_config_error);
|
302
|
-
RefCountedPtr<ServiceConfig> service_config;
|
303
|
-
if (GRPC_ERROR_IS_NONE(service_config_error) &&
|
304
|
-
!service_config_string.empty()) {
|
305
|
-
GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
|
306
|
-
this, service_config_string.c_str());
|
307
|
-
service_config = ServiceConfigImpl::Create(resolver_->channel_args(),
|
308
|
-
service_config_string,
|
309
|
-
&service_config_error);
|
310
|
-
}
|
311
413
|
if (!GRPC_ERROR_IS_NONE(service_config_error)) {
|
312
414
|
result.service_config = absl::UnavailableError(
|
313
415
|
absl::StrCat("failed to parse service config: ",
|
314
416
|
grpc_error_std_string(service_config_error)));
|
315
417
|
GRPC_ERROR_UNREF(service_config_error);
|
316
|
-
} else {
|
317
|
-
|
418
|
+
} else if (!service_config_string.empty()) {
|
419
|
+
GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
|
420
|
+
this, service_config_string.c_str());
|
421
|
+
result.service_config = ServiceConfigImpl::Create(
|
422
|
+
resolver_->channel_args(), service_config_string);
|
423
|
+
if (!result.service_config.ok()) {
|
424
|
+
result.service_config = absl::UnavailableError(
|
425
|
+
absl::StrCat("failed to parse service config: ",
|
426
|
+
result.service_config.status().message()));
|
427
|
+
}
|
318
428
|
}
|
319
429
|
}
|
320
430
|
if (balancer_addresses_ != nullptr) {
|
321
|
-
|
322
|
-
|
431
|
+
result.args = SetGrpcLbBalancerAddresses(
|
432
|
+
result.args, ServerAddressList(*balancer_addresses_));
|
323
433
|
}
|
324
434
|
} else {
|
325
435
|
GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s", this,
|
@@ -332,10 +442,8 @@ void AresClientChannelDNSResolver::AresRequestWrapper::OnResolved(
|
|
332
442
|
result.addresses = status;
|
333
443
|
result.service_config = status;
|
334
444
|
}
|
335
|
-
|
336
|
-
|
337
|
-
resolver_->OnRequestComplete(std::move(result));
|
338
|
-
Unref(DEBUG_LOCATION, "OnResolved");
|
445
|
+
|
446
|
+
return std::move(result);
|
339
447
|
}
|
340
448
|
|
341
449
|
//
|
@@ -355,7 +463,7 @@ class AresClientChannelDNSResolverFactory : public ResolverFactory {
|
|
355
463
|
}
|
356
464
|
|
357
465
|
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
|
358
|
-
|
466
|
+
ChannelArgs channel_args = args.args;
|
359
467
|
return MakeOrphanable<AresClientChannelDNSResolver>(std::move(args),
|
360
468
|
channel_args);
|
361
469
|
}
|
@@ -363,51 +471,45 @@ class AresClientChannelDNSResolverFactory : public ResolverFactory {
|
|
363
471
|
|
364
472
|
class AresDNSResolver : public DNSResolver {
|
365
473
|
public:
|
474
|
+
// Abstract class that centralizes common request handling logic via the
|
475
|
+
// template method pattern.
|
476
|
+
// This requires a two-phase initialization, where 1) a request is created via
|
477
|
+
// a subclass constructor, and 2) the request is initiated via Run()
|
366
478
|
class AresRequest {
|
367
479
|
public:
|
368
|
-
AresRequest(
|
369
|
-
absl::string_view name, absl::string_view default_port,
|
370
|
-
grpc_pollset_set* interested_parties,
|
371
|
-
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
372
|
-
on_resolve_address_done,
|
373
|
-
AresDNSResolver* resolver, intptr_t aba_token)
|
374
|
-
: name_(std::string(name)),
|
375
|
-
default_port_(std::string(default_port)),
|
376
|
-
interested_parties_(interested_parties),
|
377
|
-
pollset_set_(grpc_pollset_set_create()),
|
378
|
-
on_resolve_address_done_(std::move(on_resolve_address_done)),
|
379
|
-
completed_(false),
|
380
|
-
resolver_(resolver),
|
381
|
-
aba_token_(aba_token) {
|
382
|
-
GRPC_CARES_TRACE_LOG("AresRequest:%p ctor", this);
|
383
|
-
GRPC_CLOSURE_INIT(&on_dns_lookup_done_, OnDnsLookupDone, this,
|
384
|
-
grpc_schedule_on_exec_ctx);
|
385
|
-
MutexLock lock(&mu_);
|
386
|
-
grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
|
387
|
-
ares_request_ = std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_ares(
|
388
|
-
/*dns_server=*/"", name_.c_str(), default_port_.c_str(), pollset_set_,
|
389
|
-
&on_dns_lookup_done_, &addresses_,
|
390
|
-
/*balancer_addresses=*/nullptr, /*service_config_json=*/nullptr,
|
391
|
-
GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS));
|
392
|
-
GRPC_CARES_TRACE_LOG("AresRequest:%p Start ares_request_:%p", this,
|
393
|
-
ares_request_.get());
|
394
|
-
}
|
395
|
-
|
396
|
-
~AresRequest() {
|
480
|
+
virtual ~AresRequest() {
|
397
481
|
GRPC_CARES_TRACE_LOG("AresRequest:%p dtor ares_request_:%p", this,
|
398
|
-
|
482
|
+
grpc_ares_request_.get());
|
399
483
|
resolver_->UnregisterRequest(task_handle());
|
400
484
|
grpc_pollset_set_destroy(pollset_set_);
|
401
485
|
}
|
402
486
|
|
487
|
+
// Initiates the low-level c-ares request and returns its handle.
|
488
|
+
virtual std::unique_ptr<grpc_ares_request> MakeRequestLocked() = 0;
|
489
|
+
// Called on ares resolution, but not upon cancellation.
|
490
|
+
// After execution, the AresRequest will perform any final cleanup and
|
491
|
+
// delete itself.
|
492
|
+
virtual void OnComplete(grpc_error_handle error) = 0;
|
493
|
+
|
494
|
+
// Called to initiate the request.
|
495
|
+
void Run() {
|
496
|
+
MutexLock lock(&mu_);
|
497
|
+
grpc_ares_request_ = MakeRequestLocked();
|
498
|
+
}
|
499
|
+
|
403
500
|
bool Cancel() {
|
404
501
|
MutexLock lock(&mu_);
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
502
|
+
if (grpc_ares_request_ != nullptr) {
|
503
|
+
GRPC_CARES_TRACE_LOG("AresRequest:%p Cancel ares_request_:%p", this,
|
504
|
+
grpc_ares_request_.get());
|
505
|
+
if (completed_) return false;
|
506
|
+
// OnDnsLookupDone will still be run
|
507
|
+
completed_ = true;
|
508
|
+
grpc_cancel_ares_request(grpc_ares_request_.get());
|
509
|
+
} else {
|
510
|
+
completed_ = true;
|
511
|
+
OnDnsLookupDone(this, GRPC_ERROR_CANCELLED);
|
512
|
+
}
|
411
513
|
grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties_);
|
412
514
|
return true;
|
413
515
|
}
|
@@ -416,65 +518,215 @@ class AresDNSResolver : public DNSResolver {
|
|
416
518
|
return {reinterpret_cast<intptr_t>(this), aba_token_};
|
417
519
|
}
|
418
520
|
|
521
|
+
protected:
|
522
|
+
AresRequest(absl::string_view name, absl::string_view name_server,
|
523
|
+
Duration timeout, grpc_pollset_set* interested_parties,
|
524
|
+
AresDNSResolver* resolver, intptr_t aba_token)
|
525
|
+
: name_(name),
|
526
|
+
name_server_(name_server),
|
527
|
+
timeout_(timeout),
|
528
|
+
interested_parties_(interested_parties),
|
529
|
+
completed_(false),
|
530
|
+
resolver_(resolver),
|
531
|
+
aba_token_(aba_token),
|
532
|
+
pollset_set_(grpc_pollset_set_create()) {
|
533
|
+
GRPC_CLOSURE_INIT(&on_dns_lookup_done_, OnDnsLookupDone, this,
|
534
|
+
grpc_schedule_on_exec_ctx);
|
535
|
+
grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties_);
|
536
|
+
}
|
537
|
+
|
538
|
+
grpc_pollset_set* pollset_set() { return pollset_set_; };
|
539
|
+
grpc_closure* on_dns_lookup_done() { return &on_dns_lookup_done_; };
|
540
|
+
const std::string& name() { return name_; }
|
541
|
+
const std::string& name_server() { return name_server_; }
|
542
|
+
const Duration& timeout() { return timeout_; }
|
543
|
+
|
419
544
|
private:
|
420
545
|
// Called by ares when lookup has completed or when cancelled. It is always
|
421
|
-
// called exactly once.
|
546
|
+
// called exactly once, and it triggers self-deletion.
|
422
547
|
static void OnDnsLookupDone(void* arg, grpc_error_handle error) {
|
423
|
-
AresRequest*
|
424
|
-
|
425
|
-
// This request is deleted and unregistered upon any exit.
|
426
|
-
std::unique_ptr<AresRequest> deleter(request);
|
427
|
-
std::vector<grpc_resolved_address> resolved_addresses;
|
548
|
+
AresRequest* r = static_cast<AresRequest*>(arg);
|
549
|
+
auto deleter = std::unique_ptr<AresRequest>(r);
|
428
550
|
{
|
429
|
-
MutexLock lock(&
|
430
|
-
|
431
|
-
|
432
|
-
if (
|
433
|
-
|
434
|
-
for (const auto& server_address : *request->addresses_) {
|
435
|
-
resolved_addresses.push_back(server_address.address());
|
436
|
-
}
|
551
|
+
MutexLock lock(&r->mu_);
|
552
|
+
grpc_pollset_set_del_pollset_set(r->pollset_set_,
|
553
|
+
r->interested_parties_);
|
554
|
+
if (r->completed_) {
|
555
|
+
return;
|
437
556
|
}
|
557
|
+
r->completed_ = true;
|
438
558
|
}
|
439
|
-
|
440
|
-
request->interested_parties_);
|
441
|
-
if (!GRPC_ERROR_IS_NONE(error)) {
|
442
|
-
request->on_resolve_address_done_(grpc_error_to_absl_status(error));
|
443
|
-
return;
|
444
|
-
}
|
445
|
-
request->on_resolve_address_done_(std::move(resolved_addresses));
|
559
|
+
r->OnComplete(error);
|
446
560
|
}
|
447
561
|
|
562
|
+
// the name to resolve
|
563
|
+
const std::string name_;
|
564
|
+
// the name server to query
|
565
|
+
const std::string name_server_;
|
566
|
+
// request-specific timeout
|
567
|
+
Duration timeout_;
|
448
568
|
// mutex to synchronize access to this object (but not to the ares_request
|
449
569
|
// object itself).
|
450
570
|
Mutex mu_;
|
451
|
-
// the name to resolve
|
452
|
-
const std::string name_;
|
453
|
-
// the default port to use if name doesn't have one
|
454
|
-
const std::string default_port_;
|
455
571
|
// parties interested in our I/O
|
456
572
|
grpc_pollset_set* const interested_parties_;
|
573
|
+
// underlying cares_request that the query is performed on
|
574
|
+
std::unique_ptr<grpc_ares_request> grpc_ares_request_ ABSL_GUARDED_BY(mu_);
|
575
|
+
// Set when the callback is either cancelled or executed.
|
576
|
+
// It is not the subclasses' responsibility to set this flag.
|
577
|
+
bool completed_ ABSL_GUARDED_BY(mu_);
|
578
|
+
// Parent resolver that created this request
|
579
|
+
AresDNSResolver* resolver_;
|
580
|
+
// Unique token to help distinguish this request from others that may later
|
581
|
+
// be created in the same memory location.
|
582
|
+
intptr_t aba_token_;
|
583
|
+
// closure to call when the ares resolution request completes. Subclasses
|
584
|
+
// should use this as the ares callback in MakeRequestLocked()
|
585
|
+
grpc_closure on_dns_lookup_done_ ABSL_GUARDED_BY(mu_);
|
457
586
|
// locally owned pollset_set, required to support cancellation of requests
|
458
|
-
// while ares still needs a valid pollset_set.
|
587
|
+
// while ares still needs a valid pollset_set. Subclasses should give this
|
588
|
+
// pollset to ares in MakeRequestLocked();
|
459
589
|
grpc_pollset_set* pollset_set_;
|
590
|
+
};
|
591
|
+
|
592
|
+
class AresHostnameRequest : public AresRequest {
|
593
|
+
public:
|
594
|
+
AresHostnameRequest(
|
595
|
+
absl::string_view name, absl::string_view default_port,
|
596
|
+
absl::string_view name_server, Duration timeout,
|
597
|
+
grpc_pollset_set* interested_parties,
|
598
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
599
|
+
on_resolve_address_done,
|
600
|
+
AresDNSResolver* resolver, intptr_t aba_token)
|
601
|
+
: AresRequest(name, name_server, timeout, interested_parties, resolver,
|
602
|
+
aba_token),
|
603
|
+
default_port_(default_port),
|
604
|
+
on_resolve_address_done_(std::move(on_resolve_address_done)) {
|
605
|
+
GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p ctor", this);
|
606
|
+
}
|
607
|
+
|
608
|
+
std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
|
609
|
+
auto ares_request =
|
610
|
+
std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_hostname_ares(
|
611
|
+
name_server().c_str(), name().c_str(), default_port_.c_str(),
|
612
|
+
pollset_set(), on_dns_lookup_done(), &addresses_,
|
613
|
+
timeout().millis()));
|
614
|
+
GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p Start ares_request_:%p",
|
615
|
+
this, ares_request.get());
|
616
|
+
return ares_request;
|
617
|
+
}
|
618
|
+
|
619
|
+
void OnComplete(grpc_error_handle error) override {
|
620
|
+
GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p OnComplete", this);
|
621
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
622
|
+
on_resolve_address_done_(grpc_error_to_absl_status(error));
|
623
|
+
return;
|
624
|
+
}
|
625
|
+
std::vector<grpc_resolved_address> resolved_addresses;
|
626
|
+
if (addresses_ != nullptr) {
|
627
|
+
resolved_addresses.reserve(addresses_->size());
|
628
|
+
for (const auto& server_address : *addresses_) {
|
629
|
+
resolved_addresses.push_back(server_address.address());
|
630
|
+
}
|
631
|
+
}
|
632
|
+
on_resolve_address_done_(std::move(resolved_addresses));
|
633
|
+
}
|
634
|
+
|
635
|
+
// the default port to use if name doesn't have one
|
636
|
+
const std::string default_port_;
|
460
637
|
// user-provided completion callback
|
461
638
|
const std::function<void(
|
462
639
|
absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
463
640
|
on_resolve_address_done_;
|
464
641
|
// currently resolving addresses
|
465
|
-
std::unique_ptr<ServerAddressList> addresses_
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
642
|
+
std::unique_ptr<ServerAddressList> addresses_;
|
643
|
+
};
|
644
|
+
|
645
|
+
class AresSRVRequest : public AresRequest {
|
646
|
+
public:
|
647
|
+
AresSRVRequest(
|
648
|
+
absl::string_view name, absl::string_view name_server, Duration timeout,
|
649
|
+
grpc_pollset_set* interested_parties,
|
650
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
651
|
+
on_resolve_address_done,
|
652
|
+
AresDNSResolver* resolver, intptr_t aba_token)
|
653
|
+
: AresRequest(name, name_server, timeout, interested_parties, resolver,
|
654
|
+
aba_token),
|
655
|
+
on_resolve_address_done_(std::move(on_resolve_address_done)) {
|
656
|
+
GRPC_CARES_TRACE_LOG("AresSRVRequest:%p ctor", this);
|
657
|
+
}
|
658
|
+
|
659
|
+
std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
|
660
|
+
auto ares_request =
|
661
|
+
std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_srv_ares(
|
662
|
+
name_server().c_str(), name().c_str(), pollset_set(),
|
663
|
+
on_dns_lookup_done(), &balancer_addresses_, timeout().millis()));
|
664
|
+
GRPC_CARES_TRACE_LOG("AresSRVRequest:%p Start ares_request_:%p", this,
|
665
|
+
ares_request.get());
|
666
|
+
return ares_request;
|
667
|
+
}
|
668
|
+
|
669
|
+
void OnComplete(grpc_error_handle error) override {
|
670
|
+
GRPC_CARES_TRACE_LOG("AresSRVRequest:%p OnComplete", this);
|
671
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
672
|
+
on_resolve_address_done_(grpc_error_to_absl_status(error));
|
673
|
+
return;
|
674
|
+
}
|
675
|
+
std::vector<grpc_resolved_address> resolved_addresses;
|
676
|
+
if (balancer_addresses_ != nullptr) {
|
677
|
+
resolved_addresses.reserve(balancer_addresses_->size());
|
678
|
+
for (const auto& server_address : *balancer_addresses_) {
|
679
|
+
resolved_addresses.push_back(server_address.address());
|
680
|
+
}
|
681
|
+
}
|
682
|
+
on_resolve_address_done_(std::move(resolved_addresses));
|
683
|
+
}
|
684
|
+
|
685
|
+
// user-provided completion callback
|
686
|
+
const std::function<void(
|
687
|
+
absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
688
|
+
on_resolve_address_done_;
|
689
|
+
// currently resolving addresses
|
690
|
+
std::unique_ptr<ServerAddressList> balancer_addresses_;
|
691
|
+
};
|
692
|
+
|
693
|
+
class AresTXTRequest : public AresRequest {
|
694
|
+
public:
|
695
|
+
AresTXTRequest(absl::string_view name, absl::string_view name_server,
|
696
|
+
Duration timeout, grpc_pollset_set* interested_parties,
|
697
|
+
std::function<void(absl::StatusOr<std::string>)> on_resolved,
|
698
|
+
AresDNSResolver* resolver, intptr_t aba_token)
|
699
|
+
: AresRequest(name, name_server, timeout, interested_parties, resolver,
|
700
|
+
aba_token),
|
701
|
+
on_resolved_(std::move(on_resolved)) {
|
702
|
+
GRPC_CARES_TRACE_LOG("AresTXTRequest:%p ctor", this);
|
703
|
+
}
|
704
|
+
|
705
|
+
~AresTXTRequest() override { gpr_free(service_config_json_); }
|
706
|
+
|
707
|
+
std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
|
708
|
+
auto ares_request =
|
709
|
+
std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_txt_ares(
|
710
|
+
name_server().c_str(), name().c_str(), pollset_set(),
|
711
|
+
on_dns_lookup_done(), &service_config_json_, timeout().millis()));
|
712
|
+
GRPC_CARES_TRACE_LOG("AresSRVRequest:%p Start ares_request_:%p", this,
|
713
|
+
ares_request.get());
|
714
|
+
return ares_request;
|
715
|
+
}
|
716
|
+
|
717
|
+
void OnComplete(grpc_error_handle error) override {
|
718
|
+
GRPC_CARES_TRACE_LOG("AresSRVRequest:%p OnComplete", this);
|
719
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
720
|
+
on_resolved_(grpc_error_to_absl_status(error));
|
721
|
+
return;
|
722
|
+
}
|
723
|
+
on_resolved_(service_config_json_);
|
724
|
+
}
|
725
|
+
|
726
|
+
// service config from the TXT record
|
727
|
+
char* service_config_json_ = nullptr;
|
728
|
+
// user-provided completion callback
|
729
|
+
const std::function<void(absl::StatusOr<std::string>)> on_resolved_;
|
478
730
|
};
|
479
731
|
|
480
732
|
// gets the singleton instance, possibly creating it first
|
@@ -483,26 +735,60 @@ class AresDNSResolver : public DNSResolver {
|
|
483
735
|
return instance;
|
484
736
|
}
|
485
737
|
|
486
|
-
TaskHandle
|
487
|
-
absl::string_view name, absl::string_view default_port,
|
488
|
-
grpc_pollset_set* interested_parties,
|
738
|
+
TaskHandle LookupHostname(
|
489
739
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
490
|
-
|
740
|
+
on_resolved,
|
741
|
+
absl::string_view name, absl::string_view default_port, Duration timeout,
|
742
|
+
grpc_pollset_set* interested_parties,
|
743
|
+
absl::string_view name_server) override {
|
491
744
|
MutexLock lock(&mu_);
|
492
|
-
auto* request = new
|
493
|
-
|
745
|
+
auto* request = new AresHostnameRequest(
|
746
|
+
name, default_port, name_server, timeout, interested_parties,
|
747
|
+
std::move(on_resolved), this, aba_token_++);
|
748
|
+
request->Run();
|
494
749
|
auto handle = request->task_handle();
|
495
750
|
open_requests_.insert(handle);
|
496
751
|
return handle;
|
497
752
|
}
|
498
753
|
|
499
|
-
absl::StatusOr<std::vector<grpc_resolved_address>>
|
754
|
+
absl::StatusOr<std::vector<grpc_resolved_address>> LookupHostnameBlocking(
|
500
755
|
absl::string_view name, absl::string_view default_port) override {
|
501
756
|
// TODO(apolcyn): change this to wrap the async version of the c-ares
|
502
757
|
// API with a promise, and remove the reference to the previous resolver.
|
503
|
-
return default_resolver_->
|
758
|
+
return default_resolver_->LookupHostnameBlocking(name, default_port);
|
504
759
|
}
|
505
760
|
|
761
|
+
TaskHandle LookupSRV(
|
762
|
+
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
763
|
+
on_resolved,
|
764
|
+
absl::string_view name, Duration timeout,
|
765
|
+
grpc_pollset_set* interested_parties,
|
766
|
+
absl::string_view name_server) override {
|
767
|
+
MutexLock lock(&mu_);
|
768
|
+
auto* request =
|
769
|
+
new AresSRVRequest(name, name_server, timeout, interested_parties,
|
770
|
+
std::move(on_resolved), this, aba_token_++);
|
771
|
+
request->Run();
|
772
|
+
auto handle = request->task_handle();
|
773
|
+
open_requests_.insert(handle);
|
774
|
+
return handle;
|
775
|
+
};
|
776
|
+
|
777
|
+
TaskHandle LookupTXT(
|
778
|
+
std::function<void(absl::StatusOr<std::string>)> on_resolved,
|
779
|
+
absl::string_view name, Duration timeout,
|
780
|
+
grpc_pollset_set* interested_parties,
|
781
|
+
absl::string_view name_server) override {
|
782
|
+
MutexLock lock(&mu_);
|
783
|
+
auto* request =
|
784
|
+
new AresTXTRequest(name, name_server, timeout, interested_parties,
|
785
|
+
std::move(on_resolved), this, aba_token_++);
|
786
|
+
request->Run();
|
787
|
+
auto handle = request->task_handle();
|
788
|
+
open_requests_.insert(handle);
|
789
|
+
return handle;
|
790
|
+
};
|
791
|
+
|
506
792
|
bool Cancel(TaskHandle handle) override {
|
507
793
|
MutexLock lock(&mu_);
|
508
794
|
if (!open_requests_.contains(handle)) {
|