grpc 1.73.0 → 1.75.0
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 +116 -53
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +18 -6
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +274 -192
- data/src/core/channelz/channelz.h +224 -72
- data/src/core/channelz/channelz_registry.cc +2 -163
- data/src/core/channelz/channelz_registry.h +37 -6
- data/src/core/channelz/property_list.cc +353 -0
- data/src/core/channelz/property_list.h +204 -0
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +24 -33
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +57 -25
- data/src/core/client_channel/subchannel.h +10 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +4 -1
- data/src/core/config/core_configuration.h +23 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +2 -27
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +98 -38
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +11 -10
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +51 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +165 -99
- data/src/core/lib/experiments/experiments.h +65 -52
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +15 -9
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +3 -2
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +55 -6
- data/src/core/lib/promise/party.h +68 -3
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +19 -10
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +84 -13
- data/src/core/server/server.h +21 -2
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +369 -343
- data/src/core/telemetry/stats_data.h +341 -244
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +205 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +249 -189
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +7 -4
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +144 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +192 -68
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -22,8 +22,8 @@
|
|
22
22
|
#include <stdint.h>
|
23
23
|
|
24
24
|
#include <atomic>
|
25
|
-
#include <list>
|
26
25
|
#include <memory>
|
26
|
+
#include <string>
|
27
27
|
#include <utility>
|
28
28
|
|
29
29
|
#include "absl/container/inlined_vector.h"
|
@@ -35,6 +35,7 @@
|
|
35
35
|
#include "src/core/lib/event_engine/poller.h"
|
36
36
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
37
37
|
#include "src/core/lib/event_engine/posix_engine/posix_engine_closure.h"
|
38
|
+
#include "src/core/lib/event_engine/posix_engine/posix_interface.h"
|
38
39
|
#include "src/core/lib/iomgr/port.h"
|
39
40
|
#include "src/core/util/crash.h"
|
40
41
|
|
@@ -51,7 +52,6 @@
|
|
51
52
|
#include "src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h"
|
52
53
|
#include "src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h"
|
53
54
|
#include "src/core/lib/event_engine/time_util.h"
|
54
|
-
#include "src/core/util/fork.h"
|
55
55
|
#include "src/core/util/status_helper.h"
|
56
56
|
#include "src/core/util/strerror.h"
|
57
57
|
#include "src/core/util/sync.h"
|
@@ -68,12 +68,11 @@ using Events = absl::InlinedVector<PollEventHandle*, 5>;
|
|
68
68
|
|
69
69
|
class PollEventHandle : public EventHandle {
|
70
70
|
public:
|
71
|
-
PollEventHandle(
|
71
|
+
PollEventHandle(FileDescriptor fd, std::shared_ptr<PollPoller> poller)
|
72
72
|
: fd_(fd),
|
73
73
|
pending_actions_(0),
|
74
|
-
fork_fd_list_(this),
|
75
74
|
poller_handles_list_(this),
|
76
|
-
|
75
|
+
thread_pool_(poller->GetThreadPool()),
|
77
76
|
poller_(std::move(poller)),
|
78
77
|
is_orphaned_(false),
|
79
78
|
is_shutdown_(false),
|
@@ -108,14 +107,14 @@ class PollEventHandle : public EventHandle {
|
|
108
107
|
grpc_core::MutexLock lock(&poller_->mu_);
|
109
108
|
poller_->PollerHandlesListRemoveHandle(this);
|
110
109
|
}
|
111
|
-
|
110
|
+
FileDescriptor WrappedFd() override { return fd_; }
|
112
111
|
bool IsOrphaned() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
|
113
112
|
return is_orphaned_;
|
114
113
|
}
|
115
114
|
void CloseFd() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
|
116
115
|
if (!released_ && !closed_) {
|
117
116
|
closed_ = true;
|
118
|
-
|
117
|
+
poller_->posix_interface().Close(fd_);
|
119
118
|
}
|
120
119
|
}
|
121
120
|
bool IsPollhup() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) { return pollhup_; }
|
@@ -132,7 +131,7 @@ class PollEventHandle : public EventHandle {
|
|
132
131
|
void SetWatched(int watch_mask) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
|
133
132
|
watch_mask_ = watch_mask;
|
134
133
|
}
|
135
|
-
void OrphanHandle(PosixEngineClosure* on_done,
|
134
|
+
void OrphanHandle(PosixEngineClosure* on_done, FileDescriptor* release_fd,
|
136
135
|
absl::string_view reason) override;
|
137
136
|
void ShutdownHandle(absl::Status why) override;
|
138
137
|
void NotifyOnRead(PosixEngineClosure* on_read) override;
|
@@ -176,14 +175,13 @@ class PollEventHandle : public EventHandle {
|
|
176
175
|
void Unref() {
|
177
176
|
if (ref_count_.fetch_sub(1, std::memory_order_acq_rel) == 1) {
|
178
177
|
if (on_done_ != nullptr) {
|
179
|
-
|
178
|
+
thread_pool_->Run(on_done_);
|
180
179
|
}
|
181
180
|
delete this;
|
182
181
|
}
|
183
182
|
}
|
184
183
|
~PollEventHandle() override = default;
|
185
184
|
grpc_core::Mutex* mu() ABSL_LOCK_RETURNED(mu_) { return &mu_; }
|
186
|
-
PollPoller::HandlesList& ForkFdListPos() { return fork_fd_list_; }
|
187
185
|
PollPoller::HandlesList& PollerHandlesListPos() {
|
188
186
|
return poller_handles_list_;
|
189
187
|
}
|
@@ -199,11 +197,10 @@ class PollEventHandle : public EventHandle {
|
|
199
197
|
// required.
|
200
198
|
grpc_core::Mutex mu_;
|
201
199
|
std::atomic<int> ref_count_{1};
|
202
|
-
|
200
|
+
FileDescriptor fd_;
|
203
201
|
int pending_actions_;
|
204
|
-
PollPoller::HandlesList fork_fd_list_;
|
205
202
|
PollPoller::HandlesList poller_handles_list_;
|
206
|
-
|
203
|
+
ThreadPool* thread_pool_;
|
207
204
|
std::shared_ptr<PollPoller> poller_;
|
208
205
|
bool is_orphaned_;
|
209
206
|
bool is_shutdown_;
|
@@ -219,26 +216,6 @@ class PollEventHandle : public EventHandle {
|
|
219
216
|
};
|
220
217
|
|
221
218
|
namespace {
|
222
|
-
// Only used when GRPC_ENABLE_FORK_SUPPORT=1
|
223
|
-
std::list<PollPoller*> fork_poller_list;
|
224
|
-
|
225
|
-
gpr_mu fork_fd_list_mu;
|
226
|
-
|
227
|
-
void ForkPollerListAddPoller(PollPoller* poller) {
|
228
|
-
if (grpc_core::Fork::Enabled()) {
|
229
|
-
gpr_mu_lock(&fork_fd_list_mu);
|
230
|
-
fork_poller_list.push_back(poller);
|
231
|
-
gpr_mu_unlock(&fork_fd_list_mu);
|
232
|
-
}
|
233
|
-
}
|
234
|
-
|
235
|
-
void ForkPollerListRemovePoller(PollPoller* poller) {
|
236
|
-
if (grpc_core::Fork::Enabled()) {
|
237
|
-
gpr_mu_lock(&fork_fd_list_mu);
|
238
|
-
fork_poller_list.remove(poller);
|
239
|
-
gpr_mu_unlock(&fork_fd_list_mu);
|
240
|
-
}
|
241
|
-
}
|
242
219
|
|
243
220
|
// Returns the number of milliseconds elapsed between now and start timestamp.
|
244
221
|
int PollElapsedTimeToMillis(grpc_core::Timestamp start) {
|
@@ -255,42 +232,10 @@ int PollElapsedTimeToMillis(grpc_core::Timestamp start) {
|
|
255
232
|
}
|
256
233
|
}
|
257
234
|
|
258
|
-
bool InitPollPollerPosix();
|
259
|
-
|
260
|
-
// Called by the child process's post-fork handler to close open fds,
|
261
|
-
// including the global epoll fd of each poller. This allows gRPC to shutdown
|
262
|
-
// in the child process without interfering with connections or RPCs ongoing
|
263
|
-
// in the parent.
|
264
|
-
void ResetEventManagerOnFork() {
|
265
|
-
gpr_mu_lock(&fork_fd_list_mu);
|
266
|
-
// Delete all registered pollers.
|
267
|
-
while (!fork_poller_list.empty()) {
|
268
|
-
PollPoller* poller = fork_poller_list.front();
|
269
|
-
fork_poller_list.pop_front();
|
270
|
-
poller->Close();
|
271
|
-
}
|
272
|
-
gpr_mu_unlock(&fork_fd_list_mu);
|
273
|
-
InitPollPollerPosix();
|
274
|
-
}
|
275
|
-
|
276
|
-
// It is possible that GLIBC has epoll but the underlying kernel doesn't.
|
277
|
-
// Create epoll_fd to make sure epoll support is available
|
278
|
-
bool InitPollPollerPosix() {
|
279
|
-
if (!grpc_event_engine::experimental::SupportsWakeupFd()) {
|
280
|
-
return false;
|
281
|
-
}
|
282
|
-
if (grpc_core::Fork::Enabled()) {
|
283
|
-
if (grpc_core::Fork::RegisterResetChildPollingEngineFunc(
|
284
|
-
ResetEventManagerOnFork)) {
|
285
|
-
gpr_mu_init(&fork_fd_list_mu);
|
286
|
-
}
|
287
|
-
}
|
288
|
-
return true;
|
289
|
-
}
|
290
|
-
|
291
235
|
} // namespace
|
292
236
|
|
293
|
-
EventHandle* PollPoller::CreateHandle(
|
237
|
+
EventHandle* PollPoller::CreateHandle(FileDescriptor fd,
|
238
|
+
absl::string_view /*name*/,
|
294
239
|
bool track_err) {
|
295
240
|
// Avoid unused-parameter warning for debug-only parameter
|
296
241
|
(void)track_err;
|
@@ -302,7 +247,8 @@ EventHandle* PollPoller::CreateHandle(int fd, absl::string_view /*name*/,
|
|
302
247
|
return handle;
|
303
248
|
}
|
304
249
|
|
305
|
-
void PollEventHandle::OrphanHandle(PosixEngineClosure* on_done,
|
250
|
+
void PollEventHandle::OrphanHandle(PosixEngineClosure* on_done,
|
251
|
+
FileDescriptor* release_fd,
|
306
252
|
absl::string_view /*reason*/) {
|
307
253
|
ForceRemoveHandleFromPoller();
|
308
254
|
{
|
@@ -327,7 +273,7 @@ void PollEventHandle::OrphanHandle(PosixEngineClosure* on_done, int* release_fd,
|
|
327
273
|
}
|
328
274
|
// signal read/write closed to OS so that future operations fail.
|
329
275
|
if (!released_) {
|
330
|
-
|
276
|
+
poller_->posix_interface().Shutdown(fd_, SHUT_RDWR);
|
331
277
|
}
|
332
278
|
if (!IsWatched()) {
|
333
279
|
CloseFd();
|
@@ -347,7 +293,7 @@ int PollEventHandle::NotifyOnLocked(PosixEngineClosure** st,
|
|
347
293
|
PosixEngineClosure* closure) {
|
348
294
|
if (is_shutdown_ || pollhup_) {
|
349
295
|
closure->SetStatus(shutdown_error_);
|
350
|
-
|
296
|
+
thread_pool_->Run(closure);
|
351
297
|
} else if (*st == reinterpret_cast<PosixEngineClosure*>(kClosureNotReady)) {
|
352
298
|
// not ready ==> switch to a waiting state by setting the closure
|
353
299
|
*st = closure;
|
@@ -356,7 +302,7 @@ int PollEventHandle::NotifyOnLocked(PosixEngineClosure** st,
|
|
356
302
|
// already ready ==> queue the closure to run immediately
|
357
303
|
*st = reinterpret_cast<PosixEngineClosure*>(kClosureNotReady);
|
358
304
|
closure->SetStatus(shutdown_error_);
|
359
|
-
|
305
|
+
thread_pool_->Run(closure);
|
360
306
|
return 1;
|
361
307
|
} else {
|
362
308
|
// upcallptr was set to a different closure. This is an error!
|
@@ -381,7 +327,7 @@ int PollEventHandle::SetReadyLocked(PosixEngineClosure** st) {
|
|
381
327
|
PosixEngineClosure* closure = *st;
|
382
328
|
*st = reinterpret_cast<PosixEngineClosure*>(kClosureNotReady);
|
383
329
|
closure->SetStatus(shutdown_error_);
|
384
|
-
|
330
|
+
thread_pool_->Run(closure);
|
385
331
|
return 1;
|
386
332
|
}
|
387
333
|
}
|
@@ -395,10 +341,11 @@ void PollEventHandle::ShutdownHandle(absl::Status why) {
|
|
395
341
|
// only shutdown once
|
396
342
|
if (!is_shutdown_) {
|
397
343
|
is_shutdown_ = true;
|
398
|
-
shutdown_error_ = why;
|
399
|
-
grpc_core::StatusSetInt(
|
400
|
-
|
401
|
-
|
344
|
+
shutdown_error_ = std::move(why);
|
345
|
+
grpc_core::StatusSetInt(
|
346
|
+
&shutdown_error_, grpc_core::StatusIntProperty::kRpcStatus,
|
347
|
+
absl::IsCancelled(shutdown_error_) ? GRPC_STATUS_CANCELLED
|
348
|
+
: GRPC_STATUS_UNAVAILABLE);
|
402
349
|
SetReadyLocked(&read_closure_);
|
403
350
|
SetReadyLocked(&write_closure_);
|
404
351
|
}
|
@@ -455,7 +402,7 @@ void PollEventHandle::NotifyOnError(PosixEngineClosure* on_error) {
|
|
455
402
|
on_error->SetStatus(
|
456
403
|
absl::Status(absl::StatusCode::kCancelled,
|
457
404
|
"Polling engine does not support tracking errors"));
|
458
|
-
|
405
|
+
thread_pool_->Run(on_error);
|
459
406
|
}
|
460
407
|
|
461
408
|
void PollEventHandle::SetReadable() {
|
@@ -556,30 +503,17 @@ void PollPoller::PollerHandlesListRemoveHandle(PollEventHandle* handle) {
|
|
556
503
|
--num_poll_handles_;
|
557
504
|
}
|
558
505
|
|
559
|
-
PollPoller::PollPoller(
|
560
|
-
|
561
|
-
|
562
|
-
was_kicked_(false),
|
563
|
-
was_kicked_ext_(false),
|
564
|
-
num_poll_handles_(0),
|
565
|
-
poll_handles_list_head_(nullptr),
|
566
|
-
closed_(false) {
|
567
|
-
wakeup_fd_ = *CreateWakeupFd();
|
568
|
-
CHECK(wakeup_fd_ != nullptr);
|
569
|
-
ForkPollerListAddPoller(this);
|
570
|
-
}
|
571
|
-
|
572
|
-
PollPoller::PollPoller(Scheduler* scheduler, bool use_phony_poll)
|
573
|
-
: scheduler_(scheduler),
|
506
|
+
PollPoller::PollPoller(std::shared_ptr<ThreadPool> thread_pool,
|
507
|
+
bool use_phony_poll)
|
508
|
+
: thread_pool_(std::move(thread_pool)),
|
574
509
|
use_phony_poll_(use_phony_poll),
|
575
510
|
was_kicked_(false),
|
576
511
|
was_kicked_ext_(false),
|
577
512
|
num_poll_handles_(0),
|
578
513
|
poll_handles_list_head_(nullptr),
|
579
514
|
closed_(false) {
|
580
|
-
wakeup_fd_ = *CreateWakeupFd();
|
515
|
+
wakeup_fd_ = *CreateWakeupFd(&posix_interface());
|
581
516
|
CHECK(wakeup_fd_ != nullptr);
|
582
|
-
ForkPollerListAddPoller(this);
|
583
517
|
}
|
584
518
|
|
585
519
|
PollPoller::~PollPoller() {
|
@@ -628,9 +562,12 @@ Poller::WorkResult PollPoller::Work(
|
|
628
562
|
}
|
629
563
|
|
630
564
|
pfd_count = 1;
|
631
|
-
|
565
|
+
auto wakeup_fd = posix_interface().GetFd(wakeup_fd_->ReadFd());
|
566
|
+
CHECK(wakeup_fd.ok()) << wakeup_fd.StrError();
|
567
|
+
pfds[0].fd = *wakeup_fd;
|
632
568
|
pfds[0].events = POLLIN;
|
633
569
|
pfds[0].revents = 0;
|
570
|
+
// Event handles from before fork, need to be notified
|
634
571
|
PollEventHandle* head = poll_handles_list_head_;
|
635
572
|
while (head != nullptr) {
|
636
573
|
{
|
@@ -640,27 +577,32 @@ Poller::WorkResult PollPoller::Work(
|
|
640
577
|
// poll handle list for the poller under the poller lock.
|
641
578
|
CHECK(!head->IsOrphaned());
|
642
579
|
if (!head->IsPollhup()) {
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
580
|
+
if (auto file_descriptor = posix_interface().GetFd(head->WrappedFd());
|
581
|
+
file_descriptor.ok()) {
|
582
|
+
pfds[pfd_count].fd = *file_descriptor;
|
583
|
+
watchers[pfd_count] = head;
|
584
|
+
// BeginPollLocked takes a ref of the handle. It also marks the
|
585
|
+
// fd as Watched with an appropriate watch_mask. The watch_mask
|
586
|
+
// is 0 if the fd is shutdown or if the fd is already ready (i.e
|
587
|
+
// both read and write events are already available) and doesn't
|
588
|
+
// need to be polled again. The watch_mask is > 0 otherwise
|
589
|
+
// indicating the fd needs to be polled.
|
590
|
+
pfds[pfd_count].events = head->BeginPollLocked(POLLIN, POLLOUT);
|
591
|
+
pfd_count++;
|
592
|
+
} else {
|
593
|
+
LOG(ERROR) << "Polling FD from a wrong generation: "
|
594
|
+
<< head->WrappedFd();
|
595
|
+
}
|
653
596
|
}
|
654
597
|
}
|
655
598
|
head = head->PollerHandlesListPos().next;
|
656
599
|
}
|
657
600
|
mu_.Unlock();
|
658
|
-
|
659
601
|
if (!use_phony_poll_ || timeout_ms == 0 || pfd_count == 1) {
|
660
602
|
// If use_phony_poll is true and pfd_count == 1, it implies only the
|
661
603
|
// wakeup_fd is present. Allow the call to get blocked in this case as
|
662
604
|
// well instead of crashing. This is because the poller::Work is called
|
663
|
-
// right after an event
|
605
|
+
// right after an event engine is constructed. Even if phony poll is
|
664
606
|
// expected to be used, we dont want to check for it until some actual
|
665
607
|
// event handles are registered. Otherwise the EventEngine construction
|
666
608
|
// may crash.
|
@@ -778,24 +720,45 @@ Poller::WorkResult PollPoller::Work(
|
|
778
720
|
return was_kicked_ext ? Poller::WorkResult::kKicked : Poller::WorkResult::kOk;
|
779
721
|
}
|
780
722
|
|
781
|
-
void PollPoller::Shutdown() { ForkPollerListRemovePoller(this); }
|
782
|
-
|
783
|
-
void PollPoller::PrepareFork() { Kick(); }
|
784
|
-
// TODO(vigneshbabu): implement
|
785
|
-
void PollPoller::PostforkParent() {}
|
786
|
-
// TODO(vigneshbabu): implement
|
787
|
-
void PollPoller::PostforkChild() {}
|
788
|
-
|
789
723
|
void PollPoller::Close() {
|
790
724
|
grpc_core::MutexLock lock(&mu_);
|
791
725
|
closed_ = true;
|
792
726
|
}
|
793
727
|
|
794
|
-
|
795
|
-
|
796
|
-
|
728
|
+
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
729
|
+
void PollPoller::HandleForkInChild() {
|
730
|
+
if (grpc_core::IsEventEngineForkEnabled()) {
|
731
|
+
posix_interface().AdvanceGeneration();
|
732
|
+
}
|
733
|
+
PollEventHandle* handle;
|
734
|
+
{
|
735
|
+
grpc_core::MutexLock lock(&mu_);
|
736
|
+
handle = poll_handles_list_head_;
|
737
|
+
}
|
738
|
+
while (handle != nullptr) {
|
739
|
+
handle->ShutdownHandle(absl::CancelledError("Closed on fork"));
|
740
|
+
handle = handle->PollerHandlesListPos().next;
|
741
|
+
}
|
742
|
+
}
|
743
|
+
#endif // GRPC_ENABLE_FORK_SUPPORT
|
744
|
+
|
745
|
+
void PollPoller::ResetKickState() {
|
746
|
+
wakeup_fd_ = *CreateWakeupFd(&posix_interface());
|
747
|
+
// Sometimes there's "kick" signalled on the wakeup FD. We need to redo it on
|
748
|
+
// new fd
|
749
|
+
// TODO (eostroukhov): Need to consider merging kicked/kicked_ext
|
750
|
+
// with the wakeup_fd so there's no duplicate state.
|
751
|
+
grpc_core::MutexLock lock(&mu_);
|
752
|
+
was_kicked_ = false;
|
753
|
+
was_kicked_ext_ = false;
|
754
|
+
}
|
755
|
+
|
756
|
+
std::shared_ptr<PollPoller> MakePollPoller(
|
757
|
+
std::shared_ptr<ThreadPool> thread_pool, bool use_phony_poll) {
|
758
|
+
static bool kPollPollerSupported =
|
759
|
+
grpc_event_engine::experimental::SupportsWakeupFd();
|
797
760
|
if (kPollPollerSupported) {
|
798
|
-
return std::make_shared<PollPoller>(
|
761
|
+
return std::make_shared<PollPoller>(std::move(thread_pool), use_phony_poll);
|
799
762
|
}
|
800
763
|
return nullptr;
|
801
764
|
}
|
@@ -808,15 +771,10 @@ std::shared_ptr<PollPoller> MakePollPoller(Scheduler* scheduler,
|
|
808
771
|
|
809
772
|
namespace grpc_event_engine::experimental {
|
810
773
|
|
811
|
-
PollPoller::PollPoller(Scheduler* /* engine */) {
|
812
|
-
grpc_core::Crash("unimplemented");
|
813
|
-
}
|
814
|
-
|
815
|
-
void PollPoller::Shutdown() { grpc_core::Crash("unimplemented"); }
|
816
|
-
|
817
774
|
PollPoller::~PollPoller() { grpc_core::Crash("unimplemented"); }
|
818
775
|
|
819
|
-
EventHandle* PollPoller::CreateHandle(
|
776
|
+
EventHandle* PollPoller::CreateHandle(FileDescriptor /*fd*/,
|
777
|
+
absl::string_view /*name*/,
|
820
778
|
bool /*track_err*/) {
|
821
779
|
grpc_core::Crash("unimplemented");
|
822
780
|
}
|
@@ -831,15 +789,16 @@ void PollPoller::Kick() { grpc_core::Crash("unimplemented"); }
|
|
831
789
|
|
832
790
|
// If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
|
833
791
|
// nullptr.
|
834
|
-
std::shared_ptr<PollPoller> MakePollPoller(
|
835
|
-
|
792
|
+
std::shared_ptr<PollPoller> MakePollPoller(
|
793
|
+
std::shared_ptr<ThreadPool> /*thread_pool*/, bool /* use_phony_poll */) {
|
836
794
|
return nullptr;
|
837
795
|
}
|
838
796
|
|
839
|
-
|
840
|
-
void PollPoller::
|
841
|
-
|
797
|
+
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
798
|
+
void PollPoller::HandleForkInChild() { grpc_core::Crash("unimplemented"); }
|
799
|
+
#endif // GRPC_ENABLE_FORK_SUPPORT
|
842
800
|
|
801
|
+
void PollPoller::ResetKickState() { grpc_core::Crash("unimplemented"); }
|
843
802
|
void PollPoller::Close() { grpc_core::Crash("unimplemented"); }
|
844
803
|
|
845
804
|
void PollPoller::KickExternal(bool /*ext*/) {
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include "src/core/lib/event_engine/poller.h"
|
28
28
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
29
29
|
#include "src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h"
|
30
|
+
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
30
31
|
#include "src/core/util/sync.h"
|
31
32
|
|
32
33
|
namespace grpc_event_engine::experimental {
|
@@ -37,27 +38,26 @@ class PollEventHandle;
|
|
37
38
|
class PollPoller : public PosixEventPoller,
|
38
39
|
public std::enable_shared_from_this<PollPoller> {
|
39
40
|
public:
|
40
|
-
explicit PollPoller(
|
41
|
-
|
42
|
-
EventHandle* CreateHandle(
|
41
|
+
explicit PollPoller(std::shared_ptr<ThreadPool> thread_pool,
|
42
|
+
bool use_phony_poll = false);
|
43
|
+
EventHandle* CreateHandle(FileDescriptor fd, absl::string_view name,
|
43
44
|
bool track_err) override;
|
44
45
|
Poller::WorkResult Work(
|
45
46
|
grpc_event_engine::experimental::EventEngine::Duration timeout,
|
46
47
|
absl::FunctionRef<void()> schedule_poll_again) override;
|
47
48
|
std::string Name() override { return "poll"; }
|
48
49
|
void Kick() override;
|
49
|
-
|
50
|
-
void Shutdown() override;
|
50
|
+
ThreadPool* GetThreadPool() { return thread_pool_.get(); }
|
51
51
|
bool CanTrackErrors() const override { return false; }
|
52
52
|
~PollPoller() override;
|
53
53
|
|
54
|
-
// Forkable
|
55
|
-
void PrepareFork() override;
|
56
|
-
void PostforkParent() override;
|
57
|
-
void PostforkChild() override;
|
58
|
-
|
59
54
|
void Close();
|
60
55
|
|
56
|
+
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
57
|
+
void HandleForkInChild() override;
|
58
|
+
#endif // GRPC_ENABLE_FORK_SUPPORT
|
59
|
+
void ResetKickState() override;
|
60
|
+
|
61
61
|
private:
|
62
62
|
void KickExternal(bool ext);
|
63
63
|
void PollerHandlesListAddHandle(PollEventHandle* handle)
|
@@ -73,7 +73,7 @@ class PollPoller : public PosixEventPoller,
|
|
73
73
|
PollEventHandle* prev = nullptr;
|
74
74
|
};
|
75
75
|
grpc_core::Mutex mu_;
|
76
|
-
|
76
|
+
std::shared_ptr<ThreadPool> thread_pool_;
|
77
77
|
bool use_phony_poll_;
|
78
78
|
bool was_kicked_ ABSL_GUARDED_BY(mu_);
|
79
79
|
bool was_kicked_ext_ ABSL_GUARDED_BY(mu_);
|
@@ -87,8 +87,8 @@ class PollPoller : public PosixEventPoller,
|
|
87
87
|
// It use_phony_poll is true, it implies that the poller is declared
|
88
88
|
// non-polling and any attempt to schedule a blocking poll will result in a
|
89
89
|
// crash failure.
|
90
|
-
std::shared_ptr<PollPoller> MakePollPoller(
|
91
|
-
|
90
|
+
std::shared_ptr<PollPoller> MakePollPoller(
|
91
|
+
std::shared_ptr<ThreadPool> thread_pool, bool use_phony_poll);
|
92
92
|
|
93
93
|
} // namespace grpc_event_engine::experimental
|
94
94
|
|
@@ -19,34 +19,27 @@
|
|
19
19
|
|
20
20
|
#include <string>
|
21
21
|
|
22
|
-
#include "absl/functional/any_invocable.h"
|
23
22
|
#include "absl/status/status.h"
|
24
23
|
#include "absl/strings/string_view.h"
|
25
|
-
#include "src/core/lib/event_engine/forkable.h"
|
26
24
|
#include "src/core/lib/event_engine/poller.h"
|
27
25
|
#include "src/core/lib/event_engine/posix_engine/posix_engine_closure.h"
|
26
|
+
#include "src/core/lib/event_engine/posix_engine/posix_interface.h"
|
28
27
|
|
29
28
|
namespace grpc_event_engine::experimental {
|
30
29
|
|
31
|
-
class Scheduler {
|
32
|
-
public:
|
33
|
-
virtual void Run(experimental::EventEngine::Closure* closure) = 0;
|
34
|
-
virtual void Run(absl::AnyInvocable<void()>) = 0;
|
35
|
-
virtual ~Scheduler() = default;
|
36
|
-
};
|
37
|
-
|
38
30
|
class PosixEventPoller;
|
39
31
|
|
40
32
|
class EventHandle {
|
41
33
|
public:
|
42
|
-
virtual
|
34
|
+
virtual FileDescriptor WrappedFd() = 0;
|
43
35
|
// Delete the handle and optionally close the underlying file descriptor if
|
44
36
|
// release_fd != nullptr. The on_done closure is scheduled to be invoked
|
45
37
|
// after the operation is complete. After this operation, NotifyXXX and SetXXX
|
46
38
|
// operations cannot be performed on the handle. In general, this method
|
47
39
|
// should only be called after ShutdownHandle and after all existing NotifyXXX
|
48
40
|
// closures have run and there is no waiting NotifyXXX closure.
|
49
|
-
virtual void OrphanHandle(PosixEngineClosure* on_done,
|
41
|
+
virtual void OrphanHandle(PosixEngineClosure* on_done,
|
42
|
+
FileDescriptor* release_fd,
|
50
43
|
absl::string_view reason) = 0;
|
51
44
|
// Shutdown a handle. If there is an attempt to call NotifyXXX operations
|
52
45
|
// after Shutdown handle, those closures will be run immediately with the
|
@@ -84,24 +77,26 @@ class EventHandle {
|
|
84
77
|
virtual ~EventHandle() = default;
|
85
78
|
};
|
86
79
|
|
87
|
-
class PosixEventPoller : public grpc_event_engine::experimental::Poller
|
88
|
-
public Forkable {
|
80
|
+
class PosixEventPoller : public grpc_event_engine::experimental::Poller {
|
89
81
|
public:
|
90
82
|
// Return an opaque handle to perform actions on the provided file descriptor.
|
91
|
-
virtual EventHandle* CreateHandle(
|
83
|
+
virtual EventHandle* CreateHandle(FileDescriptor fd, absl::string_view name,
|
92
84
|
bool track_err) = 0;
|
93
85
|
virtual bool CanTrackErrors() const = 0;
|
94
86
|
virtual std::string Name() = 0;
|
95
|
-
|
96
|
-
//
|
97
|
-
//
|
98
|
-
//
|
99
|
-
//
|
100
|
-
|
101
|
-
//
|
102
|
-
|
103
|
-
|
87
|
+
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
88
|
+
// Handles fork in the child process. It performs cleanups like closing file
|
89
|
+
// descriptors, resetting lingering state to make sure the child and parent
|
90
|
+
// processes do not interfere with each other and that the child process
|
91
|
+
// remains in valid state.
|
92
|
+
virtual void HandleForkInChild() = 0;
|
93
|
+
#endif // GRPC_ENABLE_FORK_SUPPORT
|
94
|
+
virtual void ResetKickState() = 0;
|
95
|
+
EventEnginePosixInterface& posix_interface() { return posix_interface_; }
|
104
96
|
~PosixEventPoller() override = default;
|
97
|
+
|
98
|
+
private:
|
99
|
+
EventEnginePosixInterface posix_interface_;
|
105
100
|
};
|
106
101
|
|
107
102
|
} // namespace grpc_event_engine::experimental
|
@@ -15,67 +15,55 @@
|
|
15
15
|
#include <grpc/support/port_platform.h>
|
16
16
|
|
17
17
|
#include <memory>
|
18
|
-
#include <
|
18
|
+
#include <utility>
|
19
19
|
|
20
20
|
#include "absl/strings/str_split.h"
|
21
21
|
#include "absl/strings/string_view.h"
|
22
22
|
#include "src/core/config/config_vars.h"
|
23
|
-
#include "src/core/lib/event_engine/forkable.h"
|
24
23
|
#include "src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h"
|
25
24
|
#include "src/core/lib/event_engine/posix_engine/ev_poll_posix.h"
|
26
25
|
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
27
26
|
#include "src/core/lib/iomgr/port.h"
|
28
|
-
#include "src/core/util/no_destruct.h"
|
29
27
|
|
30
28
|
namespace grpc_event_engine::experimental {
|
31
29
|
|
32
30
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
33
31
|
namespace {
|
34
|
-
// TODO(yijiem): this object is thread-unsafe, if we are creating pollers in
|
35
|
-
// multiple threads (e.g. multiple event engines) or if we are creating pollers
|
36
|
-
// while we are forking then we will run into issues.
|
37
|
-
grpc_core::NoDestruct<ObjectGroupForkHandler> g_poller_fork_manager;
|
38
|
-
|
39
|
-
class PollerForkCallbackMethods {
|
40
|
-
public:
|
41
|
-
static void Prefork() { g_poller_fork_manager->Prefork(); }
|
42
|
-
static void PostforkParent() { g_poller_fork_manager->PostforkParent(); }
|
43
|
-
static void PostforkChild() { g_poller_fork_manager->PostforkChild(); }
|
44
|
-
};
|
45
32
|
|
46
33
|
bool PollStrategyMatches(absl::string_view strategy, absl::string_view want) {
|
47
34
|
return strategy == "all" || strategy == want;
|
48
35
|
}
|
49
36
|
} // namespace
|
50
37
|
|
51
|
-
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
38
|
+
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
39
|
+
std::shared_ptr<ThreadPool> thread_pool) {
|
40
|
+
// Note that Make*Poller are allowed to return nullptr - e.g. MakeEpoll1Poller
|
41
|
+
// would return nullptr if an epoll poller is requested on unsupported
|
42
|
+
// platform.
|
52
43
|
std::shared_ptr<PosixEventPoller> poller;
|
53
44
|
auto strings =
|
54
45
|
absl::StrSplit(grpc_core::ConfigVars::Get().PollStrategy(), ',');
|
55
46
|
for (auto it = strings.begin(); it != strings.end() && poller == nullptr;
|
56
47
|
it++) {
|
57
48
|
if (PollStrategyMatches(*it, "epoll1")) {
|
58
|
-
poller = MakeEpoll1Poller(
|
49
|
+
poller = MakeEpoll1Poller(thread_pool);
|
59
50
|
}
|
60
51
|
if (poller == nullptr && PollStrategyMatches(*it, "poll")) {
|
61
52
|
// If epoll1 fails and if poll strategy matches "poll", use Poll poller
|
62
|
-
poller = MakePollPoller(
|
53
|
+
poller = MakePollPoller(thread_pool, /*use_phony_poll=*/false);
|
63
54
|
} else if (poller == nullptr && PollStrategyMatches(*it, "none")) {
|
64
55
|
// If epoll1 fails and if poll strategy matches "none", use phony poll
|
65
56
|
// poller.
|
66
|
-
poller = MakePollPoller(
|
57
|
+
poller = MakePollPoller(thread_pool, /*use_phony_poll=*/true);
|
67
58
|
}
|
68
59
|
}
|
69
|
-
g_poller_fork_manager->RegisterForkable(
|
70
|
-
poller, PollerForkCallbackMethods::Prefork,
|
71
|
-
PollerForkCallbackMethods::PostforkParent,
|
72
|
-
PollerForkCallbackMethods::PostforkChild);
|
73
60
|
return poller;
|
74
61
|
}
|
75
62
|
|
76
63
|
#else // GRPC_POSIX_SOCKET_TCP
|
77
64
|
|
78
|
-
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
65
|
+
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
66
|
+
std::shared_ptr<ThreadPool> /*thread_pool*/) {
|
79
67
|
return nullptr;
|
80
68
|
}
|
81
69
|
|
@@ -22,11 +22,12 @@
|
|
22
22
|
namespace grpc_event_engine::experimental {
|
23
23
|
|
24
24
|
class PosixEventPoller;
|
25
|
-
class
|
25
|
+
class ThreadPool;
|
26
26
|
|
27
27
|
// Return an instance of an event poller which is tied to the specified
|
28
28
|
// scheduler.
|
29
|
-
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
29
|
+
std::shared_ptr<PosixEventPoller> MakeDefaultPoller(
|
30
|
+
std::shared_ptr<ThreadPool> thread_pool);
|
30
31
|
|
31
32
|
} // namespace grpc_event_engine::experimental
|
32
33
|
|