grpc 1.58.0 → 1.59.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +48 -33
- data/include/grpc/event_engine/event_engine.h +6 -10
- data/include/grpc/impl/channel_arg_names.h +4 -0
- data/include/grpc/support/port_platform.h +74 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +22 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +422 -56
- data/src/core/ext/filters/client_channel/client_channel.h +52 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +15 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -0
- data/src/core/ext/filters/client_channel/{http_proxy.cc → http_proxy_mapper.cc} +1 -1
- data/src/core/ext/filters/client_channel/{http_proxy.h → http_proxy_mapper.h} +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +188 -0
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +214 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +41 -6
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +5 -3
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +32 -103
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +416 -139
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +16 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +434 -459
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +410 -26
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -46
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +851 -57
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +16 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -32
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +55 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +105 -175
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +14 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +24 -6
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +36 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +54 -44
- data/src/core/ext/filters/client_channel/subchannel.cc +33 -0
- data/src/core/ext/filters/client_channel/subchannel.h +9 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +11 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +28 -22
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +9 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +66 -47
- data/src/core/ext/transport/chttp2/transport/{frame.h → legacy_frame.h} +3 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -2
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +4 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +16 -18
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +75 -83
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +27 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +102 -110
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +16 -18
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +73 -81
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +65 -67
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +294 -302
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +20 -28
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -7
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +24 -32
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +19 -27
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +42 -44
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +141 -149
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +8 -16
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +5 -7
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +4 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +36 -38
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +157 -165
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +87 -89
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +372 -380
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -15
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +55 -63
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -113
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +441 -449
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +8 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +23 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +88 -96
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +40 -42
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +180 -188
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +26 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +108 -116
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +9 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +65 -67
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +245 -253
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +27 -29
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +119 -127
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +8 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +20 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +49 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +184 -192
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +49 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +225 -233
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +13 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +63 -65
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +246 -254
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +5 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +19 -27
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +5 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +19 -27
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +30 -38
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +28 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +9 -17
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +12 -14
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +48 -56
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +23 -25
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +92 -100
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +27 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +108 -116
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +5 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +38 -40
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +167 -175
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +34 -36
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +162 -170
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +10 -12
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +37 -45
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -21
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +6 -8
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +18 -26
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +22 -24
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +97 -105
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +24 -26
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +111 -119
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +43 -45
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +183 -191
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +20 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +102 -110
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +253 -255
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +1108 -1116
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +31 -39
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +35 -37
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +150 -158
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +8 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +13 -21
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -7
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +19 -27
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +14 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +53 -61
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +8 -16
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +5 -13
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +24 -32
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +23 -31
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +23 -31
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +114 -116
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +372 -380
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +9 -17
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -38
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +21 -23
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +81 -89
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +24 -32
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +12 -14
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +52 -60
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +14 -22
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +114 -116
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +468 -476
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +5 -13
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +25 -33
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +11 -13
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +40 -48
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +4 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +27 -35
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +5 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +35 -37
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +165 -173
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +9 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +32 -40
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +39 -41
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +169 -177
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +16 -24
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +55 -57
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +241 -249
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -39
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +23 -25
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +98 -106
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +11 -19
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +18 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +9 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +6 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +16 -24
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +6 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +24 -32
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +13 -21
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +20 -28
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +33 -41
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +18 -26
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +31 -39
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +8 -10
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +34 -42
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +14 -16
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +47 -55
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +13 -21
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -4
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +4 -12
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +7 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -27
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +6 -8
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +20 -28
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +1 -3
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +1 -9
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +10 -18
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +4 -6
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +12 -20
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +2 -4
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +45 -47
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +190 -198
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +54 -56
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +210 -218
- data/src/core/ext/upb-generated/google/api/http.upb.c +15 -17
- data/src/core/ext/upb-generated/google/api/http.upb.h +60 -68
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +15 -23
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -5
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -15
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +359 -204
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1340 -760
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -5
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -15
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -3
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -9
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +11 -13
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +43 -51
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -5
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -15
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +10 -12
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +28 -36
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +15 -23
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +11 -13
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +35 -43
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +10 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +28 -36
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +48 -50
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +190 -198
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +15 -23
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +3 -5
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +7 -15
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +21 -23
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +80 -88
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +9 -11
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +29 -37
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +32 -34
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +147 -155
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +10 -12
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +13 -21
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -6
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -15
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +2 -4
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -9
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -6
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -15
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -5
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +4 -12
- data/src/core/ext/upb-generated/validate/validate.upb.c +201 -203
- data/src/core/ext/upb-generated/validate/validate.upb.h +924 -932
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +10 -12
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +13 -21
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +4 -6
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -15
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +2 -4
- data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +1 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +9 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +16 -24
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +4 -12
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -4
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +4 -12
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +8 -16
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +6 -8
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +20 -28
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +4 -6
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +9 -17
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +8 -16
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +4 -6
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +12 -20
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +9 -11
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +35 -43
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +14 -22
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +16 -18
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +43 -51
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +13 -21
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +2 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +5 -13
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +4 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +21 -29
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +1 -3
- data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +1 -9
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +5 -7
- data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +24 -32
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +24 -26
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +103 -111
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +10 -12
- data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +61 -69
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +9 -17
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +8 -10
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +33 -41
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +5 -7
- data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +18 -26
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +7 -9
- data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +19 -27
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +8 -16
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +367 -290
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +10 -0
- data/src/core/ext/xds/xds_client.cc +6 -9
- data/src/core/ext/xds/xds_client.h +2 -2
- data/src/core/ext/xds/xds_cluster.cc +30 -42
- data/src/core/ext/xds/xds_cluster.h +0 -4
- data/src/core/ext/xds/xds_endpoint.cc +12 -19
- data/src/core/ext/xds/xds_endpoint.h +0 -1
- data/src/core/ext/xds/xds_http_filters.cc +1 -4
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -4
- data/src/core/ext/xds/xds_listener.cc +14 -14
- data/src/core/ext/xds/xds_listener.h +13 -3
- data/src/core/ext/xds/xds_resource_type.h +1 -7
- data/src/core/ext/xds/xds_resource_type_impl.h +9 -11
- data/src/core/ext/xds/xds_route_config.cc +10 -11
- data/src/core/ext/xds/xds_route_config.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +53 -28
- data/src/core/ext/xds/xds_transport_grpc.cc +11 -1
- data/src/core/lib/backoff/random_early_detection.cc +4 -2
- data/src/core/lib/backoff/random_early_detection.h +2 -4
- data/src/core/lib/channel/call_tracer.cc +7 -1
- data/src/core/lib/channel/call_tracer.h +4 -1
- data/src/core/lib/channel/channelz_registry.h +4 -2
- data/src/core/lib/channel/connected_channel.cc +1 -1
- data/src/core/lib/config/config_vars.h +1 -1
- data/src/core/lib/config/core_configuration.cc +2 -1
- data/src/core/lib/config/core_configuration.h +5 -4
- data/src/core/lib/debug/stats_data.cc +146 -51
- data/src/core/lib/debug/stats_data.h +81 -20
- data/src/core/lib/event_engine/ares_resolver.cc +9 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +3 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -0
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +15 -3
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -0
- data/src/core/lib/event_engine/nameser.h +102 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +15 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +3 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +10 -4
- data/src/core/lib/experiments/config.cc +9 -1
- data/src/core/lib/experiments/experiments.cc +409 -144
- data/src/core/lib/experiments/experiments.h +153 -39
- data/src/core/lib/gprpp/fork.h +1 -1
- data/src/core/lib/gprpp/manual_constructor.h +1 -2
- data/src/core/lib/gprpp/no_destruct.h +1 -1
- data/src/core/lib/gprpp/per_cpu.cc +2 -0
- data/src/core/lib/gprpp/per_cpu.h +36 -7
- data/src/core/lib/gprpp/ref_counted_ptr.h +63 -0
- data/src/core/lib/gprpp/work_serializer.cc +297 -25
- data/src/core/lib/gprpp/work_serializer.h +25 -9
- data/src/core/lib/iomgr/combiner.cc +54 -15
- data/src/core/lib/iomgr/combiner.h +8 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -4
- data/src/core/lib/iomgr/exec_ctx.cc +12 -0
- data/src/core/lib/iomgr/exec_ctx.h +55 -19
- data/src/core/lib/iomgr/polling_entity.cc +10 -0
- data/src/core/lib/iomgr/polling_entity.h +2 -0
- data/src/core/lib/iomgr/port.h +14 -0
- data/src/core/lib/iomgr/tcp_posix.cc +17 -14
- data/src/core/lib/load_balancing/lb_policy.h +10 -9
- data/src/core/lib/promise/arena_promise.h +5 -1
- data/src/core/lib/promise/detail/seq_state.h +418 -0
- data/src/core/lib/promise/latch.h +1 -0
- data/src/core/lib/promise/loop.h +8 -5
- data/src/core/lib/promise/pipe.h +24 -24
- data/src/core/lib/promise/poll.h +4 -6
- data/src/core/lib/resolver/server_address.h +1 -0
- data/src/core/lib/resource_quota/memory_quota.cc +58 -2
- data/src/core/lib/resource_quota/memory_quota.h +4 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +115 -9
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +86 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -59
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +2 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +7 -57
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -14
- data/src/core/lib/slice/slice.h +6 -0
- data/src/core/lib/slice/slice_buffer.cc +15 -0
- data/src/core/lib/slice/slice_buffer.h +16 -4
- data/src/core/lib/slice/slice_refcount.h +1 -1
- data/src/core/lib/surface/call.cc +92 -34
- data/src/core/lib/surface/call.h +4 -0
- data/src/core/lib/surface/channel.cc +7 -4
- data/src/core/lib/surface/channel_init.h +3 -2
- data/src/core/lib/surface/server.cc +45 -5
- data/src/core/lib/surface/server.h +18 -6
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +3 -5
- data/src/core/lib/transport/metadata_batch.cc +6 -0
- data/src/core/lib/transport/metadata_batch.h +20 -1
- data/src/core/lib/transport/parsed_metadata.h +2 -4
- data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
- data/src/core/lib/transport/transport.h +21 -11
- data/src/core/tsi/ssl_transport_security.cc +7 -0
- data/src/core/tsi/ssl_transport_security.h +4 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel_args.c +6 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
- data/third_party/upb/upb/collections/array.c +6 -0
- data/third_party/upb/upb/collections/array.h +6 -0
- data/third_party/upb/upb/collections/map.c +7 -0
- data/third_party/upb/upb/collections/map.h +5 -0
- data/third_party/upb/upb/collections/map_sorter_internal.h +1 -1
- data/third_party/upb/upb/collections/message_value.h +8 -1
- data/third_party/upb/upb/generated_code_support.h +54 -0
- data/third_party/upb/upb/hash/common.c +5 -0
- data/third_party/upb/upb/hash/common.h +1 -0
- data/third_party/upb/upb/hash/str_table.h +1 -0
- data/third_party/upb/upb/message/accessors.c +25 -1
- data/third_party/upb/upb/message/accessors.h +46 -25
- data/third_party/upb/upb/message/accessors_internal.h +69 -3
- data/third_party/upb/upb/message/extension_internal.h +1 -1
- data/third_party/upb/upb/message/internal/map_entry.h +64 -0
- data/third_party/upb/upb/message/internal.h +2 -6
- data/third_party/upb/upb/message/message.c +0 -6
- data/third_party/upb/upb/message/message.h +1 -1
- data/third_party/upb/upb/message/tagged_ptr.h +89 -0
- data/third_party/upb/upb/mini_descriptor/build_enum.c +150 -0
- data/third_party/upb/upb/mini_descriptor/build_enum.h +63 -0
- data/third_party/upb/upb/{mini_table → mini_descriptor}/decode.c +122 -374
- data/third_party/upb/upb/{mini_table → mini_descriptor}/decode.h +11 -50
- data/third_party/upb/upb/mini_descriptor/internal/base92.c +46 -0
- data/third_party/upb/upb/mini_descriptor/internal/base92.h +81 -0
- data/third_party/upb/upb/mini_descriptor/internal/decoder.h +73 -0
- data/third_party/upb/upb/{mini_table → mini_descriptor/internal}/encode.c +58 -32
- data/third_party/upb/upb/{mini_table/encode_internal.h → mini_descriptor/internal/encode.h} +3 -4
- data/third_party/upb/upb/{mini_table/encode_internal.hpp → mini_descriptor/internal/encode.hpp} +1 -1
- data/third_party/upb/upb/mini_descriptor/internal/modifiers.h +50 -0
- data/third_party/upb/upb/{mini_table/common_internal.h → mini_descriptor/internal/wire_constants.h} +3 -23
- data/third_party/upb/upb/mini_descriptor/link.c +142 -0
- data/third_party/upb/upb/mini_descriptor/link.h +104 -0
- data/third_party/upb/upb/mini_table/{types.h → enum.h} +19 -9
- data/third_party/upb/upb/mini_table/extension.h +40 -0
- data/third_party/upb/upb/mini_table/extension_registry.c +1 -1
- data/third_party/upb/upb/mini_table/extension_registry.h +2 -1
- data/third_party/upb/upb/mini_table/field.h +118 -0
- data/third_party/upb/upb/{json_decode.h → mini_table/file.h} +5 -6
- data/third_party/upb/upb/mini_table/{enum_internal.h → internal/enum.h} +7 -19
- data/third_party/upb/upb/mini_table/{extension_internal.h → internal/extension.h} +8 -8
- data/third_party/upb/upb/mini_table/{field_internal.h → internal/field.h} +10 -66
- data/third_party/upb/upb/mini_table/{file_internal.h → internal/file.h} +6 -4
- data/third_party/upb/upb/mini_table/internal/message.c +39 -0
- data/third_party/upb/upb/mini_table/{message_internal.h → internal/message.h} +14 -37
- data/third_party/upb/upb/mini_table/{sub_internal.h → internal/sub.h} +7 -6
- data/third_party/upb/upb/mini_table/{common.c → message.c} +2 -33
- data/third_party/upb/upb/mini_table/{common.h → message.h} +12 -77
- data/third_party/upb/upb/{json_encode.h → mini_table/sub.h} +5 -6
- data/third_party/upb/upb/reflection/def.hpp +16 -4
- data/third_party/upb/upb/reflection/def_pool_internal.h +1 -1
- data/third_party/upb/upb/reflection/desc_state_internal.h +1 -1
- data/third_party/upb/upb/reflection/enum_def.c +1 -1
- data/third_party/upb/upb/reflection/field_def.c +2 -1
- data/third_party/upb/upb/reflection/message.c +2 -2
- data/third_party/upb/upb/reflection/message_def.c +3 -1
- data/third_party/upb/upb/wire/decode.c +68 -29
- data/third_party/upb/upb/wire/decode.h +40 -0
- data/third_party/upb/upb/wire/encode.c +23 -13
- metadata +44 -27
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +0 -256
- data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +0 -137
@@ -22,8 +22,13 @@
|
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
+
#include <map>
|
26
|
+
#include <memory>
|
27
|
+
#include <unordered_set>
|
28
|
+
|
25
29
|
#include <ares.h>
|
26
30
|
|
31
|
+
#include "absl/functional/any_invocable.h"
|
27
32
|
#include "absl/strings/str_format.h"
|
28
33
|
|
29
34
|
#include <grpc/support/alloc.h>
|
@@ -57,6 +62,8 @@ struct iovec {
|
|
57
62
|
|
58
63
|
namespace grpc_core {
|
59
64
|
|
65
|
+
namespace {
|
66
|
+
|
60
67
|
// c-ares reads and takes action on the error codes of the
|
61
68
|
// "virtual socket operations" in this file, via the WSAGetLastError
|
62
69
|
// APIs. If code in this file wants to set a specific WSA error that
|
@@ -92,7 +99,7 @@ class WSAErrorContext {
|
|
92
99
|
// from c-ares and are used with the grpc windows poller, and it, e.g.,
|
93
100
|
// manufactures virtual socket error codes when it e.g. needs to tell the c-ares
|
94
101
|
// library to wait for an async read.
|
95
|
-
class GrpcPolledFdWindows {
|
102
|
+
class GrpcPolledFdWindows : public GrpcPolledFd {
|
96
103
|
public:
|
97
104
|
enum WriteState {
|
98
105
|
WRITE_IDLE,
|
@@ -102,15 +109,15 @@ class GrpcPolledFdWindows {
|
|
102
109
|
};
|
103
110
|
|
104
111
|
GrpcPolledFdWindows(ares_socket_t as, Mutex* mu, int address_family,
|
105
|
-
int socket_type
|
112
|
+
int socket_type,
|
113
|
+
absl::AnyInvocable<void()> on_shutdown_locked)
|
106
114
|
: mu_(mu),
|
107
115
|
read_buf_(grpc_empty_slice()),
|
108
116
|
write_buf_(grpc_empty_slice()),
|
109
|
-
tcp_write_state_(WRITE_IDLE),
|
110
117
|
name_(absl::StrFormat("c-ares socket: %" PRIdPTR, as)),
|
111
|
-
gotten_into_driver_list_(false),
|
112
118
|
address_family_(address_family),
|
113
|
-
socket_type_(socket_type)
|
119
|
+
socket_type_(socket_type),
|
120
|
+
on_shutdown_locked_(std::move(on_shutdown_locked)) {
|
114
121
|
// Closure Initialization
|
115
122
|
GRPC_CLOSURE_INIT(&outer_read_closure_,
|
116
123
|
&GrpcPolledFdWindows::OnIocpReadable, this,
|
@@ -124,11 +131,18 @@ class GrpcPolledFdWindows {
|
|
124
131
|
winsocket_ = grpc_winsocket_create(as, name_.c_str());
|
125
132
|
}
|
126
133
|
|
127
|
-
~GrpcPolledFdWindows() {
|
134
|
+
~GrpcPolledFdWindows() override {
|
135
|
+
GRPC_CARES_TRACE_LOG("fd:|%s| ~GrpcPolledFdWindows shutdown_called_: %d ",
|
136
|
+
GetName(), shutdown_called_);
|
128
137
|
CSliceUnref(read_buf_);
|
129
138
|
CSliceUnref(write_buf_);
|
130
139
|
GPR_ASSERT(read_closure_ == nullptr);
|
131
140
|
GPR_ASSERT(write_closure_ == nullptr);
|
141
|
+
if (!shutdown_called_) {
|
142
|
+
// This can happen if the socket was never seen by grpc ares wrapper
|
143
|
+
// code, i.e. if we never started I/O polling on it.
|
144
|
+
grpc_winsocket_shutdown(winsocket_);
|
145
|
+
}
|
132
146
|
grpc_winsocket_destroy(winsocket_);
|
133
147
|
}
|
134
148
|
|
@@ -142,7 +156,7 @@ class GrpcPolledFdWindows {
|
|
142
156
|
write_closure_ = nullptr;
|
143
157
|
}
|
144
158
|
|
145
|
-
void RegisterForOnReadableLocked(grpc_closure* read_closure) {
|
159
|
+
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
146
160
|
GPR_ASSERT(read_closure_ == nullptr);
|
147
161
|
read_closure_ = read_closure;
|
148
162
|
GPR_ASSERT(GRPC_SLICE_LENGTH(read_buf_) == 0);
|
@@ -193,23 +207,28 @@ class GrpcPolledFdWindows {
|
|
193
207
|
grpc_socket_notify_on_read(winsocket_, &outer_read_closure_);
|
194
208
|
}
|
195
209
|
|
196
|
-
void RegisterForOnWriteableLocked(grpc_closure* write_closure) {
|
210
|
+
void RegisterForOnWriteableLocked(grpc_closure* write_closure) override {
|
197
211
|
if (socket_type_ == SOCK_DGRAM) {
|
198
212
|
GRPC_CARES_TRACE_LOG("fd:|%s| RegisterForOnWriteableLocked called",
|
199
213
|
GetName());
|
200
214
|
} else {
|
201
215
|
GPR_ASSERT(socket_type_ == SOCK_STREAM);
|
202
216
|
GRPC_CARES_TRACE_LOG(
|
203
|
-
"fd:|%s| RegisterForOnWriteableLocked called tcp_write_state_: %d"
|
204
|
-
|
217
|
+
"fd:|%s| RegisterForOnWriteableLocked called tcp_write_state_: %d "
|
218
|
+
"connect_done_: %d",
|
219
|
+
GetName(), tcp_write_state_, connect_done_);
|
205
220
|
}
|
206
221
|
GPR_ASSERT(write_closure_ == nullptr);
|
207
222
|
write_closure_ = write_closure;
|
208
|
-
if (connect_done_) {
|
209
|
-
|
210
|
-
} else {
|
211
|
-
GPR_ASSERT(pending_continue_register_for_on_writeable_locked_ == false);
|
223
|
+
if (!connect_done_) {
|
224
|
+
GPR_ASSERT(!pending_continue_register_for_on_writeable_locked_);
|
212
225
|
pending_continue_register_for_on_writeable_locked_ = true;
|
226
|
+
// Register an async OnTcpConnect callback here rather than when the
|
227
|
+
// connect was initiated, since we are now guaranteed to hold a ref of the
|
228
|
+
// c-ares wrapper before write_closure_ is called.
|
229
|
+
grpc_socket_notify_on_write(winsocket_, &on_tcp_connect_locked_);
|
230
|
+
} else {
|
231
|
+
ContinueRegisterForOnWriteableLocked();
|
213
232
|
}
|
214
233
|
}
|
215
234
|
|
@@ -250,17 +269,20 @@ class GrpcPolledFdWindows {
|
|
250
269
|
}
|
251
270
|
}
|
252
271
|
|
253
|
-
bool IsFdStillReadableLocked() { return read_buf_has_data_; }
|
272
|
+
bool IsFdStillReadableLocked() override { return read_buf_has_data_; }
|
254
273
|
|
255
|
-
void ShutdownLocked(grpc_error_handle /* error */) {
|
274
|
+
void ShutdownLocked(grpc_error_handle /* error */) override {
|
275
|
+
GPR_ASSERT(!shutdown_called_);
|
276
|
+
shutdown_called_ = true;
|
277
|
+
on_shutdown_locked_();
|
256
278
|
grpc_winsocket_shutdown(winsocket_);
|
257
279
|
}
|
258
280
|
|
259
|
-
ares_socket_t GetWrappedAresSocketLocked() {
|
281
|
+
ares_socket_t GetWrappedAresSocketLocked() override {
|
260
282
|
return grpc_winsocket_wrapped_socket(winsocket_);
|
261
283
|
}
|
262
284
|
|
263
|
-
const char* GetName() const { return name_.c_str(); }
|
285
|
+
const char* GetName() const override { return name_.c_str(); }
|
264
286
|
|
265
287
|
ares_ssize_t RecvFrom(WSAErrorContext* wsa_error_ctx, void* data,
|
266
288
|
ares_socket_t data_len, int /* flags */,
|
@@ -437,7 +459,9 @@ class GrpcPolledFdWindows {
|
|
437
459
|
GPR_ASSERT(!connect_done_);
|
438
460
|
connect_done_ = true;
|
439
461
|
GPR_ASSERT(wsa_connect_error_ == 0);
|
440
|
-
if (error.ok()) {
|
462
|
+
if (!error.ok() || shutdown_called_) {
|
463
|
+
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
464
|
+
} else {
|
441
465
|
DWORD transferred_bytes = 0;
|
442
466
|
DWORD flags;
|
443
467
|
BOOL wsa_success =
|
@@ -454,10 +478,6 @@ class GrpcPolledFdWindows {
|
|
454
478
|
GetName(), wsa_connect_error_, msg);
|
455
479
|
gpr_free(msg);
|
456
480
|
}
|
457
|
-
} else {
|
458
|
-
// Spoof up an error code that will cause any future c-ares operations on
|
459
|
-
// this fd to abort.
|
460
|
-
wsa_connect_error_ = WSA_OPERATION_ABORTED;
|
461
481
|
}
|
462
482
|
if (pending_continue_register_for_on_readable_locked_) {
|
463
483
|
ContinueRegisterForOnReadableLocked();
|
@@ -564,7 +584,7 @@ class GrpcPolledFdWindows {
|
|
564
584
|
return -1;
|
565
585
|
}
|
566
586
|
}
|
567
|
-
|
587
|
+
// RegisterForOnWriteable will register for an async notification
|
568
588
|
return out;
|
569
589
|
}
|
570
590
|
|
@@ -645,9 +665,6 @@ class GrpcPolledFdWindows {
|
|
645
665
|
ScheduleAndNullWriteClosure(error);
|
646
666
|
}
|
647
667
|
|
648
|
-
bool gotten_into_driver_list() const { return gotten_into_driver_list_; }
|
649
|
-
void set_gotten_into_driver_list() { gotten_into_driver_list_ = true; }
|
650
|
-
|
651
668
|
private:
|
652
669
|
Mutex* mu_;
|
653
670
|
char recv_from_source_addr_[200];
|
@@ -660,73 +677,48 @@ class GrpcPolledFdWindows {
|
|
660
677
|
grpc_closure outer_read_closure_;
|
661
678
|
grpc_closure outer_write_closure_;
|
662
679
|
grpc_winsocket* winsocket_;
|
663
|
-
// tcp_write_state_ is only used on TCP GrpcPolledFds
|
664
|
-
WriteState tcp_write_state_;
|
665
680
|
const std::string name_;
|
666
|
-
bool
|
681
|
+
bool shutdown_called_ = false;
|
667
682
|
int address_family_;
|
668
683
|
int socket_type_;
|
684
|
+
// State related to TCP sockets
|
669
685
|
grpc_closure on_tcp_connect_locked_;
|
670
686
|
bool connect_done_ = false;
|
671
687
|
int wsa_connect_error_ = 0;
|
688
|
+
WriteState tcp_write_state_ = WRITE_IDLE;
|
672
689
|
// We don't run register_for_{readable,writeable} logic until
|
673
690
|
// a socket is connected. In the interim, we queue readable/writeable
|
674
691
|
// registrations with the following state.
|
675
692
|
bool pending_continue_register_for_on_readable_locked_ = false;
|
676
693
|
bool pending_continue_register_for_on_writeable_locked_ = false;
|
694
|
+
absl::AnyInvocable<void()> on_shutdown_locked_;
|
677
695
|
};
|
678
696
|
|
679
|
-
|
680
|
-
SockToPolledFdEntry(SOCKET s, GrpcPolledFdWindows* fd)
|
681
|
-
: socket(s), polled_fd(fd) {}
|
682
|
-
SOCKET socket;
|
683
|
-
GrpcPolledFdWindows* polled_fd;
|
684
|
-
SockToPolledFdEntry* next = nullptr;
|
685
|
-
};
|
686
|
-
|
687
|
-
// A SockToPolledFdMap can make ares_socket_t types (SOCKET's on windows)
|
688
|
-
// to GrpcPolledFdWindow's, and is used to find the appropriate
|
689
|
-
// GrpcPolledFdWindows to handle a virtual socket call when c-ares makes that
|
690
|
-
// socket call on the ares_socket_t type. Instances are owned by and one-to-one
|
691
|
-
// with a GrpcPolledFdWindows factory and event driver
|
692
|
-
class SockToPolledFdMap {
|
697
|
+
class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
693
698
|
public:
|
694
|
-
explicit
|
699
|
+
explicit GrpcPolledFdFactoryWindows(Mutex* mu) : mu_(mu) {}
|
695
700
|
|
696
|
-
~
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
701
|
+
~GrpcPolledFdFactoryWindows() override {
|
702
|
+
// We might still have a socket -> polled fd mappings if the socket
|
703
|
+
// was never seen by the grpc ares wrapper code, i.e. if we never
|
704
|
+
// initiated I/O polling for them.
|
705
|
+
for (auto& it : sockets_) {
|
706
|
+
delete it.second;
|
707
|
+
}
|
702
708
|
}
|
703
709
|
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
return node->polled_fd;
|
710
|
-
}
|
711
|
-
}
|
712
|
-
abort();
|
710
|
+
GrpcPolledFd* NewGrpcPolledFdLocked(
|
711
|
+
ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
|
712
|
+
auto it = sockets_.find(as);
|
713
|
+
GPR_ASSERT(it != sockets_.end());
|
714
|
+
return it->second;
|
713
715
|
}
|
714
716
|
|
715
|
-
void
|
716
|
-
|
717
|
-
SockToPolledFdEntry** prev = &head_;
|
718
|
-
for (SockToPolledFdEntry* node = head_; node != nullptr;
|
719
|
-
node = node->next) {
|
720
|
-
if (node->socket == s) {
|
721
|
-
*prev = node->next;
|
722
|
-
delete node;
|
723
|
-
return;
|
724
|
-
}
|
725
|
-
prev = &node->next;
|
726
|
-
}
|
727
|
-
abort();
|
717
|
+
void ConfigureAresChannelLocked(ares_channel channel) override {
|
718
|
+
ares_set_socket_functions(channel, &kCustomSockFuncs, this);
|
728
719
|
}
|
729
720
|
|
721
|
+
private:
|
730
722
|
// These virtual socket functions are called from within the c-ares
|
731
723
|
// library. These methods generally dispatch those socket calls to the
|
732
724
|
// appropriate methods. The virtual "socket" and "close" methods are
|
@@ -738,7 +730,8 @@ class SockToPolledFdMap {
|
|
738
730
|
GRPC_CARES_TRACE_LOG("Socket called with invalid socket type:%d", type);
|
739
731
|
return INVALID_SOCKET;
|
740
732
|
}
|
741
|
-
|
733
|
+
GrpcPolledFdFactoryWindows* self =
|
734
|
+
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
742
735
|
SOCKET s = WSASocket(af, type, protocol, nullptr, 0,
|
743
736
|
grpc_get_default_wsa_socket_flags());
|
744
737
|
if (s == INVALID_SOCKET) {
|
@@ -753,131 +746,68 @@ class SockToPolledFdMap {
|
|
753
746
|
StatusToString(error).c_str());
|
754
747
|
return INVALID_SOCKET;
|
755
748
|
}
|
756
|
-
|
757
|
-
|
749
|
+
auto on_shutdown_locked = [self, s]() {
|
750
|
+
// grpc_winsocket_shutdown calls closesocket which invalidates our
|
751
|
+
// socket -> polled_fd mapping because the socket handle can be henceforth
|
752
|
+
// reused.
|
753
|
+
self->sockets_.erase(s);
|
754
|
+
};
|
755
|
+
auto polled_fd = new GrpcPolledFdWindows(s, self->mu_, af, type,
|
756
|
+
std::move(on_shutdown_locked));
|
758
757
|
GRPC_CARES_TRACE_LOG(
|
759
758
|
"fd:|%s| created with params af:%d type:%d protocol:%d",
|
760
759
|
polled_fd->GetName(), af, type, protocol);
|
761
|
-
|
760
|
+
GPR_ASSERT(self->sockets_.insert({s, polled_fd}).second);
|
762
761
|
return s;
|
763
762
|
}
|
764
763
|
|
765
764
|
static int Connect(ares_socket_t as, const struct sockaddr* target,
|
766
765
|
ares_socklen_t target_len, void* user_data) {
|
767
766
|
WSAErrorContext wsa_error_ctx;
|
768
|
-
|
769
|
-
|
770
|
-
|
767
|
+
GrpcPolledFdFactoryWindows* self =
|
768
|
+
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
769
|
+
auto it = self->sockets_.find(as);
|
770
|
+
GPR_ASSERT(it != self->sockets_.end());
|
771
|
+
return it->second->Connect(&wsa_error_ctx, target, target_len);
|
771
772
|
}
|
772
773
|
|
773
774
|
static ares_ssize_t SendV(ares_socket_t as, const struct iovec* iov,
|
774
775
|
int iovec_count, void* user_data) {
|
775
776
|
WSAErrorContext wsa_error_ctx;
|
776
|
-
|
777
|
-
|
778
|
-
|
777
|
+
GrpcPolledFdFactoryWindows* self =
|
778
|
+
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
779
|
+
auto it = self->sockets_.find(as);
|
780
|
+
GPR_ASSERT(it != self->sockets_.end());
|
781
|
+
return it->second->SendV(&wsa_error_ctx, iov, iovec_count);
|
779
782
|
}
|
780
783
|
|
781
784
|
static ares_ssize_t RecvFrom(ares_socket_t as, void* data, size_t data_len,
|
782
785
|
int flags, struct sockaddr* from,
|
783
786
|
ares_socklen_t* from_len, void* user_data) {
|
784
787
|
WSAErrorContext wsa_error_ctx;
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
if (!polled_fd->gotten_into_driver_list()) {
|
803
|
-
polled_fd->ShutdownLocked(GRPC_ERROR_CREATE(
|
804
|
-
"Shut down c-ares fd before without it ever having made it into the "
|
805
|
-
"driver's list"));
|
806
|
-
}
|
807
|
-
delete polled_fd;
|
808
|
-
return 0;
|
809
|
-
}
|
788
|
+
GrpcPolledFdFactoryWindows* self =
|
789
|
+
static_cast<GrpcPolledFdFactoryWindows*>(user_data);
|
790
|
+
auto it = self->sockets_.find(as);
|
791
|
+
GPR_ASSERT(it != self->sockets_.end());
|
792
|
+
return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from,
|
793
|
+
from_len);
|
794
|
+
}
|
795
|
+
|
796
|
+
static int CloseSocket(SOCKET /* s */, void* /* user_data */) { return 0; }
|
797
|
+
|
798
|
+
const struct ares_socket_functions kCustomSockFuncs = {
|
799
|
+
&GrpcPolledFdFactoryWindows::Socket /* socket */,
|
800
|
+
&GrpcPolledFdFactoryWindows::CloseSocket /* close */,
|
801
|
+
&GrpcPolledFdFactoryWindows::Connect /* connect */,
|
802
|
+
&GrpcPolledFdFactoryWindows::RecvFrom /* recvfrom */,
|
803
|
+
&GrpcPolledFdFactoryWindows::SendV /* sendv */,
|
804
|
+
};
|
810
805
|
|
811
|
-
private:
|
812
806
|
Mutex* mu_;
|
813
|
-
|
814
|
-
};
|
815
|
-
|
816
|
-
const struct ares_socket_functions custom_ares_sock_funcs = {
|
817
|
-
&SockToPolledFdMap::Socket /* socket */,
|
818
|
-
&SockToPolledFdMap::CloseSocket /* close */,
|
819
|
-
&SockToPolledFdMap::Connect /* connect */,
|
820
|
-
&SockToPolledFdMap::RecvFrom /* recvfrom */,
|
821
|
-
&SockToPolledFdMap::SendV /* sendv */,
|
807
|
+
std::map<SOCKET, GrpcPolledFdWindows*> sockets_;
|
822
808
|
};
|
823
809
|
|
824
|
-
//
|
825
|
-
// lifetime. This object releases it's GrpcPolledFdWindows upon destruction,
|
826
|
-
// so that c-ares can close it via usual socket teardown.
|
827
|
-
class GrpcPolledFdWindowsWrapper : public GrpcPolledFd {
|
828
|
-
public:
|
829
|
-
explicit GrpcPolledFdWindowsWrapper(GrpcPolledFdWindows* wrapped)
|
830
|
-
: wrapped_(wrapped) {}
|
831
|
-
|
832
|
-
~GrpcPolledFdWindowsWrapper() {}
|
833
|
-
|
834
|
-
void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
|
835
|
-
wrapped_->RegisterForOnReadableLocked(read_closure);
|
836
|
-
}
|
837
|
-
|
838
|
-
void RegisterForOnWriteableLocked(grpc_closure* write_closure) override {
|
839
|
-
wrapped_->RegisterForOnWriteableLocked(write_closure);
|
840
|
-
}
|
841
|
-
|
842
|
-
bool IsFdStillReadableLocked() override {
|
843
|
-
return wrapped_->IsFdStillReadableLocked();
|
844
|
-
}
|
845
|
-
|
846
|
-
void ShutdownLocked(grpc_error_handle error) override {
|
847
|
-
wrapped_->ShutdownLocked(error);
|
848
|
-
}
|
849
|
-
|
850
|
-
ares_socket_t GetWrappedAresSocketLocked() override {
|
851
|
-
return wrapped_->GetWrappedAresSocketLocked();
|
852
|
-
}
|
853
|
-
|
854
|
-
const char* GetName() const override { return wrapped_->GetName(); }
|
855
|
-
|
856
|
-
private:
|
857
|
-
GrpcPolledFdWindows* const wrapped_;
|
858
|
-
};
|
859
|
-
|
860
|
-
class GrpcPolledFdFactoryWindows : public GrpcPolledFdFactory {
|
861
|
-
public:
|
862
|
-
explicit GrpcPolledFdFactoryWindows(Mutex* mu) : sock_to_polled_fd_map_(mu) {}
|
863
|
-
|
864
|
-
GrpcPolledFd* NewGrpcPolledFdLocked(
|
865
|
-
ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
|
866
|
-
GrpcPolledFdWindows* polled_fd = sock_to_polled_fd_map_.LookupPolledFd(as);
|
867
|
-
// Set a flag so that the virtual socket "close" method knows it
|
868
|
-
// doesn't need to call ShutdownLocked, since now the driver will.
|
869
|
-
polled_fd->set_gotten_into_driver_list();
|
870
|
-
return new GrpcPolledFdWindowsWrapper(polled_fd);
|
871
|
-
}
|
872
|
-
|
873
|
-
void ConfigureAresChannelLocked(ares_channel channel) override {
|
874
|
-
ares_set_socket_functions(channel, &custom_ares_sock_funcs,
|
875
|
-
&sock_to_polled_fd_map_);
|
876
|
-
}
|
877
|
-
|
878
|
-
private:
|
879
|
-
SockToPolledFdMap sock_to_polled_fd_map_;
|
880
|
-
};
|
810
|
+
} // namespace
|
881
811
|
|
882
812
|
std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Mutex* mu) {
|
883
813
|
return std::make_unique<GrpcPolledFdFactoryWindows>(mu);
|
@@ -366,9 +366,7 @@ static void on_readable(void* arg, grpc_error_handle error) {
|
|
366
366
|
GRPC_CARES_TRACE_LOG("request:%p readable on %s", fdn->ev_driver->request,
|
367
367
|
fdn->grpc_polled_fd->GetName());
|
368
368
|
if (error.ok() && !ev_driver->shutting_down) {
|
369
|
-
|
370
|
-
ares_process_fd(ev_driver->channel, as, ARES_SOCKET_BAD);
|
371
|
-
} while (fdn->grpc_polled_fd->IsFdStillReadableLocked());
|
369
|
+
ares_process_fd(ev_driver->channel, as, ARES_SOCKET_BAD);
|
372
370
|
} else {
|
373
371
|
// If error is not absl::OkStatus() or the resolution was cancelled, it
|
374
372
|
// means the fd has been shutdown or timed out. The pending lookups made on
|
@@ -438,12 +436,21 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver)
|
|
438
436
|
if (ARES_GETSOCK_READABLE(socks_bitmask, i) &&
|
439
437
|
!fdn->readable_registered) {
|
440
438
|
grpc_ares_ev_driver_ref(ev_driver);
|
441
|
-
GRPC_CARES_TRACE_LOG("request:%p notify read on: %s",
|
442
|
-
ev_driver->request,
|
443
|
-
fdn->grpc_polled_fd->GetName());
|
444
439
|
GRPC_CLOSURE_INIT(&fdn->read_closure, on_readable, fdn,
|
445
440
|
grpc_schedule_on_exec_ctx);
|
446
|
-
fdn->grpc_polled_fd->
|
441
|
+
if (fdn->grpc_polled_fd->IsFdStillReadableLocked()) {
|
442
|
+
GRPC_CARES_TRACE_LOG("request:%p schedule direct read on: %s",
|
443
|
+
ev_driver->request,
|
444
|
+
fdn->grpc_polled_fd->GetName());
|
445
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &fdn->read_closure,
|
446
|
+
absl::OkStatus());
|
447
|
+
} else {
|
448
|
+
GRPC_CARES_TRACE_LOG("request:%p notify read on: %s",
|
449
|
+
ev_driver->request,
|
450
|
+
fdn->grpc_polled_fd->GetName());
|
451
|
+
fdn->grpc_polled_fd->RegisterForOnReadableLocked(
|
452
|
+
&fdn->read_closure);
|
453
|
+
}
|
447
454
|
fdn->readable_registered = true;
|
448
455
|
}
|
449
456
|
// Register write_closure if the socket is writable and write_closure
|
@@ -214,25 +214,31 @@ FakeResolverResponseGenerator::FakeResolverResponseGenerator() {}
|
|
214
214
|
|
215
215
|
FakeResolverResponseGenerator::~FakeResolverResponseGenerator() {}
|
216
216
|
|
217
|
-
void FakeResolverResponseGenerator::
|
217
|
+
void FakeResolverResponseGenerator::SetResponseAndNotify(
|
218
|
+
Resolver::Result result, Notification* notify_when_set) {
|
218
219
|
RefCountedPtr<FakeResolver> resolver;
|
219
220
|
{
|
220
221
|
MutexLock lock(&mu_);
|
221
222
|
if (resolver_ == nullptr) {
|
222
223
|
has_result_ = true;
|
223
224
|
result_ = std::move(result);
|
225
|
+
if (notify_when_set != nullptr) notify_when_set->Notify();
|
224
226
|
return;
|
225
227
|
}
|
226
228
|
resolver = resolver_->Ref();
|
227
229
|
}
|
228
230
|
FakeResolverResponseSetter* arg =
|
229
231
|
new FakeResolverResponseSetter(resolver, std::move(result));
|
230
|
-
resolver->work_serializer_->Run(
|
231
|
-
|
232
|
+
resolver->work_serializer_->Run(
|
233
|
+
[arg, notify_when_set]() {
|
234
|
+
arg->SetResponseLocked();
|
235
|
+
if (notify_when_set != nullptr) notify_when_set->Notify();
|
236
|
+
},
|
237
|
+
DEBUG_LOCATION);
|
232
238
|
}
|
233
239
|
|
234
|
-
void FakeResolverResponseGenerator::
|
235
|
-
Resolver::Result result) {
|
240
|
+
void FakeResolverResponseGenerator::SetReresolutionResponseAndNotify(
|
241
|
+
Resolver::Result result, Notification* notify_when_set) {
|
236
242
|
RefCountedPtr<FakeResolver> resolver;
|
237
243
|
{
|
238
244
|
MutexLock lock(&mu_);
|
@@ -242,7 +248,11 @@ void FakeResolverResponseGenerator::SetReresolutionResponse(
|
|
242
248
|
FakeResolverResponseSetter* arg = new FakeResolverResponseSetter(
|
243
249
|
resolver, std::move(result), true /* has_result */);
|
244
250
|
resolver->work_serializer_->Run(
|
245
|
-
[arg]() {
|
251
|
+
[arg, notify_when_set]() {
|
252
|
+
arg->SetReresolutionResponseLocked();
|
253
|
+
if (notify_when_set != nullptr) notify_when_set->Notify();
|
254
|
+
},
|
255
|
+
DEBUG_LOCATION);
|
246
256
|
}
|
247
257
|
|
248
258
|
void FakeResolverResponseGenerator::UnsetReresolutionResponse() {
|
@@ -289,6 +299,7 @@ void FakeResolverResponseGenerator::SetFakeResolver(
|
|
289
299
|
RefCountedPtr<FakeResolver> resolver) {
|
290
300
|
MutexLock lock(&mu_);
|
291
301
|
resolver_ = std::move(resolver);
|
302
|
+
cv_.SignalAll();
|
292
303
|
if (resolver_ == nullptr) return;
|
293
304
|
if (has_result_) {
|
294
305
|
FakeResolverResponseSetter* arg =
|
@@ -299,6 +310,13 @@ void FakeResolverResponseGenerator::SetFakeResolver(
|
|
299
310
|
}
|
300
311
|
}
|
301
312
|
|
313
|
+
void FakeResolverResponseGenerator::WaitForResolverSet() {
|
314
|
+
MutexLock lock(&mu_);
|
315
|
+
while (resolver_ == nullptr) {
|
316
|
+
cv_.Wait(&mu_);
|
317
|
+
}
|
318
|
+
}
|
319
|
+
|
302
320
|
namespace {
|
303
321
|
|
304
322
|
void* ResponseGeneratorChannelArgCopy(void* p) {
|
@@ -19,12 +19,15 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include <utility>
|
23
|
+
|
22
24
|
#include "absl/base/thread_annotations.h"
|
23
25
|
#include "absl/strings/string_view.h"
|
24
26
|
|
25
27
|
#include <grpc/grpc.h>
|
26
28
|
|
27
29
|
#include "src/core/lib/gpr/useful.h"
|
30
|
+
#include "src/core/lib/gprpp/notification.h"
|
28
31
|
#include "src/core/lib/gprpp/ref_counted.h"
|
29
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
30
33
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -57,13 +60,39 @@ class FakeResolverResponseGenerator
|
|
57
60
|
// instance to trigger a new resolution with the specified result. If the
|
58
61
|
// resolver is not available yet, delays response setting until it is. This
|
59
62
|
// can be called at most once before the resolver is available.
|
60
|
-
|
63
|
+
// notify_when_set is an optional notification to signal when the response has
|
64
|
+
// been set.
|
65
|
+
void SetResponseAndNotify(Resolver::Result result,
|
66
|
+
Notification* notify_when_set);
|
67
|
+
|
68
|
+
// Same as SetResponseAndNotify(), assume that async setting is fine
|
69
|
+
void SetResponseAsync(Resolver::Result result) {
|
70
|
+
SetResponseAndNotify(std::move(result), nullptr);
|
71
|
+
}
|
72
|
+
|
73
|
+
// Same as SetResponseAndNotify(), but create and wait for the notification
|
74
|
+
void SetResponseSynchronously(Resolver::Result result) {
|
75
|
+
Notification n;
|
76
|
+
SetResponseAndNotify(std::move(result), &n);
|
77
|
+
n.WaitForNotification();
|
78
|
+
}
|
61
79
|
|
62
80
|
// Sets the re-resolution response, which is returned by the fake resolver
|
63
81
|
// when re-resolution is requested (via \a RequestReresolutionLocked()).
|
64
82
|
// The new re-resolution response replaces any previous re-resolution
|
65
83
|
// response that may have been set by a previous call.
|
66
|
-
|
84
|
+
// notify_when_set is an optional notification to signal when the response has
|
85
|
+
// been set.
|
86
|
+
void SetReresolutionResponseAndNotify(Resolver::Result result,
|
87
|
+
Notification* notify_when_set);
|
88
|
+
void SetReresolutionResponseAsync(Resolver::Result result) {
|
89
|
+
SetReresolutionResponseAndNotify(std::move(result), nullptr);
|
90
|
+
}
|
91
|
+
void SetReresolutionResponseSynchronously(Resolver::Result result) {
|
92
|
+
Notification n;
|
93
|
+
SetReresolutionResponseAndNotify(std::move(result), &n);
|
94
|
+
n.WaitForNotification();
|
95
|
+
}
|
67
96
|
|
68
97
|
// Unsets the re-resolution response. After this, the fake resolver will
|
69
98
|
// not return anything when \a RequestReresolutionLocked() is called.
|
@@ -88,6 +117,10 @@ class FakeResolverResponseGenerator
|
|
88
117
|
return GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR;
|
89
118
|
}
|
90
119
|
|
120
|
+
// Wait for a resolver to be set (setting may be happening asynchronously, so
|
121
|
+
// this may block - consider it test only).
|
122
|
+
void WaitForResolverSet();
|
123
|
+
|
91
124
|
static int ChannelArgsCompare(const FakeResolverResponseGenerator* a,
|
92
125
|
const FakeResolverResponseGenerator* b) {
|
93
126
|
return QsortCompare(a, b);
|
@@ -100,6 +133,7 @@ class FakeResolverResponseGenerator
|
|
100
133
|
|
101
134
|
// Mutex protecting the members below.
|
102
135
|
Mutex mu_;
|
136
|
+
CondVar cv_;
|
103
137
|
RefCountedPtr<FakeResolver> resolver_ ABSL_GUARDED_BY(mu_);
|
104
138
|
Resolver::Result result_ ABSL_GUARDED_BY(mu_);
|
105
139
|
bool has_result_ ABSL_GUARDED_BY(mu_) = false;
|