grpc 1.78.0 → 1.80.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +22 -8
- data/include/grpc/credentials.h +47 -37
- data/include/grpc/credentials_cpp.h +39 -0
- data/include/grpc/event_engine/event_engine.h +8 -3
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/impl/call.h +9 -0
- data/include/grpc/impl/channel_arg_names.h +7 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/private_key_signer.h +104 -0
- data/include/grpc/support/port_platform.h +6 -0
- data/src/core/call/call_filters.h +101 -78
- data/src/core/call/call_spine.h +91 -68
- data/src/core/call/call_state.h +60 -4
- data/src/core/call/client_call.cc +9 -9
- data/src/core/call/client_call.h +1 -1
- data/src/core/call/metadata_batch.cc +2 -0
- data/src/core/call/metadata_batch.h +48 -1
- data/src/core/call/metadata_info.cc +35 -0
- data/src/core/call/metadata_info.h +2 -0
- data/src/core/call/simple_slice_based_metadata.h +2 -1
- data/src/core/channelz/channelz.cc +9 -6
- data/src/core/channelz/channelz.h +7 -4
- data/src/core/channelz/property_list.h +5 -0
- data/src/core/channelz/v2tov1/convert.cc +1 -1
- data/src/core/channelz/v2tov1/legacy_api.cc +164 -307
- data/src/core/client_channel/buffered_call.cc +7 -3
- data/src/core/client_channel/buffered_call.h +11 -5
- data/src/core/client_channel/client_channel.cc +106 -44
- data/src/core/client_channel/client_channel.h +3 -6
- data/src/core/client_channel/client_channel_filter.cc +90 -64
- data/src/core/client_channel/client_channel_filter.h +3 -6
- data/src/core/client_channel/client_channel_internal.h +5 -0
- data/src/core/client_channel/config_selector.h +17 -12
- data/src/core/client_channel/dynamic_filters.cc +8 -7
- data/src/core/client_channel/dynamic_filters.h +7 -5
- data/src/core/client_channel/retry_filter.cc +1 -1
- data/src/core/client_channel/retry_filter.h +2 -2
- data/src/core/client_channel/subchannel.cc +1682 -266
- data/src/core/client_channel/subchannel.h +411 -134
- data/src/core/client_channel/subchannel_stream_client.cc +22 -18
- data/src/core/client_channel/subchannel_stream_client.h +8 -9
- data/src/core/client_channel/subchannel_stream_limiter.cc +76 -0
- data/src/core/client_channel/subchannel_stream_limiter.h +51 -0
- data/src/core/config/config_vars.cc +9 -1
- data/src/core/config/config_vars.h +6 -0
- data/src/core/credentials/call/call_creds_registry.h +51 -22
- data/src/core/credentials/call/call_creds_registry_init.cc +86 -2
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +2 -2
- data/src/core/credentials/call/external/external_account_credentials.cc +11 -4
- data/src/core/credentials/call/external/file_external_account_credentials.cc +2 -2
- data/src/core/credentials/transport/channel_creds_registry.h +71 -20
- data/src/core/credentials/transport/channel_creds_registry_init.cc +338 -29
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +43 -24
- data/src/core/credentials/transport/ssl/ssl_credentials.h +7 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +2 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +7 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +181 -109
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +55 -42
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +28 -23
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +26 -23
- data/src/core/credentials/transport/tls/spiffe_utils.cc +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +18 -18
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -10
- data/src/core/credentials/transport/tls/tls_security_connector.cc +106 -74
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -8
- data/src/core/credentials/transport/xds/xds_credentials.cc +76 -32
- data/src/core/credentials/transport/xds/xds_credentials.h +4 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +117 -35
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +42 -4
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +58 -29
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +19 -11
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +82 -25
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +28 -3
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +9 -7
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +7 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +117 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +2 -15
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/goaway.cc +17 -2
- data/src/core/ext/transport/chttp2/transport/goaway.h +27 -6
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -21
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +101 -40
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +95 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +923 -772
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +406 -423
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +8 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +25 -13
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +71 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +25 -49
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +29 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -2
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/keepalive.h +9 -6
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +34 -74
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +123 -79
- data/src/core/ext/transport/chttp2/transport/security_frame.h +233 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +152 -73
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +155 -85
- data/src/core/ext/transport/chttp2/transport/transport_common.h +0 -5
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +8 -7
- data/src/core/ext/transport/chttp2/transport/write_cycle.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +355 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +31 -29
- data/src/core/ext/upb-gen/cel/expr/checked.upb.h +1875 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +409 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +56 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +2223 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +489 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +60 -0
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +130 -18
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -13
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +70 -38
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +20 -17
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +495 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +114 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +121 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +54 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +143 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +18 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +112 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +22 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +276 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +60 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +72 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +23 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +129 -13
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +36 -10
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +31 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +63 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +12 -7
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +97 -81
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +40 -23
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +604 -228
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +146 -100
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +35 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +7 -4
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +66 -14
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +22 -11
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +87 -0
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +29 -2
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +20 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +5 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +239 -60
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +59 -28
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +89 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +50 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +135 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +53 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +105 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +51 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +6 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +206 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +41 -8
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +283 -14
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -11
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +144 -6
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +42 -21
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +9 -8
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +164 -1
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +37 -6
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +26 -11
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +33 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +14 -3
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +90 -10
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +18 -7
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c +248 -0
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h +97 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c +283 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h +107 -0
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +213 -211
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +635 -614
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1012 -1000
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +276 -273
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +149 -144
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +367 -370
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +297 -284
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +492 -469
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +74 -43
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +60 -59
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +202 -184
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +354 -339
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +28 -19
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +30 -27
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +94 -91
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +386 -369
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +60 -57
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +1974 -1884
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +119 -112
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +62 -51
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +109 -88
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +54 -36
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +78 -84
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +48 -46
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1041 -984
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +304 -290
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +94 -77
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +246 -193
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +37 -23
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +4 -5
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +113 -87
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +6 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +25 -30
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +14 -20
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +180 -183
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +56 -47
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +69 -47
- data/src/core/filter/filter_chain.h +95 -0
- data/src/core/handshaker/http_connect/{http_connect_handshaker.cc → http_connect_client_handshaker.cc} +32 -31
- data/src/core/handshaker/http_connect/{http_connect_handshaker.h → http_connect_client_handshaker.h} +4 -4
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +14 -13
- data/src/core/handshaker/security/secure_endpoint.cc +282 -68
- data/src/core/handshaker/security/secure_endpoint.h +0 -7
- data/src/core/lib/channel/channel_args.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +17 -4
- data/src/core/lib/channel/promise_based_filter.h +3 -2
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +35 -8
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -2
- data/src/core/lib/event_engine/event_engine.cc +9 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +24 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +141 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +19 -2
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +7 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +21 -3
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +16 -0
- data/src/core/lib/experiments/experiments.cc +309 -201
- data/src/core/lib/experiments/experiments.h +141 -80
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/resolve_address.h +0 -2
- data/src/core/lib/iomgr/resolved_address.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +13 -5
- data/src/core/lib/iomgr/tcp_server.cc +0 -5
- data/src/core/lib/iomgr/tcp_server.h +0 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +12 -51
- data/src/core/lib/promise/all_ok.h +17 -12
- data/src/core/lib/promise/cancel_callback.h +12 -13
- data/src/core/lib/promise/detail/join_state.h +626 -0
- data/src/core/lib/promise/detail/promise_factory.h +14 -14
- data/src/core/lib/promise/for_each.h +32 -8
- data/src/core/lib/promise/if.h +9 -7
- data/src/core/lib/promise/loop.h +18 -16
- data/src/core/lib/promise/map.h +54 -47
- data/src/core/lib/promise/mpsc.h +11 -10
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.h +25 -19
- data/src/core/lib/promise/poll.h +5 -5
- data/src/core/lib/promise/prioritized_race.h +10 -7
- data/src/core/lib/promise/promise.h +16 -11
- data/src/core/lib/promise/race.h +6 -5
- data/src/core/lib/promise/seq.h +109 -74
- data/src/core/lib/promise/try_join.h +14 -6
- data/src/core/lib/promise/try_seq.h +76 -60
- data/src/core/lib/resource_quota/api.cc +7 -0
- data/src/core/lib/resource_quota/arena.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +4 -1
- data/src/core/lib/resource_quota/resource_quota.cc +2 -1
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/resource_quota/stream_quota.cc +77 -1
- data/src/core/lib/resource_quota/stream_quota.h +64 -1
- data/src/core/lib/resource_quota/telemetry.h +1 -1
- data/src/core/lib/surface/call.cc +13 -0
- data/src/core/lib/surface/call_utils.h +58 -43
- data/src/core/lib/surface/channel.h +1 -4
- data/src/core/lib/surface/completion_queue.cc +13 -6
- data/src/core/lib/surface/validate_metadata.cc +20 -15
- data/src/core/lib/surface/validate_metadata.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +1 -1
- data/src/core/lib/transport/transport.h +5 -0
- data/src/core/load_balancing/health_check_client.cc +1 -15
- data/src/core/load_balancing/health_check_client_internal.h +0 -2
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/oob_backend_metric_internal.h +0 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +12 -9
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -2
- data/src/core/resolver/xds/xds_resolver.cc +162 -116
- data/src/core/server/server.cc +18 -1
- data/src/core/server/server.h +2 -0
- data/src/core/server/xds_server_config_fetcher.cc +4 -4
- data/src/core/telemetry/call_tracer.cc +87 -2
- data/src/core/telemetry/call_tracer.h +46 -8
- data/src/core/telemetry/instrument.cc +102 -40
- data/src/core/telemetry/instrument.h +246 -65
- data/src/core/tsi/fake_transport_security.cc +3 -1
- data/src/core/tsi/ssl_transport_security.cc +516 -137
- data/src/core/tsi/ssl_transport_security.h +28 -22
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
- data/src/core/tsi/ssl_transport_security_utils.h +2 -2
- data/src/core/util/bitset.h +6 -0
- data/src/core/util/function_signature.h +3 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
- data/src/core/util/json/json_reader.cc +0 -4
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -17
- data/src/core/xds/grpc/certificate_provider_store_interface.h +61 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +48 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +18 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -2
- data/src/core/xds/grpc/xds_certificate_provider.h +13 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +13 -6
- data/src/core/xds/grpc/xds_client_grpc.h +10 -7
- data/src/core/xds/grpc/xds_cluster.cc +18 -4
- data/src/core/xds/grpc/xds_cluster.h +17 -2
- data/src/core/xds/grpc/xds_cluster_parser.cc +36 -11
- data/src/core/xds/grpc/xds_common_types.cc +45 -0
- data/src/core/xds/grpc/xds_common_types.h +31 -0
- data/src/core/xds/grpc/xds_common_types_parser.cc +274 -16
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +128 -24
- data/src/core/xds/grpc/xds_http_fault_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_filter.cc +38 -0
- data/src/core/xds/grpc/xds_http_filter.h +70 -47
- data/src/core/xds/grpc/xds_http_filter_registry.cc +48 -14
- data/src/core/xds/grpc/xds_http_filter_registry.h +29 -15
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +88 -22
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +22 -11
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +36 -20
- data/src/core/xds/grpc/xds_http_rbac_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +143 -26
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -10
- data/src/core/xds/grpc/xds_listener.cc +4 -1
- data/src/core/xds/grpc/xds_listener.h +10 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +23 -18
- data/src/core/xds/grpc/xds_matcher.cc +40 -5
- data/src/core/xds/grpc/xds_matcher.h +13 -0
- data/src/core/xds/grpc/xds_matcher_action.h +1 -1
- data/src/core/xds/grpc/xds_matcher_parse.cc +60 -40
- data/src/core/xds/grpc/xds_matcher_parse.h +2 -1
- data/src/core/xds/grpc/xds_route_config.cc +12 -1
- data/src/core/xds/grpc/xds_route_config.h +15 -2
- data/src/core/xds/grpc/xds_route_config_parser.cc +11 -5
- data/src/core/xds/grpc/xds_routing.cc +181 -6
- data/src/core/xds/grpc/xds_routing.h +57 -0
- data/src/core/xds/grpc/xds_server_grpc.cc +55 -43
- data/src/core/xds/grpc/xds_server_grpc.h +13 -6
- data/src/core/xds/grpc/xds_server_grpc_interface.h +3 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +12 -6
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -12
- data/src/ruby/lib/grpc/grpc.rb +7 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
- data/src/ruby/spec/spec_helper.rb +1 -1
- metadata +64 -14
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
|
@@ -77,8 +77,7 @@ class DNSServiceResolver : public EventEngine::DNSResolver {
|
|
|
77
77
|
public:
|
|
78
78
|
explicit DNSServiceResolver(std::shared_ptr<CFEventEngine> engine)
|
|
79
79
|
: engine_(std::move(engine)),
|
|
80
|
-
impl_(grpc_core::MakeRefCounted<DNSServiceResolverImpl>(
|
|
81
|
-
std::move((engine_)))) {}
|
|
80
|
+
impl_(grpc_core::MakeRefCounted<DNSServiceResolverImpl>(engine_)) {}
|
|
82
81
|
|
|
83
82
|
~DNSServiceResolver() override { impl_->Shutdown(); }
|
|
84
83
|
|
|
@@ -12,8 +12,12 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
#include <grpc/event_engine/event_engine.h>
|
|
15
|
+
#include <grpc/grpc.h>
|
|
15
16
|
#include <grpc/support/port_platform.h>
|
|
16
17
|
|
|
18
|
+
#include <memory>
|
|
19
|
+
|
|
20
|
+
#include "src/core/lib/channel/channel_args.h"
|
|
17
21
|
#include "src/core/telemetry/context_list_entry.h"
|
|
18
22
|
#include "absl/strings/str_cat.h"
|
|
19
23
|
|
|
@@ -78,4 +82,9 @@ std::ostream& operator<<(std::ostream& out,
|
|
|
78
82
|
return printout(out, handle);
|
|
79
83
|
}
|
|
80
84
|
|
|
85
|
+
const grpc_arg_pointer_vtable* grpc_event_engine_arg_vtable() {
|
|
86
|
+
return grpc_core::ChannelArgTypeTraits<
|
|
87
|
+
std::shared_ptr<grpc_event_engine::experimental::EventEngine>>::VTable();
|
|
88
|
+
}
|
|
89
|
+
|
|
81
90
|
} // namespace grpc_event_engine::experimental
|
|
@@ -24,9 +24,6 @@
|
|
|
24
24
|
|
|
25
25
|
namespace grpc_event_engine::experimental {
|
|
26
26
|
|
|
27
|
-
/** If non-zero, enable TCP tracing and stats collection. */
|
|
28
|
-
#define GRPC_ARG_TCP_TRACING_ENABLED "grpc.tcp_tracing_enabled"
|
|
29
|
-
|
|
30
27
|
class TcpTraceExtension {
|
|
31
28
|
public:
|
|
32
29
|
virtual ~TcpTraceExtension() = default;
|
|
@@ -590,8 +590,8 @@ Poller::WorkResult PollPoller::Work(
|
|
|
590
590
|
pfds[pfd_count].events = head->BeginPollLocked(POLLIN, POLLOUT);
|
|
591
591
|
pfd_count++;
|
|
592
592
|
} else {
|
|
593
|
-
LOG(
|
|
594
|
-
|
|
593
|
+
LOG(INFO) << "FD from fork parent still in poll list: "
|
|
594
|
+
<< head->WrappedFd();
|
|
595
595
|
}
|
|
596
596
|
}
|
|
597
597
|
}
|
|
@@ -608,7 +608,7 @@ class PosixEndpoint : public PosixEndpointWithFdSupport {
|
|
|
608
608
|
grpc_event_engine::experimental::SliceBuffer* buffer,
|
|
609
609
|
grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs
|
|
610
610
|
args) override {
|
|
611
|
-
return impl_->Read(std::move(on_read), buffer,
|
|
611
|
+
return impl_->Read(std::move(on_read), buffer, args);
|
|
612
612
|
}
|
|
613
613
|
|
|
614
614
|
bool Write(absl::AnyInvocable<void(absl::Status)> on_writable,
|
|
@@ -403,9 +403,10 @@ void PosixEventEngine::OnConnectFinishInternal(int connection_handle) {
|
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
std::shared_ptr<PosixEventEngine> PosixEventEngine::MakePosixEventEngine(
|
|
406
|
+
std::shared_ptr<PosixEventEngine> PosixEventEngine::MakePosixEventEngine(
|
|
407
|
+
Options options) {
|
|
407
408
|
// Can't use make_shared as ctor is private
|
|
408
|
-
std::shared_ptr<PosixEventEngine> engine(new PosixEventEngine());
|
|
409
|
+
std::shared_ptr<PosixEventEngine> engine(new PosixEventEngine(options));
|
|
409
410
|
RegisterEventEngineForFork(engine, engine->executor_, engine->timer_manager_);
|
|
410
411
|
return engine;
|
|
411
412
|
}
|
|
@@ -416,20 +417,21 @@ PosixEventEngine::MakeTestOnlyPosixEventEngine(
|
|
|
416
417
|
test_only_poller) {
|
|
417
418
|
// Calling a private PosixEventEngine constructor - can't do make_shared
|
|
418
419
|
std::shared_ptr<PosixEventEngine> engine(
|
|
419
|
-
new PosixEventEngine(std::move(test_only_poller)));
|
|
420
|
+
new PosixEventEngine(Options{}, std::move(test_only_poller)));
|
|
420
421
|
RegisterEventEngineForFork(engine, engine->executor_, engine->timer_manager_);
|
|
421
422
|
return engine;
|
|
422
423
|
}
|
|
423
424
|
|
|
424
|
-
PosixEventEngine::PosixEventEngine(
|
|
425
|
-
|
|
425
|
+
PosixEventEngine::PosixEventEngine(const Options& options,
|
|
426
|
+
std::shared_ptr<PosixEventPoller> poller)
|
|
427
|
+
: connection_shards_(options.connection_shards),
|
|
426
428
|
poller_(std::move(poller)),
|
|
427
|
-
executor_(MakeThreadPool(
|
|
429
|
+
executor_(MakeThreadPool(options.reserve_threads)),
|
|
428
430
|
timer_manager_(std::make_shared<TimerManager>(executor_)) {}
|
|
429
431
|
|
|
430
|
-
PosixEventEngine::PosixEventEngine()
|
|
431
|
-
: connection_shards_(
|
|
432
|
-
executor_(MakeThreadPool(
|
|
432
|
+
PosixEventEngine::PosixEventEngine(const Options& options)
|
|
433
|
+
: connection_shards_(options.connection_shards),
|
|
434
|
+
executor_(MakeThreadPool(options.reserve_threads)),
|
|
433
435
|
timer_manager_(std::make_shared<TimerManager>(executor_)) {
|
|
434
436
|
if (ShouldUsePosixPoller()) {
|
|
435
437
|
poller_ = grpc_event_engine::experimental::MakeDefaultPoller(executor_);
|
|
@@ -457,6 +459,19 @@ struct PosixEventEngine::ClosureData final : public EventEngine::Closure {
|
|
|
457
459
|
}
|
|
458
460
|
};
|
|
459
461
|
|
|
462
|
+
void PosixEventEngine::CancelAllPendingTimers() {
|
|
463
|
+
{
|
|
464
|
+
grpc_core::MutexLock lock(&mu_);
|
|
465
|
+
auto pending_handles = known_handles_;
|
|
466
|
+
for (auto handle : pending_handles) {
|
|
467
|
+
CancelInternal(handle);
|
|
468
|
+
}
|
|
469
|
+
GRPC_CHECK(known_handles_.empty());
|
|
470
|
+
// Prevent new timers from being scheduled on this EventEngine.
|
|
471
|
+
disallow_new_timers_ = true;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
|
|
460
475
|
PosixEventEngine::~PosixEventEngine() {
|
|
461
476
|
{
|
|
462
477
|
grpc_core::MutexLock lock(&mu_);
|
|
@@ -478,6 +493,10 @@ PosixEventEngine::~PosixEventEngine() {
|
|
|
478
493
|
|
|
479
494
|
bool PosixEventEngine::Cancel(EventEngine::TaskHandle handle) {
|
|
480
495
|
grpc_core::MutexLock lock(&mu_);
|
|
496
|
+
return CancelInternal(handle);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
bool PosixEventEngine::CancelInternal(EventEngine::TaskHandle handle) {
|
|
481
500
|
if (!known_handles_.contains(handle)) return false;
|
|
482
501
|
auto* cd = reinterpret_cast<ClosureData*>(handle.keys[0]);
|
|
483
502
|
bool r = timer_manager_->TimerCancel(&cd->timer);
|
|
@@ -517,6 +536,12 @@ EventEngine::TaskHandle PosixEventEngine::RunAfterInternal(
|
|
|
517
536
|
EventEngine::TaskHandle handle{reinterpret_cast<intptr_t>(cd),
|
|
518
537
|
aba_token_.fetch_add(1)};
|
|
519
538
|
grpc_core::MutexLock lock(&mu_);
|
|
539
|
+
if (disallow_new_timers_) {
|
|
540
|
+
delete cd;
|
|
541
|
+
// Return handle and don't schedule the callback. The caller will see a
|
|
542
|
+
// valid handle but it cannot be cancelled since it was not scheduled.
|
|
543
|
+
return handle;
|
|
544
|
+
}
|
|
520
545
|
known_handles_.insert(handle);
|
|
521
546
|
cd->handle = handle;
|
|
522
547
|
GRPC_TRACE_LOG(event_engine, INFO)
|
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
#include <grpc/event_engine/endpoint_config.h>
|
|
17
17
|
#include <grpc/event_engine/event_engine.h>
|
|
18
18
|
#include <grpc/event_engine/memory_allocator.h>
|
|
19
|
+
#include <grpc/support/cpu.h>
|
|
19
20
|
#include <grpc/support/port_platform.h>
|
|
20
21
|
|
|
22
|
+
#include <algorithm>
|
|
21
23
|
#include <atomic>
|
|
22
24
|
#include <cstdint>
|
|
23
25
|
#include <memory>
|
|
@@ -35,6 +37,7 @@
|
|
|
35
37
|
#include "src/core/lib/iomgr/port.h"
|
|
36
38
|
#include "src/core/util/orphanable.h"
|
|
37
39
|
#include "src/core/util/sync.h"
|
|
40
|
+
#include "src/core/util/useful.h"
|
|
38
41
|
#include "absl/base/thread_annotations.h"
|
|
39
42
|
#include "absl/container/flat_hash_map.h"
|
|
40
43
|
#include "absl/container/inlined_vector.h"
|
|
@@ -100,6 +103,17 @@ class AsyncConnect {
|
|
|
100
103
|
// All methods require an ExecCtx to already exist on the thread's stack.
|
|
101
104
|
class PosixEventEngine final : public PosixEventEngineWithFdSupport {
|
|
102
105
|
public:
|
|
106
|
+
struct Options {
|
|
107
|
+
// Number of connection shards to use.
|
|
108
|
+
int connection_shards;
|
|
109
|
+
// Number of threads to reserve for the thread pool.
|
|
110
|
+
int reserve_threads;
|
|
111
|
+
// Options struct is expected to grow to include more fields to
|
|
112
|
+
// configure the thread pool, poller etc.
|
|
113
|
+
Options()
|
|
114
|
+
: connection_shards(std::max(2 * gpr_cpu_num_cores(), 1u)),
|
|
115
|
+
reserve_threads(grpc_core::Clamp(gpr_cpu_num_cores(), 4u, 16u)) {}
|
|
116
|
+
};
|
|
103
117
|
class PosixDNSResolver : public EventEngine::DNSResolver {
|
|
104
118
|
public:
|
|
105
119
|
explicit PosixDNSResolver(
|
|
@@ -116,7 +130,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
|
|
|
116
130
|
grpc_core::OrphanablePtr<RefCountedDNSResolverInterface> dns_resolver_;
|
|
117
131
|
};
|
|
118
132
|
|
|
119
|
-
static std::shared_ptr<PosixEventEngine> MakePosixEventEngine(
|
|
133
|
+
static std::shared_ptr<PosixEventEngine> MakePosixEventEngine(
|
|
134
|
+
Options options = Options{});
|
|
120
135
|
|
|
121
136
|
~PosixEventEngine() override;
|
|
122
137
|
|
|
@@ -162,6 +177,9 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
|
|
|
162
177
|
TaskHandle RunAfter(Duration when,
|
|
163
178
|
absl::AnyInvocable<void()> closure) override;
|
|
164
179
|
bool Cancel(TaskHandle handle) override;
|
|
180
|
+
// Cancels all pending timers and prevents any more timers from being
|
|
181
|
+
// scheduled. This method should be only called prior to EventEngine shutdown.
|
|
182
|
+
void CancelAllPendingTimers();
|
|
165
183
|
|
|
166
184
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
|
167
185
|
|
|
@@ -185,13 +203,16 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
|
|
|
185
203
|
friend class AresResolverTest;
|
|
186
204
|
struct ClosureData;
|
|
187
205
|
|
|
188
|
-
PosixEventEngine();
|
|
206
|
+
explicit PosixEventEngine(const Options& options);
|
|
207
|
+
|
|
208
|
+
bool CancelInternal(TaskHandle handle) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
|
189
209
|
|
|
190
210
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
|
191
211
|
// Constructs an EventEngine which has a shared ownership of the poller. Use
|
|
192
212
|
// the MakeTestOnlyPosixEventEngine static method to call this. Its expected
|
|
193
213
|
// to be used only in tests.
|
|
194
214
|
explicit PosixEventEngine(
|
|
215
|
+
const Options& options,
|
|
195
216
|
std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller>
|
|
196
217
|
poller);
|
|
197
218
|
|
|
@@ -249,6 +270,7 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
|
|
|
249
270
|
#endif
|
|
250
271
|
|
|
251
272
|
grpc_core::Mutex mu_;
|
|
273
|
+
bool disallow_new_timers_ ABSL_GUARDED_BY(mu_) = false;
|
|
252
274
|
TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_);
|
|
253
275
|
std::atomic<intptr_t> aba_token_{0};
|
|
254
276
|
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
|
@@ -273,9 +273,7 @@ absl::Status PosixEngineListenerImpl::HandleExternalConnection(
|
|
|
273
273
|
(void)posix_interface.SetSocketNoSigpipeIfPossible(wrapped);
|
|
274
274
|
auto peer_name = posix_interface.PeerAddressString(wrapped);
|
|
275
275
|
if (!peer_name.ok()) {
|
|
276
|
-
|
|
277
|
-
posix_interface.Close(wrapped);
|
|
278
|
-
}
|
|
276
|
+
posix_interface.Close(wrapped);
|
|
279
277
|
return absl::UnknownError(
|
|
280
278
|
absl::StrCat("HandleExternalConnection: peer not connected: ",
|
|
281
279
|
peer_name.status().ToString()));
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include "src/core/lib/event_engine/posix_engine/posix_interface.h"
|
|
27
27
|
#include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
|
|
28
28
|
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
|
29
|
+
#include "src/core/lib/experiments/experiments.h"
|
|
29
30
|
#include "src/core/lib/iomgr/port.h"
|
|
30
31
|
#include "src/core/util/crash.h" // IWYU pragma: keep
|
|
31
32
|
#include "src/core/util/grpc_check.h"
|
|
@@ -63,10 +64,10 @@ bool SystemHasIfAddrs() { return false; }
|
|
|
63
64
|
|
|
64
65
|
#endif // GRPC_HAVE_IFADDRS
|
|
65
66
|
|
|
66
|
-
// Prepare a recently-created socket for listening.
|
|
67
|
-
absl::Status
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
// Prepare socket options for a recently-created socket for listening.
|
|
68
|
+
absl::Status PrepareListenerSocketOptions(
|
|
69
|
+
EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options,
|
|
70
|
+
ListenerSocket& socket) {
|
|
70
71
|
FileDescriptor fd = socket.sock;
|
|
71
72
|
GRPC_CHECK(fd.ready());
|
|
72
73
|
bool close_fd = true;
|
|
@@ -77,24 +78,119 @@ absl::Status PrepareSocket(EventEnginePosixInterface* posix_interface,
|
|
|
77
78
|
posix_interface->Close(fd);
|
|
78
79
|
}
|
|
79
80
|
});
|
|
80
|
-
auto
|
|
81
|
-
|
|
82
|
-
if (!
|
|
83
|
-
return
|
|
81
|
+
auto status = posix_interface->PrepareListenerSocketOptions(
|
|
82
|
+
socket.sock, options, socket.addr);
|
|
83
|
+
if (!status.ok()) {
|
|
84
|
+
return status;
|
|
84
85
|
}
|
|
85
|
-
socklen_t len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
|
|
86
|
-
socket.port =
|
|
87
|
-
ResolvedAddressGetPort(ResolvedAddress(listen_address->address(), len));
|
|
88
86
|
// No errors. Set close_fd to false to ensure the socket is not closed.
|
|
89
87
|
close_fd = false;
|
|
90
88
|
return absl::OkStatus();
|
|
91
89
|
}
|
|
92
90
|
|
|
91
|
+
absl::StatusOr<int> NewListenerContainerAddWildcardAddresses(
|
|
92
|
+
EventEnginePosixInterface* posix_interface,
|
|
93
|
+
ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options,
|
|
94
|
+
int requested_port,
|
|
95
|
+
absl::AnyInvocable<bool(const ListenerSocket&)> socket_filter) {
|
|
96
|
+
bool should_expand_wildcard_addrs =
|
|
97
|
+
SystemHasIfAddrs() && options.expand_wildcard_addrs;
|
|
98
|
+
if (should_expand_wildcard_addrs && socket_filter == nullptr) {
|
|
99
|
+
// If there is no socket filter, we can just expand all local addresses.
|
|
100
|
+
return ListenerContainerAddAllLocalAddresses(
|
|
101
|
+
posix_interface, listener_sockets, options, requested_port);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
ResolvedAddress wild4 = ResolvedAddressMakeWild4(requested_port);
|
|
105
|
+
ResolvedAddress wild6 = ResolvedAddressMakeWild6(requested_port);
|
|
106
|
+
absl::StatusOr<ListenerSocket> v6_sock = absl::InternalError("init");
|
|
107
|
+
absl::StatusOr<ListenerSocket> v4_sock = absl::InternalError("init");
|
|
108
|
+
bool add_v4_sock = true;
|
|
109
|
+
|
|
110
|
+
// Try creating IPv6 socket first.
|
|
111
|
+
v6_sock = CreateListenerSocketWithoutBinding(posix_interface, options, wild6);
|
|
112
|
+
if (v6_sock.ok()) {
|
|
113
|
+
if (v6_sock->dsmode == EventEnginePosixInterface::DSMODE_DUALSTACK ||
|
|
114
|
+
v6_sock->dsmode == EventEnginePosixInterface::DSMODE_IPV4) {
|
|
115
|
+
add_v4_sock = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (add_v4_sock) {
|
|
119
|
+
// If we got a v6-only socket or nothing, try creating IPv4 socket.
|
|
120
|
+
v4_sock =
|
|
121
|
+
CreateListenerSocketWithoutBinding(posix_interface, options, wild4);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// If there is a socket filter, we only expand the wildcard addresses if
|
|
125
|
+
// the socket filter returns true for either socket.
|
|
126
|
+
if (should_expand_wildcard_addrs &&
|
|
127
|
+
((v6_sock.ok() && socket_filter(*v6_sock)) ||
|
|
128
|
+
(v4_sock.ok() && socket_filter(*v4_sock)))) {
|
|
129
|
+
// Close the wildcard sockets and expand all local addresses.
|
|
130
|
+
if (v6_sock.ok()) {
|
|
131
|
+
posix_interface->Close(v6_sock->sock);
|
|
132
|
+
}
|
|
133
|
+
if (v4_sock.ok()) {
|
|
134
|
+
posix_interface->Close(v4_sock->sock);
|
|
135
|
+
}
|
|
136
|
+
return ListenerContainerAddAllLocalAddresses(
|
|
137
|
+
posix_interface, listener_sockets, options, requested_port);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (!v6_sock.ok() && !v4_sock.ok()) {
|
|
141
|
+
return absl::FailedPreconditionError(absl::StrCat(
|
|
142
|
+
"Failed to add any wildcard listeners: ", v6_sock.status().message(),
|
|
143
|
+
v4_sock.status().message()));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// If we are not expanding wildcard addresses, we now bind to each wildcard
|
|
147
|
+
// socket and add them to the listener sockets container.
|
|
148
|
+
int assigned_port = 0;
|
|
149
|
+
if (v6_sock.ok()) {
|
|
150
|
+
auto bind_status =
|
|
151
|
+
BindListenerSocket(posix_interface, v6_sock->addr, *v6_sock);
|
|
152
|
+
if (bind_status.ok()) {
|
|
153
|
+
assigned_port = v6_sock->port;
|
|
154
|
+
listener_sockets.Append(*v6_sock);
|
|
155
|
+
} else {
|
|
156
|
+
v6_sock = bind_status;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (v4_sock.ok()) {
|
|
160
|
+
if (assigned_port != 0) {
|
|
161
|
+
ResolvedAddressSetPort(v4_sock->addr, assigned_port);
|
|
162
|
+
}
|
|
163
|
+
auto bind_status =
|
|
164
|
+
BindListenerSocket(posix_interface, v4_sock->addr, *v4_sock);
|
|
165
|
+
if (bind_status.ok()) {
|
|
166
|
+
assigned_port = v4_sock->port;
|
|
167
|
+
listener_sockets.Append(*v4_sock);
|
|
168
|
+
} else {
|
|
169
|
+
v4_sock = bind_status;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (assigned_port > 0) return assigned_port;
|
|
173
|
+
return absl::FailedPreconditionError(absl::StrCat(
|
|
174
|
+
"Failed to add any wildcard listeners: ", v6_sock.status().message(),
|
|
175
|
+
v4_sock.status().message()));
|
|
176
|
+
}
|
|
177
|
+
|
|
93
178
|
} // namespace
|
|
94
179
|
|
|
95
180
|
absl::StatusOr<ListenerSocket> CreateAndPrepareListenerSocket(
|
|
96
181
|
EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options,
|
|
97
182
|
const ResolvedAddress& addr) {
|
|
183
|
+
auto result =
|
|
184
|
+
CreateListenerSocketWithoutBinding(posix_interface, options, addr);
|
|
185
|
+
GRPC_RETURN_IF_ERROR(result.status());
|
|
186
|
+
GRPC_RETURN_IF_ERROR(
|
|
187
|
+
BindListenerSocket(posix_interface, result->addr, *result));
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
absl::StatusOr<ListenerSocket> CreateListenerSocketWithoutBinding(
|
|
192
|
+
EventEnginePosixInterface* posix_interface, const PosixTcpOptions& options,
|
|
193
|
+
const ResolvedAddress& addr) {
|
|
98
194
|
ResolvedAddress addr4_copy;
|
|
99
195
|
ListenerSocket socket;
|
|
100
196
|
auto result = posix_interface->CreateDualStackSocket(
|
|
@@ -109,11 +205,36 @@ absl::StatusOr<ListenerSocket> CreateAndPrepareListenerSocket(
|
|
|
109
205
|
} else {
|
|
110
206
|
socket.addr = addr;
|
|
111
207
|
}
|
|
112
|
-
GRPC_RETURN_IF_ERROR(
|
|
113
|
-
|
|
208
|
+
GRPC_RETURN_IF_ERROR(
|
|
209
|
+
PrepareListenerSocketOptions(posix_interface, options, socket));
|
|
114
210
|
return socket;
|
|
115
211
|
}
|
|
116
212
|
|
|
213
|
+
absl::Status BindListenerSocket(EventEnginePosixInterface* posix_interface,
|
|
214
|
+
const ResolvedAddress& addr,
|
|
215
|
+
ListenerSocket& socket) {
|
|
216
|
+
FileDescriptor fd = socket.sock;
|
|
217
|
+
GRPC_CHECK(fd.ready());
|
|
218
|
+
bool close_fd = true;
|
|
219
|
+
socket.port = 0;
|
|
220
|
+
auto sock_cleanup =
|
|
221
|
+
absl::MakeCleanup([&close_fd, fd, posix_interface]() -> void {
|
|
222
|
+
if (close_fd && fd.ready()) {
|
|
223
|
+
posix_interface->Close(fd);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
auto listen_address = posix_interface->BindListenerSocket(socket.sock, addr);
|
|
227
|
+
if (!listen_address.ok()) {
|
|
228
|
+
return std::move(listen_address).status();
|
|
229
|
+
}
|
|
230
|
+
socklen_t len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
|
|
231
|
+
socket.port =
|
|
232
|
+
ResolvedAddressGetPort(ResolvedAddress(listen_address->address(), len));
|
|
233
|
+
close_fd = false;
|
|
234
|
+
GRPC_CHECK_GT(socket.port, 0);
|
|
235
|
+
return absl::OkStatus();
|
|
236
|
+
}
|
|
237
|
+
|
|
117
238
|
bool IsSockAddrLinkLocal(const EventEngine::ResolvedAddress* resolved_addr) {
|
|
118
239
|
const sockaddr* addr = resolved_addr->address();
|
|
119
240
|
if (addr->sa_family == AF_INET) {
|
|
@@ -226,7 +347,13 @@ absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
|
|
|
226
347
|
absl::StatusOr<int> ListenerContainerAddWildcardAddresses(
|
|
227
348
|
EventEnginePosixInterface* posix_interface,
|
|
228
349
|
ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options,
|
|
229
|
-
int requested_port
|
|
350
|
+
int requested_port,
|
|
351
|
+
absl::AnyInvocable<bool(const ListenerSocket&)> socket_filter) {
|
|
352
|
+
if (grpc_core::IsWildcardIpExpansionRestrictionEnabled()) {
|
|
353
|
+
return NewListenerContainerAddWildcardAddresses(
|
|
354
|
+
posix_interface, listener_sockets, options, requested_port,
|
|
355
|
+
std::move(socket_filter));
|
|
356
|
+
}
|
|
230
357
|
ResolvedAddress wild4 = ResolvedAddressMakeWild4(requested_port);
|
|
231
358
|
ResolvedAddress wild6 = ResolvedAddressMakeWild6(requested_port);
|
|
232
359
|
absl::StatusOr<ListenerSocket> v6_sock;
|
|
@@ -51,6 +51,20 @@ class ListenerSocketsContainer {
|
|
|
51
51
|
virtual ~ListenerSocketsContainer() = default;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
+
// Creates a listener socket, and prepares it with specified options, but
|
|
55
|
+
// does not bind or listen on it.
|
|
56
|
+
absl::StatusOr<ListenerSocketsContainer::ListenerSocket>
|
|
57
|
+
CreateListenerSocketWithoutBinding(EventEnginePosixInterface* posix_interface,
|
|
58
|
+
const PosixTcpOptions& options,
|
|
59
|
+
const EventEngine::ResolvedAddress& addr);
|
|
60
|
+
|
|
61
|
+
// Binds and listens on a listener socket. The socket must have been created
|
|
62
|
+
// with `CreateListenerSocketWithoutBinding`.
|
|
63
|
+
absl::Status BindListenerSocket(
|
|
64
|
+
EventEnginePosixInterface* posix_interface,
|
|
65
|
+
const EventEngine::ResolvedAddress& addr,
|
|
66
|
+
ListenerSocketsContainer::ListenerSocket& socket);
|
|
67
|
+
|
|
54
68
|
// Creates and configures a socket to be used by the EventEngine Listener. The
|
|
55
69
|
// type of the socket to create is determined by the by the passed address. The
|
|
56
70
|
// socket configuration is specified by passed tcp options. If successful, it
|
|
@@ -66,11 +80,14 @@ CreateAndPrepareListenerSocket(
|
|
|
66
80
|
// server. The newly created socket is configured according to the passed
|
|
67
81
|
// options and added to the passed ListenerSocketsContainer object. The function
|
|
68
82
|
// returns the port at which the created socket listens for incoming
|
|
69
|
-
// connections.
|
|
83
|
+
// connections. The optional socket_filter is used to provide additional
|
|
84
|
+
// constraints on whether the wildcard address should be expanded.
|
|
70
85
|
absl::StatusOr<int> ListenerContainerAddWildcardAddresses(
|
|
71
86
|
EventEnginePosixInterface* posix_interface,
|
|
72
87
|
ListenerSocketsContainer& listener_sockets, const PosixTcpOptions& options,
|
|
73
|
-
int requested_port
|
|
88
|
+
int requested_port,
|
|
89
|
+
absl::AnyInvocable<bool(const ListenerSocketsContainer::ListenerSocket&)>
|
|
90
|
+
socket_filter = nullptr);
|
|
74
91
|
|
|
75
92
|
// Get all addresses assigned to network interfaces on the machine and create
|
|
76
93
|
// and add a socket for each local address. Each newly created socket is
|
|
@@ -161,6 +161,13 @@ class EventEnginePosixInterface {
|
|
|
161
161
|
const FileDescriptor& fd);
|
|
162
162
|
// Retrieves the peer address of a connected socket as a string.
|
|
163
163
|
absl::StatusOr<std::string> PeerAddressString(const FileDescriptor& fd);
|
|
164
|
+
// Prepares listener socket options, but does not bind or listen.
|
|
165
|
+
absl::Status PrepareListenerSocketOptions(
|
|
166
|
+
const FileDescriptor& fd, const PosixTcpOptions& options,
|
|
167
|
+
const EventEngine::ResolvedAddress& address);
|
|
168
|
+
// Bind and listen on a listener socket.
|
|
169
|
+
absl::StatusOr<EventEngine::ResolvedAddress> BindListenerSocket(
|
|
170
|
+
const FileDescriptor& fd, const EventEngine::ResolvedAddress& address);
|
|
164
171
|
// Prepares a listener socket with specified options and address binding.
|
|
165
172
|
absl::StatusOr<EventEngine::ResolvedAddress> PrepareListenerSocket(
|
|
166
173
|
const FileDescriptor& fd, const PosixTcpOptions& options,
|
|
@@ -804,12 +804,12 @@ absl::StatusOr<std::string> EventEnginePosixInterface::PeerAddressString(
|
|
|
804
804
|
return ResolvedAddressToNormalizedString((*status));
|
|
805
805
|
}
|
|
806
806
|
|
|
807
|
-
absl::
|
|
808
|
-
EventEnginePosixInterface::PrepareListenerSocket(
|
|
807
|
+
absl::Status EventEnginePosixInterface::PrepareListenerSocketOptions(
|
|
809
808
|
const FileDescriptor& fd, const PosixTcpOptions& options,
|
|
810
809
|
const EventEngine::ResolvedAddress& address) {
|
|
811
810
|
if (!IsCorrectGeneration(fd)) {
|
|
812
|
-
return absl::InternalError(
|
|
811
|
+
return absl::InternalError(
|
|
812
|
+
"PrepareListenerSocketOptions: wrong generation");
|
|
813
813
|
}
|
|
814
814
|
int f = fd.fd();
|
|
815
815
|
if (IsSocketReusePortSupported() && options.allow_reuse_port &&
|
|
@@ -837,6 +837,16 @@ EventEnginePosixInterface::PrepareListenerSocket(
|
|
|
837
837
|
// it's not fatal, so just log it.
|
|
838
838
|
VLOG(2) << "Node does not support SO_ZEROCOPY, continuing.";
|
|
839
839
|
}
|
|
840
|
+
return absl::OkStatus();
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
|
844
|
+
EventEnginePosixInterface::BindListenerSocket(
|
|
845
|
+
const FileDescriptor& fd, const EventEngine::ResolvedAddress& address) {
|
|
846
|
+
if (!IsCorrectGeneration(fd)) {
|
|
847
|
+
return absl::InternalError("BindListenerSocket: wrong generation");
|
|
848
|
+
}
|
|
849
|
+
int f = fd.fd();
|
|
840
850
|
if (bind(f, address.address(), address.size()) < 0) {
|
|
841
851
|
auto sockaddr_str = ResolvedAddressToString(address);
|
|
842
852
|
if (!sockaddr_str.ok()) {
|
|
@@ -863,6 +873,14 @@ EventEnginePosixInterface::PrepareListenerSocket(
|
|
|
863
873
|
return sockname_temp;
|
|
864
874
|
}
|
|
865
875
|
|
|
876
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
|
877
|
+
EventEnginePosixInterface::PrepareListenerSocket(
|
|
878
|
+
const FileDescriptor& fd, const PosixTcpOptions& options,
|
|
879
|
+
const EventEngine::ResolvedAddress& address) {
|
|
880
|
+
GRPC_RETURN_IF_ERROR(PrepareListenerSocketOptions(fd, options, address));
|
|
881
|
+
return BindListenerSocket(fd, address);
|
|
882
|
+
}
|
|
883
|
+
|
|
866
884
|
// Set a socket using a grpc_socket_mutator
|
|
867
885
|
absl::Status EventEnginePosixInterface::SetSocketMutator(
|
|
868
886
|
const FileDescriptor& fd, grpc_fd_usage usage,
|
|
@@ -126,6 +126,22 @@ absl::Status EventEnginePosixInterface::PrepareTcpClientSocket(
|
|
|
126
126
|
"EventEnginePosixInterface::PrepareTcpClientSocket");
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
absl::Status EventEnginePosixInterface::PrepareListenerSocketOptions(
|
|
130
|
+
const FileDescriptor& fd, const PosixTcpOptions& options,
|
|
131
|
+
const EventEngine::ResolvedAddress& address) {
|
|
132
|
+
grpc_core::Crash(
|
|
133
|
+
"unimplemented on this platform: "
|
|
134
|
+
"EventEnginePosixInterface::PrepareListenerSocketOptions");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
|
138
|
+
EventEnginePosixInterface::BindListenerSocket(
|
|
139
|
+
const FileDescriptor& fd, const EventEngine::ResolvedAddress& address) {
|
|
140
|
+
grpc_core::Crash(
|
|
141
|
+
"unimplemented on this platform: "
|
|
142
|
+
"EventEnginePosixInterface::BindListenerSocket");
|
|
143
|
+
}
|
|
144
|
+
|
|
129
145
|
absl::StatusOr<EventEngine::ResolvedAddress>
|
|
130
146
|
EventEnginePosixInterface::PrepareListenerSocket(
|
|
131
147
|
const FileDescriptor& fd, const PosixTcpOptions& options,
|