grpc 1.52.0.pre2 → 1.53.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +50 -5
- data/include/grpc/event_engine/event_engine.h +24 -2
- data/include/grpc/event_engine/slice_buffer.h +13 -1
- data/include/grpc/impl/grpc_types.h +3 -0
- data/include/grpc/support/time.h +6 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +3 -3
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +3 -3
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.h +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +29 -33
- data/src/core/ext/filters/client_channel/client_channel.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +3 -3
- data/src/core/ext/filters/client_channel/client_channel_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/config_selector.h +3 -3
- data/src/core/ext/filters/client_channel/connector.h +8 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +1 -78
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +12 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +275 -107
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +10 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +5 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -7
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -3
- data/src/core/ext/filters/client_channel/retry_filter.cc +10 -13
- data/src/core/ext/filters/client_channel/retry_filter.h +3 -3
- data/src/core/ext/filters/client_channel/retry_service_config.h +3 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -3
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +4 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +5 -1
- data/src/core/ext/filters/client_channel/subchannel.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +40 -48
- data/src/core/ext/filters/deadline/deadline_filter.h +6 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +3 -3
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -21
- data/src/core/ext/filters/http/client/http_client_filter.h +3 -3
- data/src/core/ext/filters/http/client_authority_filter.h +3 -3
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +109 -117
- data/src/core/ext/filters/http/message_compress/compression_filter.h +17 -10
- data/src/core/ext/filters/http/server/http_server_filter.cc +25 -24
- data/src/core/ext/filters/http/server/http_server_filter.h +3 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_filter.cc +4 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -3
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +27 -37
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +5 -5
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +195 -111
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +3 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +18 -407
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
- data/src/core/ext/transport/chttp2/transport/http_trace.h +3 -3
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +3 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +28 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +111 -31
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -3
- data/src/core/ext/transport/chttp2/transport/varint.h +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -8
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -3
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +38 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +185 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +16 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +48 -74
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +30 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +137 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +83 -51
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +17 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +61 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +37 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +50 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +254 -17
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +9 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +21 -12
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +10 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +42 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +31 -9
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +3 -1
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +54 -53
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +34 -13
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +195 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +232 -224
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +95 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +94 -93
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +81 -75
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +189 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +7 -3
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +137 -133
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +140 -133
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +81 -70
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +771 -741
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +16 -14
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +14 -13
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +20 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +53 -42
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +363 -356
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +149 -145
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +16 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +14 -14
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +10 -9
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +1 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/ext/xds/upb_utils.h +3 -3
- data/src/core/ext/xds/xds_api.h +3 -3
- data/src/core/ext/xds/xds_bootstrap.h +3 -3
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +1 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +3 -3
- data/src/core/ext/xds/xds_certificate_provider.h +3 -3
- data/src/core/ext/xds/xds_channel_args.h +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.h +3 -3
- data/src/core/ext/xds/xds_client.cc +8 -3
- data/src/core/ext/xds/xds_client.h +3 -3
- data/src/core/ext/xds/xds_client_grpc.cc +0 -1
- data/src/core/ext/xds/xds_client_grpc.h +3 -3
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +11 -7
- data/src/core/ext/xds/xds_cluster.h +6 -6
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +3 -3
- data/src/core/ext/xds/xds_common_types.cc +1 -0
- data/src/core/ext/xds/xds_common_types.h +3 -3
- data/src/core/ext/xds/xds_endpoint.cc +1 -1
- data/src/core/ext/xds/xds_endpoint.h +3 -3
- data/src/core/ext/xds/xds_health_status.h +30 -3
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.cc +1 -1
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +95 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +3 -3
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_listener.h +3 -3
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +3 -3
- data/src/core/ext/xds/xds_route_config.cc +6 -0
- data/src/core/ext/xds/xds_route_config.h +3 -3
- data/src/core/ext/xds/xds_routing.h +3 -3
- data/src/core/ext/xds/xds_transport.h +3 -3
- data/src/core/ext/xds/xds_transport_grpc.h +3 -3
- data/src/core/lib/address_utils/parse_address.h +3 -3
- data/src/core/lib/address_utils/sockaddr_utils.cc +1 -0
- data/src/core/lib/address_utils/sockaddr_utils.h +3 -3
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/call_finalization.h +3 -3
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.cc +1 -0
- data/src/core/lib/channel/channel_args.h +11 -5
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -3
- data/src/core/lib/channel/channel_fwd.h +3 -3
- data/src/core/lib/channel/channel_stack.cc +1 -2
- data/src/core/lib/channel/channel_stack.h +4 -4
- data/src/core/lib/channel/channel_stack_builder.h +3 -3
- data/src/core/lib/channel/channel_stack_builder_impl.cc +14 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -3
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.h +3 -3
- data/src/core/lib/channel/channelz_registry.h +3 -3
- data/src/core/lib/channel/connected_channel.cc +883 -354
- data/src/core/lib/channel/connected_channel.h +3 -3
- data/src/core/lib/channel/context.h +7 -3
- data/src/core/lib/channel/promise_based_filter.cc +532 -260
- data/src/core/lib/channel/promise_based_filter.h +124 -44
- data/src/core/lib/channel/status_util.h +3 -3
- data/src/core/lib/compression/compression_internal.h +3 -3
- data/src/core/lib/compression/message_compress.h +3 -3
- data/src/core/lib/config/core_configuration.h +3 -3
- data/src/core/lib/debug/event_log.h +3 -3
- data/src/core/lib/debug/histogram_view.h +3 -3
- data/src/core/lib/debug/stats.h +3 -3
- data/src/core/lib/debug/stats_data.cc +66 -65
- data/src/core/lib/debug/stats_data.h +42 -33
- data/src/core/lib/debug/trace.h +4 -26
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -0
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -3
- data/src/core/lib/event_engine/common_closures.h +3 -3
- data/src/core/lib/event_engine/default_event_engine.cc +9 -4
- data/src/core/lib/event_engine/default_event_engine.h +30 -6
- data/src/core/lib/event_engine/default_event_engine_factory.h +3 -3
- data/src/core/lib/event_engine/event_engine.cc +25 -0
- data/src/core/lib/event_engine/executor/executor.h +3 -3
- data/src/core/lib/event_engine/forkable.cc +11 -6
- data/src/core/lib/event_engine/forkable.h +3 -3
- data/src/core/lib/event_engine/handle_containers.h +10 -3
- data/src/core/lib/event_engine/poller.h +3 -3
- data/src/core/lib/event_engine/posix.h +158 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +44 -16
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +14 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +6 -7
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -3
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -3
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +52 -55
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +46 -13
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +82 -12
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +23 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +60 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +65 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -6
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_heap.h +3 -3
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +19 -0
- data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
- data/src/core/lib/event_engine/shim.cc +56 -0
- data/src/core/lib/event_engine/shim.h +33 -0
- data/src/core/lib/event_engine/slice.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -2
- data/src/core/lib/event_engine/tcp_socket_utils.h +8 -3
- data/src/core/lib/event_engine/thread_local.cc +29 -0
- data/src/core/lib/event_engine/thread_local.h +32 -0
- data/src/core/lib/event_engine/thread_pool.cc +41 -65
- data/src/core/lib/event_engine/thread_pool.h +21 -17
- data/src/core/lib/event_engine/time_util.h +3 -3
- data/src/core/lib/event_engine/trace.cc +6 -0
- data/src/core/lib/event_engine/trace.h +16 -3
- data/src/core/lib/event_engine/utils.cc +2 -2
- data/src/core/lib/event_engine/utils.h +12 -4
- data/src/core/lib/event_engine/windows/iocp.cc +24 -40
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +56 -33
- data/src/core/lib/event_engine/windows/win_socket.h +34 -25
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +243 -20
- data/src/core/lib/event_engine/windows/windows_engine.h +62 -23
- data/src/core/lib/experiments/config.cc +16 -1
- data/src/core/lib/experiments/config.h +13 -3
- data/src/core/lib/experiments/experiments.cc +14 -8
- data/src/core/lib/experiments/experiments.h +80 -21
- data/src/core/lib/gpr/alloc.h +3 -3
- data/src/core/lib/gpr/spinlock.h +3 -3
- data/src/core/lib/gpr/string.h +3 -3
- data/src/core/lib/gpr/sync_abseil.cc +15 -7
- data/src/core/lib/gpr/time_precise.h +3 -3
- data/src/core/lib/gpr/tmpfile.h +3 -3
- data/src/core/lib/gpr/useful.h +3 -3
- data/src/core/lib/gprpp/atomic_utils.h +3 -3
- data/src/core/lib/gprpp/bitset.h +3 -3
- data/src/core/lib/gprpp/chunked_vector.h +3 -3
- data/src/core/lib/gprpp/construct_destruct.h +3 -3
- data/src/core/lib/gprpp/cpp_impl_of.h +3 -3
- data/src/core/lib/gprpp/crash.h +3 -3
- data/src/core/lib/gprpp/debug_location.h +3 -6
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/env.h +3 -3
- data/src/core/lib/gprpp/examine_stack.h +3 -3
- data/src/core/lib/gprpp/fork.cc +21 -4
- data/src/core/lib/gprpp/fork.h +7 -5
- data/src/core/lib/gprpp/global_config.h +3 -3
- data/src/core/lib/gprpp/global_config_custom.h +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +1 -0
- data/src/core/lib/gprpp/global_config_env.h +3 -3
- data/src/core/lib/gprpp/global_config_generic.h +3 -3
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/host_port.h +3 -3
- data/src/core/lib/gprpp/load_file.h +3 -3
- data/src/core/lib/gprpp/manual_constructor.h +3 -3
- data/src/core/lib/gprpp/match.h +3 -3
- data/src/core/lib/gprpp/memory.h +3 -3
- data/src/core/lib/gprpp/mpscq.h +3 -3
- data/src/core/lib/gprpp/no_destruct.h +3 -3
- data/src/core/lib/gprpp/notification.h +3 -3
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/overload.h +3 -3
- data/src/core/lib/gprpp/packed_table.h +3 -3
- data/src/core/lib/gprpp/per_cpu.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -3
- data/src/core/lib/gprpp/single_set_ptr.h +3 -3
- data/src/core/lib/gprpp/sorted_pack.h +3 -3
- data/src/core/lib/gprpp/stat.h +3 -3
- data/src/core/lib/gprpp/status_helper.h +3 -3
- data/src/core/lib/gprpp/strerror.cc +2 -0
- data/src/core/lib/gprpp/strerror.h +3 -3
- data/src/core/lib/gprpp/sync.h +3 -3
- data/src/core/lib/gprpp/table.h +3 -3
- data/src/core/lib/gprpp/tchar.h +3 -3
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +3 -3
- data/src/core/lib/gprpp/time_averaged_stats.h +3 -3
- data/src/core/lib/gprpp/time_util.h +3 -3
- data/src/core/lib/gprpp/unique_type_name.h +3 -3
- data/src/core/lib/gprpp/validation_errors.h +3 -3
- data/src/core/lib/gprpp/work_serializer.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper.h +3 -3
- data/src/core/lib/handshaker/proxy_mapper_registry.h +3 -3
- data/src/core/lib/http/format_request.cc +1 -0
- data/src/core/lib/http/format_request.h +3 -3
- data/src/core/lib/http/httpcli.cc +1 -0
- data/src/core/lib/http/httpcli.h +3 -3
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -3
- data/src/core/lib/http/parser.h +3 -3
- data/src/core/lib/iomgr/block_annotate.h +3 -3
- data/src/core/lib/iomgr/buffer_list.h +3 -3
- data/src/core/lib/iomgr/call_combiner.cc +4 -4
- data/src/core/lib/iomgr/call_combiner.h +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +3 -3
- data/src/core/lib/iomgr/closure.cc +27 -0
- data/src/core/lib/iomgr/closure.h +5 -3
- data/src/core/lib/iomgr/combiner.h +3 -3
- data/src/core/lib/iomgr/dynamic_annotations.h +3 -3
- data/src/core/lib/iomgr/endpoint.h +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair.h +3 -3
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +10 -2
- data/src/core/lib/iomgr/error.h +3 -3
- data/src/core/lib/iomgr/error_cfstream.h +3 -3
- data/src/core/lib/iomgr/ev_apple.h +3 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.h +3 -3
- data/src/core/lib/iomgr/ev_poll_posix.h +3 -3
- data/src/core/lib/iomgr/ev_posix.h +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
- data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
- data/src/core/lib/iomgr/exec_ctx.h +3 -3
- data/src/core/lib/iomgr/executor.h +3 -3
- data/src/core/lib/iomgr/fork_posix.cc +5 -4
- data/src/core/lib/iomgr/gethostname.h +3 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex.h +3 -3
- data/src/core/lib/iomgr/internal_errqueue.h +3 -3
- data/src/core/lib/iomgr/iocp_windows.h +3 -3
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_fwd.h +3 -3
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/load_file.h +3 -3
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/nameser.h +3 -3
- data/src/core/lib/iomgr/polling_entity.h +3 -3
- data/src/core/lib/iomgr/pollset.h +3 -3
- data/src/core/lib/iomgr/pollset_set.h +3 -3
- data/src/core/lib/iomgr/pollset_set_windows.h +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +2 -2
- data/src/core/lib/iomgr/pollset_windows.h +3 -3
- data/src/core/lib/iomgr/port.h +3 -3
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address.h +3 -3
- data/src/core/lib/iomgr/resolve_address_impl.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.h +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.h +3 -3
- data/src/core/lib/iomgr/resolved_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr.h +3 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +3 -3
- data/src/core/lib/iomgr/sockaddr_windows.h +3 -3
- data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
- data/src/core/lib/iomgr/socket_mutator.h +3 -3
- data/src/core/lib/iomgr/socket_utils.h +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -3
- data/src/core/lib/iomgr/socket_windows.h +3 -3
- data/src/core/lib/iomgr/systemd_utils.cc +19 -19
- data/src/core/lib/iomgr/systemd_utils.h +24 -24
- data/src/core/lib/iomgr/tcp_client.h +3 -3
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -0
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -1
- data/src/core/lib/iomgr/tcp_posix.cc +49 -65
- data/src/core/lib/iomgr/tcp_posix.h +3 -3
- data/src/core/lib/iomgr/tcp_server.h +3 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +219 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_windows.h +3 -3
- data/src/core/lib/iomgr/timer.h +3 -3
- data/src/core/lib/iomgr/timer_generic.h +3 -3
- data/src/core/lib/iomgr/timer_heap.h +3 -3
- data/src/core/lib/iomgr/timer_manager.h +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -3
- data/src/core/lib/json/json.h +3 -3
- data/src/core/lib/json/json_args.h +3 -3
- data/src/core/lib/json/json_channel_args.h +3 -3
- data/src/core/lib/json/json_object_loader.h +3 -3
- data/src/core/lib/json/json_reader.cc +1 -0
- data/src/core/lib/json/json_util.h +3 -3
- data/src/core/lib/load_balancing/lb_policy.cc +9 -0
- data/src/core/lib/load_balancing/lb_policy.h +9 -5
- data/src/core/lib/load_balancing/lb_policy_factory.h +3 -3
- data/src/core/lib/load_balancing/lb_policy_registry.cc +1 -0
- data/src/core/lib/load_balancing/lb_policy_registry.h +3 -3
- data/src/core/lib/load_balancing/subchannel_interface.h +8 -6
- data/src/core/lib/matchers/matchers.cc +1 -0
- data/src/core/lib/matchers/matchers.h +3 -3
- data/src/core/lib/promise/activity.cc +8 -6
- data/src/core/lib/promise/activity.h +52 -66
- data/src/core/lib/promise/arena_promise.h +3 -3
- data/src/core/lib/promise/context.h +3 -3
- data/src/core/lib/promise/detail/basic_join.h +197 -0
- data/src/core/lib/promise/detail/basic_seq.h +10 -16
- data/src/core/lib/promise/detail/promise_factory.h +3 -3
- data/src/core/lib/promise/detail/promise_like.h +3 -3
- data/src/core/lib/promise/detail/status.h +3 -3
- data/src/core/lib/promise/detail/switch.h +3 -3
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -3
- data/src/core/lib/promise/if.h +195 -0
- data/src/core/lib/promise/interceptor_list.h +308 -0
- data/src/core/lib/promise/intra_activity_waiter.h +9 -3
- data/src/core/lib/promise/latch.h +99 -5
- data/src/core/lib/promise/loop.h +4 -4
- data/src/core/lib/promise/map.h +4 -6
- data/src/core/lib/promise/pipe.h +296 -193
- data/src/core/lib/promise/poll.h +113 -14
- data/src/core/lib/promise/promise.h +4 -5
- data/src/core/lib/promise/race.h +6 -9
- data/src/core/lib/promise/seq.h +3 -3
- data/src/core/lib/promise/sleep.h +3 -3
- data/src/core/lib/promise/{pipe.cc → trace.cc} +3 -2
- data/src/core/lib/promise/trace.h +24 -0
- data/src/core/lib/promise/try_join.h +82 -0
- data/src/core/lib/promise/try_seq.h +3 -3
- data/src/core/lib/resolver/resolver.h +3 -3
- data/src/core/lib/resolver/resolver_factory.h +4 -4
- data/src/core/lib/resolver/resolver_registry.cc +15 -0
- data/src/core/lib/resolver/resolver_registry.h +3 -3
- data/src/core/lib/resolver/server_address.cc +1 -0
- data/src/core/lib/resolver/server_address.h +3 -3
- data/src/core/lib/resource_quota/api.h +3 -3
- data/src/core/lib/resource_quota/arena.cc +36 -9
- data/src/core/lib/resource_quota/arena.h +84 -22
- data/src/core/lib/resource_quota/memory_quota.h +3 -3
- data/src/core/lib/resource_quota/periodic_update.h +3 -3
- data/src/core/lib/resource_quota/resource_quota.h +3 -3
- data/src/core/lib/resource_quota/thread_quota.h +3 -3
- data/src/core/lib/resource_quota/trace.h +3 -3
- data/src/core/lib/security/authorization/authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +3 -3
- data/src/core/lib/security/authorization/evaluate_args.h +3 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +3 -3
- data/src/core/lib/security/authorization/matchers.h +3 -3
- data/src/core/lib/security/authorization/rbac_policy.cc +1 -0
- data/src/core/lib/security/authorization/rbac_policy.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +3 -3
- data/src/core/lib/security/context/security_context.h +3 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +3 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/call_creds_util.h +3 -3
- data/src/core/lib/security/credentials/channel_creds_registry.h +3 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -3
- data/src/core/lib/security/credentials/jwt/json_token.h +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +3 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots.h +3 -3
- data/src/core/lib/security/security_connector/load_system_roots_supported.h +3 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils.h +3 -3
- data/src/core/lib/security/security_connector/ssl_utils_config.h +3 -3
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
- data/src/core/lib/security/transport/auth_filters.h +27 -5
- data/src/core/lib/security/transport/secure_endpoint.h +3 -3
- data/src/core/lib/security/transport/security_handshaker.cc +9 -0
- data/src/core/lib/security/transport/security_handshaker.h +3 -3
- data/src/core/lib/security/transport/server_auth_filter.cc +120 -251
- data/src/core/lib/security/transport/tsi_error.h +3 -3
- data/src/core/lib/security/util/json_util.h +3 -3
- data/src/core/lib/service_config/service_config.h +3 -3
- data/src/core/lib/service_config/service_config_call_data.h +3 -3
- data/src/core/lib/service_config/service_config_impl.h +3 -3
- data/src/core/lib/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/b64.h +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -3
- data/src/core/lib/slice/slice.h +14 -21
- data/src/core/lib/slice/slice_buffer.h +10 -4
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_refcount.cc +20 -0
- data/src/core/lib/slice/slice_refcount.h +26 -6
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/surface/api_trace.h +3 -3
- data/src/core/lib/surface/builtins.h +3 -3
- data/src/core/lib/surface/call.cc +866 -252
- data/src/core/lib/surface/call.h +31 -3
- data/src/core/lib/surface/call_log_batch.cc +1 -0
- data/src/core/lib/surface/call_test_only.h +3 -3
- data/src/core/lib/surface/call_trace.cc +21 -11
- data/src/core/lib/surface/call_trace.h +3 -3
- data/src/core/lib/surface/channel.h +3 -3
- data/src/core/lib/surface/channel_init.h +3 -3
- data/src/core/lib/surface/channel_stack_type.h +3 -3
- data/src/core/lib/surface/completion_queue.cc +1 -0
- data/src/core/lib/surface/completion_queue.h +3 -3
- data/src/core/lib/surface/completion_queue_factory.h +3 -3
- data/src/core/lib/surface/event_string.cc +1 -0
- data/src/core/lib/surface/event_string.h +3 -3
- data/src/core/lib/surface/init.cc +1 -1
- data/src/core/lib/surface/init.h +3 -3
- data/src/core/lib/surface/init_internally.h +3 -3
- data/src/core/lib/surface/lame_client.cc +3 -1
- data/src/core/lib/surface/lame_client.h +3 -3
- data/src/core/lib/surface/server.cc +273 -27
- data/src/core/lib/surface/server.h +6 -3
- data/src/core/lib/surface/validate_metadata.h +3 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/error_utils.h +3 -3
- data/src/core/lib/transport/handshaker.cc +11 -0
- data/src/core/lib/transport/handshaker.h +4 -4
- data/src/core/lib/transport/handshaker_factory.h +3 -3
- data/src/core/lib/transport/handshaker_registry.h +3 -3
- data/src/core/lib/transport/http2_errors.h +3 -3
- data/src/core/lib/transport/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +11 -0
- data/src/core/lib/transport/metadata_batch.h +24 -3
- data/src/core/lib/transport/parsed_metadata.h +3 -3
- data/src/core/lib/transport/pid_controller.h +3 -3
- data/src/core/lib/transport/status_conversion.h +3 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.h +3 -3
- data/src/core/lib/transport/timeout_encoding.h +3 -3
- data/src/core/lib/transport/transport.cc +3 -8
- data/src/core/lib/transport/transport.h +16 -8
- data/src/core/lib/transport/transport_fwd.h +3 -3
- data/src/core/lib/transport/transport_impl.h +3 -3
- data/src/core/lib/transport/transport_op_string.cc +1 -0
- data/src/core/lib/uri/uri_parser.cc +1 -1
- data/src/core/lib/uri/uri_parser.h +3 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -0
- data/src/core/tsi/alts/crypt/gsec.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +3 -3
- data/src/core/tsi/alts/frame_protector/frame_handler.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +3 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +3 -3
- data/src/core/tsi/fake_transport_security.h +3 -3
- data/src/core/tsi/local_transport_security.h +3 -3
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -3
- data/src/core/tsi/ssl_transport_security.cc +113 -24
- data/src/core/tsi/ssl_transport_security.h +5 -3
- data/src/core/tsi/ssl_transport_security_utils.h +3 -3
- data/src/core/tsi/ssl_types.h +3 -3
- data/src/core/tsi/transport_security.h +3 -3
- data/src/core/tsi/transport_security_grpc.h +3 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +0 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +56 -57
- data/third_party/abseil-cpp/absl/base/attributes.h +39 -19
- data/third_party/abseil-cpp/absl/base/config.h +44 -3
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +3 -18
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +10 -6
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +23 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +2 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -10
- data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -40
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/third_party/abseil-cpp/absl/base/macros.h +4 -21
- data/third_party/abseil-cpp/absl/base/optimization.h +58 -6
- data/third_party/abseil-cpp/absl/base/options.h +1 -7
- data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -5
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -7
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +66 -18
- data/third_party/abseil-cpp/absl/container/internal/common.h +3 -3
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +13 -1
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +50 -5
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +14 -46
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +110 -32
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +155 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +661 -341
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -13
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -9
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +40 -85
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +33 -8
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +118 -94
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +5 -2
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +47 -26
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +18 -4
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
- data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
- data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -3
- data/third_party/abseil-cpp/absl/numeric/int128.cc +10 -8
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +14 -6
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +2 -23
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +9 -9
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +2 -2
- data/third_party/abseil-cpp/absl/random/random.h +6 -6
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -0
- data/third_party/abseil-cpp/absl/status/status.cc +19 -12
- data/third_party/abseil-cpp/absl/status/status.h +2 -2
- data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
- data/third_party/abseil-cpp/absl/strings/cord.cc +92 -40
- data/third_party/abseil-cpp/absl/strings/cord.h +71 -80
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +8 -5
- data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
- data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +326 -70
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +8 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +26 -14
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +9 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +8 -5
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +12 -10
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
- data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
- data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +126 -29
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +4 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +49 -287
- data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +10 -101
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +34 -31
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
- data/third_party/abseil-cpp/absl/strings/str_cat.h +50 -3
- data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
- data/third_party/abseil-cpp/absl/strings/string_view.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -10
- data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +46 -20
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +104 -55
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +85 -46
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
- data/third_party/abseil-cpp/absl/synchronization/notification.h +0 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
- data/third_party/abseil-cpp/absl/time/duration.cc +7 -7
- data/third_party/abseil-cpp/absl/time/format.cc +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
- data/third_party/abseil-cpp/absl/time/time.cc +2 -2
- data/third_party/abseil-cpp/absl/time/time.h +253 -158
- data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
- data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
- data/third_party/abseil-cpp/absl/types/span.h +29 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
- metadata +73 -8
- data/src/core/lib/event_engine/socket_notifier.h +0 -55
- data/src/core/lib/promise/for_each.h +0 -155
- data/src/core/lib/promise/map_pipe.h +0 -88
- data/src/core/lib/promise/try_concurrently.h +0 -342
@@ -26,34 +26,68 @@
|
|
26
26
|
#include <grpc/event_engine/memory_allocator.h>
|
27
27
|
#include <grpc/event_engine/slice_buffer.h>
|
28
28
|
|
29
|
+
#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
|
30
|
+
#include "src/core/lib/event_engine/common_closures.h"
|
31
|
+
#include "src/core/lib/event_engine/executor/executor.h"
|
29
32
|
#include "src/core/lib/event_engine/handle_containers.h"
|
30
33
|
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
|
34
|
+
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
31
35
|
#include "src/core/lib/event_engine/trace.h"
|
32
36
|
#include "src/core/lib/event_engine/utils.h"
|
33
37
|
#include "src/core/lib/event_engine/windows/iocp.h"
|
38
|
+
#include "src/core/lib/event_engine/windows/windows_endpoint.h"
|
34
39
|
#include "src/core/lib/event_engine/windows/windows_engine.h"
|
35
40
|
#include "src/core/lib/gprpp/crash.h"
|
36
41
|
#include "src/core/lib/gprpp/sync.h"
|
37
42
|
#include "src/core/lib/gprpp/time.h"
|
43
|
+
#include "src/core/lib/iomgr/error.h"
|
38
44
|
|
39
45
|
namespace grpc_event_engine {
|
40
46
|
namespace experimental {
|
41
47
|
|
48
|
+
// ---- IOCPWorkClosure ----
|
49
|
+
|
50
|
+
WindowsEventEngine::IOCPWorkClosure::IOCPWorkClosure(Executor* executor,
|
51
|
+
IOCP* iocp)
|
52
|
+
: executor_(executor), iocp_(iocp) {
|
53
|
+
executor_->Run(this);
|
54
|
+
}
|
55
|
+
|
56
|
+
void WindowsEventEngine::IOCPWorkClosure::Run() {
|
57
|
+
auto result = iocp_->Work(std::chrono::seconds(60), [this] {
|
58
|
+
workers_.fetch_add(1);
|
59
|
+
executor_->Run(this);
|
60
|
+
});
|
61
|
+
if (result == Poller::WorkResult::kDeadlineExceeded) {
|
62
|
+
// iocp received no messages. restart the worker
|
63
|
+
workers_.fetch_add(1);
|
64
|
+
executor_->Run(this);
|
65
|
+
}
|
66
|
+
if (workers_.fetch_sub(1) == 1) done_signal_.Notify();
|
67
|
+
}
|
68
|
+
|
69
|
+
void WindowsEventEngine::IOCPWorkClosure::WaitForShutdown() {
|
70
|
+
done_signal_.WaitForNotification();
|
71
|
+
}
|
72
|
+
|
73
|
+
// ---- WindowsEventEngine ----
|
74
|
+
|
42
75
|
// TODO(hork): The iomgr timer and execution engine can be reused. It should
|
43
76
|
// be separated out from the posix_engine and instantiated as components. It is
|
44
77
|
// effectively copied below.
|
45
78
|
|
46
|
-
struct WindowsEventEngine::
|
79
|
+
struct WindowsEventEngine::TimerClosure final : public EventEngine::Closure {
|
47
80
|
absl::AnyInvocable<void()> cb;
|
48
81
|
Timer timer;
|
49
82
|
WindowsEventEngine* engine;
|
50
83
|
EventEngine::TaskHandle handle;
|
51
84
|
|
52
85
|
void Run() override {
|
53
|
-
GRPC_EVENT_ENGINE_TRACE(
|
54
|
-
|
86
|
+
GRPC_EVENT_ENGINE_TRACE(
|
87
|
+
"WindowsEventEngine:%p executing callback:%s", engine,
|
88
|
+
HandleToString<EventEngine::TaskHandle>(handle).c_str());
|
55
89
|
{
|
56
|
-
grpc_core::MutexLock lock(&engine->
|
90
|
+
grpc_core::MutexLock lock(&engine->task_mu_);
|
57
91
|
engine->known_handles_.erase(handle);
|
58
92
|
}
|
59
93
|
cb();
|
@@ -64,7 +98,8 @@ struct WindowsEventEngine::Closure final : public EventEngine::Closure {
|
|
64
98
|
WindowsEventEngine::WindowsEventEngine()
|
65
99
|
: executor_(std::make_shared<ThreadPool>()),
|
66
100
|
iocp_(executor_.get()),
|
67
|
-
timer_manager_(executor_)
|
101
|
+
timer_manager_(executor_),
|
102
|
+
iocp_worker_(executor_.get(), &iocp_) {
|
68
103
|
WSADATA wsaData;
|
69
104
|
int status = WSAStartup(MAKEWORD(2, 0), &wsaData);
|
70
105
|
GPR_ASSERT(status == 0);
|
@@ -72,25 +107,31 @@ WindowsEventEngine::WindowsEventEngine()
|
|
72
107
|
|
73
108
|
WindowsEventEngine::~WindowsEventEngine() {
|
74
109
|
{
|
75
|
-
grpc_core::MutexLock lock(&
|
110
|
+
grpc_core::MutexLock lock(&task_mu_);
|
76
111
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
|
77
112
|
for (auto handle : known_handles_) {
|
78
113
|
gpr_log(GPR_ERROR,
|
79
114
|
"WindowsEventEngine:%p uncleared TaskHandle at shutdown:%s",
|
80
|
-
this, HandleToString(handle).c_str());
|
115
|
+
this, HandleToString<EventEngine::TaskHandle>(handle).c_str());
|
81
116
|
}
|
82
117
|
}
|
83
118
|
GPR_ASSERT(GPR_LIKELY(known_handles_.empty()));
|
84
|
-
GPR_ASSERT(WSACleanup() == 0);
|
85
|
-
timer_manager_.Shutdown();
|
86
119
|
}
|
120
|
+
iocp_.Kick();
|
121
|
+
iocp_worker_.WaitForShutdown();
|
122
|
+
iocp_.Shutdown();
|
123
|
+
GPR_ASSERT(WSACleanup() == 0);
|
124
|
+
timer_manager_.Shutdown();
|
87
125
|
executor_->Quiesce();
|
88
126
|
}
|
89
127
|
|
90
128
|
bool WindowsEventEngine::Cancel(EventEngine::TaskHandle handle) {
|
91
|
-
grpc_core::MutexLock lock(&
|
129
|
+
grpc_core::MutexLock lock(&task_mu_);
|
92
130
|
if (!known_handles_.contains(handle)) return false;
|
93
|
-
|
131
|
+
GRPC_EVENT_ENGINE_TRACE(
|
132
|
+
"WindowsEventEngine::%p cancelling %s", this,
|
133
|
+
HandleToString<EventEngine::TaskHandle>(handle).c_str());
|
134
|
+
auto* cd = reinterpret_cast<TimerClosure*>(handle.keys[0]);
|
94
135
|
bool r = timer_manager_.TimerCancel(&cd->timer);
|
95
136
|
known_handles_.erase(handle);
|
96
137
|
if (r) delete cd;
|
@@ -118,16 +159,17 @@ void WindowsEventEngine::Run(EventEngine::Closure* closure) {
|
|
118
159
|
EventEngine::TaskHandle WindowsEventEngine::RunAfterInternal(
|
119
160
|
Duration when, absl::AnyInvocable<void()> cb) {
|
120
161
|
auto when_ts = ToTimestamp(timer_manager_.Now(), when);
|
121
|
-
auto* cd = new
|
162
|
+
auto* cd = new TimerClosure;
|
122
163
|
cd->cb = std::move(cb);
|
123
164
|
cd->engine = this;
|
124
165
|
EventEngine::TaskHandle handle{reinterpret_cast<intptr_t>(cd),
|
125
166
|
aba_token_.fetch_add(1)};
|
126
|
-
grpc_core::MutexLock lock(&
|
167
|
+
grpc_core::MutexLock lock(&task_mu_);
|
127
168
|
known_handles_.insert(handle);
|
128
169
|
cd->handle = handle;
|
129
|
-
GRPC_EVENT_ENGINE_TRACE(
|
130
|
-
|
170
|
+
GRPC_EVENT_ENGINE_TRACE(
|
171
|
+
"WindowsEventEngine:%p scheduling callback:%s", this,
|
172
|
+
HandleToString<EventEngine::TaskHandle>(handle).c_str());
|
131
173
|
timer_manager_.TimerInit(&cd->timer, when_ts, cd);
|
132
174
|
return handle;
|
133
175
|
}
|
@@ -139,15 +181,196 @@ std::unique_ptr<EventEngine::DNSResolver> WindowsEventEngine::GetDNSResolver(
|
|
139
181
|
|
140
182
|
bool WindowsEventEngine::IsWorkerThread() { grpc_core::Crash("unimplemented"); }
|
141
183
|
|
142
|
-
|
143
|
-
|
184
|
+
void WindowsEventEngine::OnConnectCompleted(
|
185
|
+
std::shared_ptr<ConnectionState> state) {
|
186
|
+
absl::StatusOr<std::unique_ptr<WindowsEndpoint>> endpoint;
|
187
|
+
{
|
188
|
+
// Connection attempt complete!
|
189
|
+
grpc_core::MutexLock lock(&state->mu);
|
190
|
+
state->on_connected = nullptr;
|
191
|
+
{
|
192
|
+
grpc_core::MutexLock handle_lock(&connection_mu_);
|
193
|
+
known_connection_handles_.erase(state->connection_handle);
|
194
|
+
}
|
195
|
+
const auto& overlapped_result = state->socket->write_info()->result();
|
196
|
+
// return early if we cannot cancel the connection timeout timer.
|
197
|
+
if (!Cancel(state->timer_handle)) return;
|
198
|
+
if (overlapped_result.wsa_error != 0) {
|
199
|
+
state->socket->Shutdown(DEBUG_LOCATION, "ConnectEx failure");
|
200
|
+
endpoint = GRPC_WSA_ERROR(overlapped_result.wsa_error, "ConnectEx");
|
201
|
+
} else {
|
202
|
+
// This code should be running in an executor thread already, so the
|
203
|
+
// callback can be run directly.
|
204
|
+
ChannelArgsEndpointConfig cfg;
|
205
|
+
endpoint = std::make_unique<WindowsEndpoint>(
|
206
|
+
state->address, std::move(state->socket), std::move(state->allocator),
|
207
|
+
cfg, executor_.get());
|
208
|
+
}
|
209
|
+
}
|
210
|
+
state->on_connected_user_callback(std::move(endpoint));
|
144
211
|
}
|
145
212
|
|
146
213
|
EventEngine::ConnectionHandle WindowsEventEngine::Connect(
|
147
214
|
OnConnectCallback on_connect, const ResolvedAddress& addr,
|
148
|
-
const EndpointConfig& args
|
149
|
-
Duration
|
150
|
-
|
215
|
+
const EndpointConfig& /* args */, MemoryAllocator memory_allocator,
|
216
|
+
Duration timeout) {
|
217
|
+
// TODO(hork): utilize the endpoint config
|
218
|
+
absl::Status status;
|
219
|
+
int istatus;
|
220
|
+
auto uri = ResolvedAddressToURI(addr);
|
221
|
+
if (!uri.ok()) {
|
222
|
+
Run([on_connect = std::move(on_connect), status = uri.status()]() mutable {
|
223
|
+
on_connect(status);
|
224
|
+
});
|
225
|
+
return EventEngine::kInvalidConnectionHandle;
|
226
|
+
}
|
227
|
+
GRPC_EVENT_ENGINE_TRACE("EventEngine::%p connecting to %s", this,
|
228
|
+
uri->c_str());
|
229
|
+
// Use dualstack sockets where available.
|
230
|
+
ResolvedAddress address = addr;
|
231
|
+
ResolvedAddress addr6_v4mapped;
|
232
|
+
if (ResolvedAddressToV4Mapped(addr, &addr6_v4mapped)) {
|
233
|
+
address = addr6_v4mapped;
|
234
|
+
}
|
235
|
+
SOCKET sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, nullptr, 0,
|
236
|
+
IOCP::GetDefaultSocketFlags());
|
237
|
+
if (sock == INVALID_SOCKET) {
|
238
|
+
Run([on_connect = std::move(on_connect),
|
239
|
+
status = GRPC_WSA_ERROR(WSAGetLastError(), "WSASocket")]() mutable {
|
240
|
+
on_connect(status);
|
241
|
+
});
|
242
|
+
return EventEngine::kInvalidConnectionHandle;
|
243
|
+
}
|
244
|
+
status = PrepareSocket(sock);
|
245
|
+
if (!status.ok()) {
|
246
|
+
Run([on_connect = std::move(on_connect), status]() mutable {
|
247
|
+
on_connect(status);
|
248
|
+
});
|
249
|
+
return EventEngine::kInvalidConnectionHandle;
|
250
|
+
}
|
251
|
+
// Grab the function pointer for ConnectEx for that specific socket It may
|
252
|
+
// change depending on the interface.
|
253
|
+
LPFN_CONNECTEX ConnectEx;
|
254
|
+
GUID guid = WSAID_CONNECTEX;
|
255
|
+
DWORD ioctl_num_bytes;
|
256
|
+
istatus = WSAIoctl(sock, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid,
|
257
|
+
sizeof(guid), &ConnectEx, sizeof(ConnectEx),
|
258
|
+
&ioctl_num_bytes, nullptr, nullptr);
|
259
|
+
if (istatus != 0) {
|
260
|
+
Run([on_connect = std::move(on_connect),
|
261
|
+
status = GRPC_WSA_ERROR(
|
262
|
+
WSAGetLastError(),
|
263
|
+
"WSAIoctl(SIO_GET_EXTENSION_FUNCTION_POINTER)")]() mutable {
|
264
|
+
on_connect(status);
|
265
|
+
});
|
266
|
+
return EventEngine::kInvalidConnectionHandle;
|
267
|
+
}
|
268
|
+
// bind the local address
|
269
|
+
auto local_address = ResolvedAddressMakeWild6(0);
|
270
|
+
istatus = bind(sock, local_address.address(), local_address.size());
|
271
|
+
if (istatus != 0) {
|
272
|
+
Run([on_connect = std::move(on_connect),
|
273
|
+
status = GRPC_WSA_ERROR(WSAGetLastError(), "bind")]() mutable {
|
274
|
+
on_connect(status);
|
275
|
+
});
|
276
|
+
return EventEngine::kInvalidConnectionHandle;
|
277
|
+
}
|
278
|
+
// Connect
|
279
|
+
auto watched_socket = iocp_.Watch(sock);
|
280
|
+
auto* info = watched_socket->write_info();
|
281
|
+
bool success =
|
282
|
+
ConnectEx(watched_socket->raw_socket(), address.address(), address.size(),
|
283
|
+
nullptr, 0, nullptr, info->overlapped());
|
284
|
+
// It wouldn't be unusual to get a success immediately. But we'll still get an
|
285
|
+
// IOCP notification, so let's ignore it.
|
286
|
+
if (!success) {
|
287
|
+
int last_error = WSAGetLastError();
|
288
|
+
if (last_error != ERROR_IO_PENDING) {
|
289
|
+
Run([on_connect = std::move(on_connect),
|
290
|
+
status = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx")]() mutable {
|
291
|
+
on_connect(status);
|
292
|
+
});
|
293
|
+
watched_socket->Shutdown(DEBUG_LOCATION, "ConnectEx");
|
294
|
+
return EventEngine::kInvalidConnectionHandle;
|
295
|
+
}
|
296
|
+
}
|
297
|
+
GPR_ASSERT(watched_socket != nullptr);
|
298
|
+
auto connection_state = std::make_shared<ConnectionState>();
|
299
|
+
grpc_core::MutexLock lock(&connection_state->mu);
|
300
|
+
connection_state->address = address;
|
301
|
+
connection_state->socket = std::move(watched_socket);
|
302
|
+
connection_state->on_connected_user_callback = std::move(on_connect);
|
303
|
+
connection_state->allocator = std::move(memory_allocator);
|
304
|
+
connection_state->on_connected =
|
305
|
+
SelfDeletingClosure::Create([this, connection_state]() mutable {
|
306
|
+
OnConnectCompleted(std::move(connection_state));
|
307
|
+
});
|
308
|
+
{
|
309
|
+
grpc_core::MutexLock conn_lock(&connection_mu_);
|
310
|
+
connection_state->connection_handle =
|
311
|
+
ConnectionHandle{reinterpret_cast<intptr_t>(connection_state.get()),
|
312
|
+
aba_token_.fetch_add(1)};
|
313
|
+
known_connection_handles_.insert(connection_state->connection_handle);
|
314
|
+
}
|
315
|
+
connection_state->timer_handle =
|
316
|
+
RunAfter(timeout, [this, connection_state]() {
|
317
|
+
grpc_core::MutexLock lock(&connection_state->mu);
|
318
|
+
if (CancelConnectFromDeadlineTimer(connection_state.get())) {
|
319
|
+
connection_state->on_connected_user_callback(
|
320
|
+
absl::DeadlineExceededError("Connection timed out"));
|
321
|
+
}
|
322
|
+
// else: The connection attempt could not be canceled. We can assume the
|
323
|
+
// connection callback will be called.
|
324
|
+
});
|
325
|
+
connection_state->socket->NotifyOnWrite(connection_state->on_connected);
|
326
|
+
return connection_state->connection_handle;
|
327
|
+
}
|
328
|
+
|
329
|
+
bool WindowsEventEngine::CancelConnect(EventEngine::ConnectionHandle handle) {
|
330
|
+
if (TaskHandleComparator<ConnectionHandle>::Eq()(
|
331
|
+
handle, EventEngine::kInvalidConnectionHandle)) {
|
332
|
+
GRPC_EVENT_ENGINE_TRACE("%s",
|
333
|
+
"Attempted to cancel an invalid connection handle");
|
334
|
+
return false;
|
335
|
+
}
|
336
|
+
// Erase the connection handle, which may be unknown
|
337
|
+
{
|
338
|
+
grpc_core::MutexLock lock(&connection_mu_);
|
339
|
+
if (!known_connection_handles_.contains(handle)) {
|
340
|
+
GRPC_EVENT_ENGINE_TRACE(
|
341
|
+
"Unknown connection handle: %s",
|
342
|
+
HandleToString<EventEngine::ConnectionHandle>(handle).c_str());
|
343
|
+
return false;
|
344
|
+
}
|
345
|
+
known_connection_handles_.erase(handle);
|
346
|
+
}
|
347
|
+
auto* connection_state = reinterpret_cast<ConnectionState*>(handle.keys[0]);
|
348
|
+
grpc_core::MutexLock state_lock(&connection_state->mu);
|
349
|
+
if (!Cancel(connection_state->timer_handle)) return false;
|
350
|
+
return CancelConnectInternalStateLocked(connection_state);
|
351
|
+
}
|
352
|
+
|
353
|
+
bool WindowsEventEngine::CancelConnectFromDeadlineTimer(
|
354
|
+
ConnectionState* connection_state) {
|
355
|
+
// Erase the connection handle, which is guaranteed to exist.
|
356
|
+
{
|
357
|
+
grpc_core::MutexLock lock(&connection_mu_);
|
358
|
+
GPR_ASSERT(known_connection_handles_.erase(
|
359
|
+
connection_state->connection_handle) == 1);
|
360
|
+
}
|
361
|
+
return CancelConnectInternalStateLocked(connection_state);
|
362
|
+
}
|
363
|
+
|
364
|
+
bool WindowsEventEngine::CancelConnectInternalStateLocked(
|
365
|
+
ConnectionState* connection_state) {
|
366
|
+
connection_state->socket->Shutdown(DEBUG_LOCATION, "CancelConnect");
|
367
|
+
// Release the connection_state shared_ptr. connection_state is now invalid.
|
368
|
+
delete connection_state->on_connected;
|
369
|
+
GRPC_EVENT_ENGINE_TRACE("Successfully cancelled connection %s",
|
370
|
+
HandleToString<EventEngine::ConnectionHandle>(
|
371
|
+
connection_state->connection_handle)
|
372
|
+
.c_str());
|
373
|
+
return true;
|
151
374
|
}
|
152
375
|
|
153
376
|
absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
|
@@ -11,8 +11,8 @@
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
|
-
#ifndef
|
15
|
-
#define
|
14
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
15
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
16
16
|
#include <grpc/support/port_platform.h>
|
17
17
|
|
18
18
|
#ifdef GPR_WINDOWS
|
@@ -32,6 +32,7 @@
|
|
32
32
|
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
|
33
33
|
#include "src/core/lib/event_engine/thread_pool.h"
|
34
34
|
#include "src/core/lib/event_engine/windows/iocp.h"
|
35
|
+
#include "src/core/lib/event_engine/windows/windows_endpoint.h"
|
35
36
|
#include "src/core/lib/gprpp/sync.h"
|
36
37
|
#include "src/core/lib/gprpp/time.h"
|
37
38
|
#include "src/core/lib/surface/init_internally.h"
|
@@ -40,26 +41,10 @@ namespace grpc_event_engine {
|
|
40
41
|
namespace experimental {
|
41
42
|
|
42
43
|
// TODO(ctiller): KeepsGrpcInitialized is an interim measure to ensure that
|
43
|
-
//
|
44
|
+
// EventEngine is shut down before we shut down iomgr.
|
44
45
|
class WindowsEventEngine : public EventEngine,
|
45
46
|
public grpc_core::KeepsGrpcInitialized {
|
46
47
|
public:
|
47
|
-
class WindowsEndpoint : public EventEngine::Endpoint {
|
48
|
-
public:
|
49
|
-
~WindowsEndpoint() override;
|
50
|
-
void Read(absl::AnyInvocable<void(absl::Status)> on_read,
|
51
|
-
SliceBuffer* buffer, const ReadArgs* args) override;
|
52
|
-
void Write(absl::AnyInvocable<void(absl::Status)> on_writable,
|
53
|
-
SliceBuffer* data, const WriteArgs* args) override;
|
54
|
-
const ResolvedAddress& GetPeerAddress() const override;
|
55
|
-
const ResolvedAddress& GetLocalAddress() const override;
|
56
|
-
};
|
57
|
-
class WindowsListener : public EventEngine::Listener {
|
58
|
-
public:
|
59
|
-
~WindowsListener() override;
|
60
|
-
absl::StatusOr<int> Bind(const ResolvedAddress& addr) override;
|
61
|
-
absl::Status Start() override;
|
62
|
-
};
|
63
48
|
class WindowsDNSResolver : public EventEngine::DNSResolver {
|
64
49
|
public:
|
65
50
|
~WindowsDNSResolver() override;
|
@@ -103,17 +88,71 @@ class WindowsEventEngine : public EventEngine,
|
|
103
88
|
absl::AnyInvocable<void()> closure) override;
|
104
89
|
bool Cancel(TaskHandle handle) override;
|
105
90
|
|
91
|
+
// Retrieve the base executor.
|
92
|
+
// This is public because most classes that know the concrete
|
93
|
+
// WindowsEventEngine type are effectively friends.
|
94
|
+
// Not intended for external use.
|
95
|
+
Executor* executor() { return executor_.get(); }
|
96
|
+
|
106
97
|
private:
|
107
|
-
|
98
|
+
// State of an active connection.
|
99
|
+
// Managed by a shared_ptr, owned exclusively by the timeout callback and the
|
100
|
+
// OnConnectCompleted callback herein.
|
101
|
+
struct ConnectionState {
|
102
|
+
// everything is guarded by mu;
|
103
|
+
grpc_core::Mutex mu
|
104
|
+
ABSL_ACQUIRED_BEFORE(WindowsEventEngine::connection_mu_);
|
105
|
+
EventEngine::ConnectionHandle connection_handle ABSL_GUARDED_BY(mu);
|
106
|
+
EventEngine::TaskHandle timer_handle ABSL_GUARDED_BY(mu);
|
107
|
+
EventEngine::OnConnectCallback on_connected_user_callback
|
108
|
+
ABSL_GUARDED_BY(mu);
|
109
|
+
EventEngine::Closure* on_connected ABSL_GUARDED_BY(mu);
|
110
|
+
std::unique_ptr<WinSocket> socket ABSL_GUARDED_BY(mu);
|
111
|
+
EventEngine::ResolvedAddress address ABSL_GUARDED_BY(mu);
|
112
|
+
MemoryAllocator allocator ABSL_GUARDED_BY(mu);
|
113
|
+
};
|
114
|
+
|
115
|
+
// A poll worker which schedules itself unless kicked
|
116
|
+
class IOCPWorkClosure : public EventEngine::Closure {
|
117
|
+
public:
|
118
|
+
explicit IOCPWorkClosure(Executor* executor, IOCP* iocp);
|
119
|
+
void Run() override;
|
120
|
+
void WaitForShutdown();
|
121
|
+
|
122
|
+
private:
|
123
|
+
std::atomic<int> workers_{1};
|
124
|
+
grpc_core::Notification done_signal_;
|
125
|
+
Executor* executor_;
|
126
|
+
IOCP* iocp_;
|
127
|
+
};
|
128
|
+
|
129
|
+
void OnConnectCompleted(std::shared_ptr<ConnectionState> state);
|
130
|
+
|
131
|
+
// CancelConnect called from within the deadline timer.
|
132
|
+
// In this case, the connection_state->mu is already locked, and timer
|
133
|
+
// cancellation is not possible.
|
134
|
+
bool CancelConnectFromDeadlineTimer(ConnectionState* connection_state)
|
135
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(connection_state->mu);
|
136
|
+
|
137
|
+
// Completes the connection cancellation logic after checking handle validity
|
138
|
+
// and optionally cancelling deadline timers.
|
139
|
+
bool CancelConnectInternalStateLocked(ConnectionState* connection_state)
|
140
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(connection_state->mu);
|
141
|
+
|
142
|
+
class TimerClosure;
|
108
143
|
EventEngine::TaskHandle RunAfterInternal(Duration when,
|
109
144
|
absl::AnyInvocable<void()> cb);
|
110
|
-
grpc_core::Mutex
|
111
|
-
TaskHandleSet known_handles_ ABSL_GUARDED_BY(
|
145
|
+
grpc_core::Mutex task_mu_;
|
146
|
+
TaskHandleSet known_handles_ ABSL_GUARDED_BY(task_mu_);
|
147
|
+
grpc_core::Mutex connection_mu_ ABSL_ACQUIRED_AFTER(ConnectionState::mu);
|
148
|
+
grpc_core::CondVar connection_cv_;
|
149
|
+
ConnectionHandleSet known_connection_handles_ ABSL_GUARDED_BY(connection_mu_);
|
112
150
|
std::atomic<intptr_t> aba_token_{0};
|
113
151
|
|
114
152
|
std::shared_ptr<ThreadPool> executor_;
|
115
153
|
IOCP iocp_;
|
116
154
|
TimerManager timer_manager_;
|
155
|
+
IOCPWorkClosure iocp_worker_;
|
117
156
|
};
|
118
157
|
|
119
158
|
} // namespace experimental
|
@@ -121,4 +160,4 @@ class WindowsEventEngine : public EventEngine,
|
|
121
160
|
|
122
161
|
#endif
|
123
162
|
|
124
|
-
#endif //
|
163
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
|
@@ -30,10 +30,12 @@
|
|
30
30
|
#include <grpc/support/log.h>
|
31
31
|
|
32
32
|
#include "src/core/lib/experiments/experiments.h"
|
33
|
+
#include "src/core/lib/gprpp/crash.h" // IWYU pragma: keep
|
33
34
|
#include "src/core/lib/gprpp/global_config.h"
|
34
35
|
#include "src/core/lib/gprpp/memory.h"
|
35
36
|
#include "src/core/lib/gprpp/no_destruct.h"
|
36
37
|
|
38
|
+
#ifndef GRPC_EXPERIMENTS_ARE_FINAL
|
37
39
|
GPR_GLOBAL_CONFIG_DEFINE_STRING(
|
38
40
|
grpc_experiments, "",
|
39
41
|
"List of grpc experiments to enable (or with a '-' prefix to disable).");
|
@@ -58,7 +60,11 @@ GPR_ATTRIBUTE_NOINLINE Experiments LoadExperimentsFromConfigVariable() {
|
|
58
60
|
// Set defaults from metadata.
|
59
61
|
Experiments experiments;
|
60
62
|
for (size_t i = 0; i < kNumExperiments; i++) {
|
61
|
-
|
63
|
+
if (!g_forced_experiments[i].forced) {
|
64
|
+
experiments.enabled[i] = g_experiment_metadata[i].default_value;
|
65
|
+
} else {
|
66
|
+
experiments.enabled[i] = g_forced_experiments[i].value;
|
67
|
+
}
|
62
68
|
}
|
63
69
|
// Get the global config.
|
64
70
|
auto experiments_str = GPR_GLOBAL_CONFIG_GET(grpc_experiments);
|
@@ -144,3 +150,12 @@ void ForceEnableExperiment(absl::string_view experiment, bool enable) {
|
|
144
150
|
}
|
145
151
|
|
146
152
|
} // namespace grpc_core
|
153
|
+
#else
|
154
|
+
namespace grpc_core {
|
155
|
+
void PrintExperimentsList() {}
|
156
|
+
void ForceEnableExperiment(absl::string_view experiment_name, bool) {
|
157
|
+
Crash(absl::StrCat("ForceEnableExperiment(\"", experiment_name,
|
158
|
+
"\") called in final build"));
|
159
|
+
}
|
160
|
+
} // namespace grpc_core
|
161
|
+
#endif
|
@@ -12,8 +12,8 @@
|
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
14
|
|
15
|
-
#ifndef
|
16
|
-
#define
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_EXPERIMENTS_CONFIG_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_EXPERIMENTS_CONFIG_H
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
@@ -21,12 +21,16 @@
|
|
21
21
|
|
22
22
|
#include "absl/strings/string_view.h"
|
23
23
|
|
24
|
+
// #define GRPC_EXPERIMENTS_ARE_FINAL
|
25
|
+
|
24
26
|
namespace grpc_core {
|
25
27
|
|
28
|
+
#ifndef GRPC_EXPERIMENTS_ARE_FINAL
|
26
29
|
// Return true if experiment \a experiment_id is enabled.
|
27
30
|
// Experiments are numbered by their order in the g_experiment_metadata array
|
28
31
|
// declared in experiments.h.
|
29
32
|
bool IsExperimentEnabled(size_t experiment_id);
|
33
|
+
#endif
|
30
34
|
|
31
35
|
// Print out a list of all experiments that are built into this binary.
|
32
36
|
void PrintExperimentsList();
|
@@ -38,6 +42,12 @@ void PrintExperimentsList();
|
|
38
42
|
// If this is called twice for the same experiment, both calls must agree.
|
39
43
|
void ForceEnableExperiment(absl::string_view experiment_name, bool enable);
|
40
44
|
|
45
|
+
struct ExperimentMetadata {
|
46
|
+
const char* name;
|
47
|
+
const char* description;
|
48
|
+
bool default_value;
|
49
|
+
};
|
50
|
+
|
41
51
|
} // namespace grpc_core
|
42
52
|
|
43
|
-
#endif //
|
53
|
+
#endif // GRPC_SRC_CORE_LIB_EXPERIMENTS_CONFIG_H
|
@@ -18,15 +18,13 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/experiments/experiments.h"
|
20
20
|
|
21
|
+
#ifndef GRPC_EXPERIMENTS_ARE_FINAL
|
21
22
|
namespace {
|
22
23
|
const char* const description_tcp_frame_size_tuning =
|
23
24
|
"If set, enables TCP to use RPC size estimation made by higher layers. TCP "
|
24
25
|
"would not indicate completion of a read operation until a specified "
|
25
26
|
"number of bytes have been read over the socket. Buffers are also "
|
26
27
|
"allocated according to estimated RPC sizes.";
|
27
|
-
const char* const description_tcp_read_chunks =
|
28
|
-
"Allocate only 8kb or 64kb chunks for TCP reads to reduce pressure on "
|
29
|
-
"malloc to recycle arbitrary large blocks.";
|
30
28
|
const char* const description_tcp_rcv_lowat =
|
31
29
|
"Use SO_RCVLOWAT to avoid wakeups on the read path.";
|
32
30
|
const char* const description_peer_state_based_framing =
|
@@ -39,9 +37,6 @@ const char* const description_memory_pressure_controller =
|
|
39
37
|
"New memory pressure controller";
|
40
38
|
const char* const description_unconstrained_max_quota_buffer_size =
|
41
39
|
"Discard the cap on the max free pool size for one memory allocator";
|
42
|
-
const char* const description_new_hpack_huffman_decoder =
|
43
|
-
"New HPACK huffman decoder - should be much faster than the existing "
|
44
|
-
"implementation.";
|
45
40
|
const char* const description_event_engine_client =
|
46
41
|
"Use EventEngine clients instead of iomgr's grpc_tcp_client";
|
47
42
|
const char* const description_monitoring_experiment =
|
@@ -51,13 +46,20 @@ const char* const description_promise_based_client_call =
|
|
51
46
|
"(ie when all filters in a stack are promise based)";
|
52
47
|
const char* const description_free_large_allocator =
|
53
48
|
"If set, return all free bytes from a \042big\042 allocator";
|
49
|
+
const char* const description_promise_based_server_call =
|
50
|
+
"If set, use the new gRPC promise based call code when it's appropriate "
|
51
|
+
"(ie when all filters in a stack are promise based)";
|
52
|
+
const char* const description_transport_supplies_client_latency =
|
53
|
+
"If set, use the transport represented value for client latency in "
|
54
|
+
"opencensus";
|
55
|
+
const char* const description_event_engine_listener =
|
56
|
+
"Use EventEngine listeners instead of iomgr's grpc_tcp_server";
|
54
57
|
} // namespace
|
55
58
|
|
56
59
|
namespace grpc_core {
|
57
60
|
|
58
61
|
const ExperimentMetadata g_experiment_metadata[] = {
|
59
62
|
{"tcp_frame_size_tuning", description_tcp_frame_size_tuning, false},
|
60
|
-
{"tcp_read_chunks", description_tcp_read_chunks, true},
|
61
63
|
{"tcp_rcv_lowat", description_tcp_rcv_lowat, false},
|
62
64
|
{"peer_state_based_framing", description_peer_state_based_framing, false},
|
63
65
|
{"flow_control_fixes", description_flow_control_fixes, true},
|
@@ -65,11 +67,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
|
|
65
67
|
false},
|
66
68
|
{"unconstrained_max_quota_buffer_size",
|
67
69
|
description_unconstrained_max_quota_buffer_size, false},
|
68
|
-
{"new_hpack_huffman_decoder", description_new_hpack_huffman_decoder, true},
|
69
70
|
{"event_engine_client", description_event_engine_client, false},
|
70
71
|
{"monitoring_experiment", description_monitoring_experiment, true},
|
71
72
|
{"promise_based_client_call", description_promise_based_client_call, false},
|
72
73
|
{"free_large_allocator", description_free_large_allocator, false},
|
74
|
+
{"promise_based_server_call", description_promise_based_server_call, false},
|
75
|
+
{"transport_supplies_client_latency",
|
76
|
+
description_transport_supplies_client_latency, false},
|
77
|
+
{"event_engine_listener", description_event_engine_listener, false},
|
73
78
|
};
|
74
79
|
|
75
80
|
} // namespace grpc_core
|
81
|
+
#endif
|