grpc 1.73.0 → 1.74.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 +38 -17
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +11 -5
- 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/interception_chain.h +7 -11
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +270 -181
- data/src/core/channelz/channelz.h +168 -55
- data/src/core/channelz/channelz_registry.cc +2 -1
- data/src/core/channelz/channelz_registry.h +24 -0
- data/src/core/channelz/property_list.cc +357 -0
- data/src/core/channelz/property_list.h +202 -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 +19 -29
- 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/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 +43 -19
- data/src/core/client_channel/subchannel.h +8 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +1 -0
- data/src/core/config/core_configuration.h +11 -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/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- 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_authority_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- 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 +162 -115
- 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.h +22 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -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 +299 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -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 +1017 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
- 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 +43 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -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 +2 -4
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -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_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/writing.cc +37 -11
- 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 +984 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -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/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 +135 -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 +0 -25
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- 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 +6 -5
- data/src/core/handshaker/security/secure_endpoint.cc +70 -25
- 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.h +5 -5
- 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 +48 -2
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -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 +130 -162
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
- 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 +29 -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/posix_endpoint.cc +145 -92
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
- 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 +10 -170
- 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 +4 -0
- 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 +45 -93
- data/src/core/lib/experiments/experiments.h +21 -51
- 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/tcp_posix.cc +12 -6
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +1 -0
- 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 +50 -1
- data/src/core/lib/promise/party.h +66 -1
- 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/slice/slice.h +5 -0
- 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/filter_stack_call.cc +18 -9
- 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/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 +3 -0
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- 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 +21 -6
- 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 +83 -12
- data/src/core/server/server.h +21 -2
- 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_impl.h +1 -1
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/stats_data.cc +233 -207
- data/src/core/telemetry/stats_data.h +250 -153
- data/src/core/telemetry/tcp_tracer.h +1 -1
- 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 +2 -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/latent_see.h +8 -5
- 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 +2 -2
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +53 -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/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_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 +72 -568
- 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 +1 -1
- 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
- metadata +72 -20
- 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/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
@@ -0,0 +1,281 @@
|
|
1
|
+
// Copyright 2025 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <grpc/event_engine/event_engine.h>
|
16
|
+
#include <grpc/support/port_platform.h>
|
17
|
+
|
18
|
+
#include "src/core/lib/iomgr/port.h"
|
19
|
+
|
20
|
+
// Stubs for compiling on non-POSIX platforms (e.g., Windows)
|
21
|
+
#ifndef GRPC_POSIX_SOCKET
|
22
|
+
#include "src/core/lib/event_engine/posix_engine/posix_interface.h"
|
23
|
+
#include "src/core/util/crash.h"
|
24
|
+
|
25
|
+
namespace grpc_event_engine::experimental {
|
26
|
+
|
27
|
+
bool IsSocketReusePortSupported() {
|
28
|
+
grpc_core::Crash(
|
29
|
+
"unimplemented on this platform: IsSocketReusePortSupported");
|
30
|
+
}
|
31
|
+
|
32
|
+
PosixErrorOr<FileDescriptor> EventEnginePosixInterface::Accept(
|
33
|
+
const FileDescriptor& sockfd, struct sockaddr* addr, socklen_t* addrlen) {
|
34
|
+
grpc_core::Crash(
|
35
|
+
"unimplemented on this platform: EventEnginePosixInterface::Accept");
|
36
|
+
}
|
37
|
+
|
38
|
+
PosixErrorOr<FileDescriptor> EventEnginePosixInterface::Accept4(
|
39
|
+
const FileDescriptor& sockfd,
|
40
|
+
grpc_event_engine::experimental::EventEngine::ResolvedAddress& addr,
|
41
|
+
int nonblock, int cloexec) {
|
42
|
+
grpc_core::Crash(
|
43
|
+
"unimplemented on this platform: EventEnginePosixInterface::Accept4");
|
44
|
+
}
|
45
|
+
|
46
|
+
PosixErrorOr<FileDescriptor> EventEnginePosixInterface::Socket(int domain,
|
47
|
+
int type,
|
48
|
+
int protocol) {
|
49
|
+
grpc_core::Crash(
|
50
|
+
"unimplemented on this platform: EventEnginePosixInterface::Socket");
|
51
|
+
}
|
52
|
+
|
53
|
+
#ifndef GRPC_POSIX_WAKEUP_FD
|
54
|
+
absl::StatusOr<std::pair<FileDescriptor, FileDescriptor> >
|
55
|
+
EventEnginePosixInterface::Pipe() {
|
56
|
+
grpc_core::Crash(
|
57
|
+
"unimplemented on this platform: EventEnginePosixInterface::Pipe");
|
58
|
+
}
|
59
|
+
#endif // GRPC_POSIX_WAKEUP_FD
|
60
|
+
|
61
|
+
PosixError EventEnginePosixInterface::Connect(const FileDescriptor& sockfd,
|
62
|
+
const struct sockaddr* addr,
|
63
|
+
socklen_t addrlen) {
|
64
|
+
grpc_core::Crash(
|
65
|
+
"unimplemented on this platform: EventEnginePosixInterface::Connect");
|
66
|
+
}
|
67
|
+
|
68
|
+
PosixError EventEnginePosixInterface::Ioctl(const FileDescriptor& fd, int op,
|
69
|
+
void* arg) {
|
70
|
+
grpc_core::Crash(
|
71
|
+
"unimplemented on this platform: EventEnginePosixInterface::Ioctl");
|
72
|
+
}
|
73
|
+
|
74
|
+
PosixError EventEnginePosixInterface::Shutdown(const FileDescriptor& fd,
|
75
|
+
int how) {
|
76
|
+
grpc_core::Crash(
|
77
|
+
"unimplemented on this platform: EventEnginePosixInterface::Shutdown");
|
78
|
+
}
|
79
|
+
|
80
|
+
PosixError EventEnginePosixInterface::GetSockOpt(const FileDescriptor& fd,
|
81
|
+
int level, int optname,
|
82
|
+
void* optval, void* optlen) {
|
83
|
+
grpc_core::Crash(
|
84
|
+
"unimplemented on this platform: EventEnginePosixInterface::GetSockOpt");
|
85
|
+
}
|
86
|
+
|
87
|
+
PosixErrorOr<int64_t> EventEnginePosixInterface::SetSockOpt(
|
88
|
+
const FileDescriptor& fd, int level, int optname, uint32_t optval) {
|
89
|
+
grpc_core::Crash(
|
90
|
+
"unimplemented on this platform: EventEnginePosixInterface::SetSockOpt");
|
91
|
+
}
|
92
|
+
|
93
|
+
#ifndef GRPC_POSIX_WAKEUP_FD
|
94
|
+
PosixErrorOr<int64_t> EventEnginePosixInterface::Read(const FileDescriptor& fd,
|
95
|
+
absl::Span<char> buf) {
|
96
|
+
grpc_core::Crash(
|
97
|
+
"unimplemented on this platform: EventEnginePosixInterface::Read");
|
98
|
+
}
|
99
|
+
|
100
|
+
PosixErrorOr<int64_t> EventEnginePosixInterface::Write(const FileDescriptor& fd,
|
101
|
+
absl::Span<char> buf) {
|
102
|
+
grpc_core::Crash(
|
103
|
+
"unimplemented on this platform: EventEnginePosixInterface::Write");
|
104
|
+
}
|
105
|
+
#endif // GRPC_POSIX_WAKEUP_FD
|
106
|
+
|
107
|
+
PosixErrorOr<int64_t> EventEnginePosixInterface::RecvMsg(
|
108
|
+
const FileDescriptor& fd, struct msghdr* message, int flags) {
|
109
|
+
grpc_core::Crash(
|
110
|
+
"unimplemented on this platform: EventEnginePosixInterface::RecvMsg");
|
111
|
+
}
|
112
|
+
|
113
|
+
PosixErrorOr<int64_t> EventEnginePosixInterface::SendMsg(
|
114
|
+
const FileDescriptor& fd, const struct msghdr* message, int flags) {
|
115
|
+
grpc_core::Crash(
|
116
|
+
"unimplemented on this platform: EventEnginePosixInterface::SendMsg");
|
117
|
+
}
|
118
|
+
|
119
|
+
// Note: PrepareTcpClientSocket is private in the header, stubs might not be
|
120
|
+
// needed depending on usage, but updating message for consistency if it is.
|
121
|
+
absl::Status EventEnginePosixInterface::PrepareTcpClientSocket(
|
122
|
+
int fd, const EventEngine::ResolvedAddress& addr,
|
123
|
+
const PosixTcpOptions& options) {
|
124
|
+
grpc_core::Crash(
|
125
|
+
"unimplemented on this platform: "
|
126
|
+
"EventEnginePosixInterface::PrepareTcpClientSocket");
|
127
|
+
}
|
128
|
+
|
129
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
130
|
+
EventEnginePosixInterface::PrepareListenerSocket(
|
131
|
+
const FileDescriptor& fd, const PosixTcpOptions& options,
|
132
|
+
const EventEngine::ResolvedAddress& address) {
|
133
|
+
grpc_core::Crash(
|
134
|
+
"unimplemented on this platform: "
|
135
|
+
"EventEnginePosixInterface::PrepareListenerSocket");
|
136
|
+
}
|
137
|
+
|
138
|
+
absl::StatusOr<int> EventEnginePosixInterface::GetUnusedPort() {
|
139
|
+
grpc_core::Crash(
|
140
|
+
"unimplemented on this platform: "
|
141
|
+
"EventEnginePosixInterface::GetUnusedPort");
|
142
|
+
}
|
143
|
+
|
144
|
+
// Note: InternalApplySocketMutatorInOptions seems like a helper not in the
|
145
|
+
// class. Assuming it's a free function in this namespace.
|
146
|
+
absl::Status InternalApplySocketMutatorInOptions(
|
147
|
+
int fd, grpc_fd_usage usage, const PosixTcpOptions& options) {
|
148
|
+
grpc_core::Crash(
|
149
|
+
"unimplemented on this platform: InternalApplySocketMutatorInOptions");
|
150
|
+
}
|
151
|
+
|
152
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
153
|
+
EventEnginePosixInterface::LocalAddress(const FileDescriptor& fd) {
|
154
|
+
grpc_core::Crash(
|
155
|
+
"unimplemented on this platform: "
|
156
|
+
"EventEnginePosixInterface::LocalAddress");
|
157
|
+
}
|
158
|
+
|
159
|
+
absl::StatusOr<std::string> EventEnginePosixInterface::LocalAddressString(
|
160
|
+
const FileDescriptor& fd) {
|
161
|
+
grpc_core::Crash(
|
162
|
+
"unimplemented on this platform: "
|
163
|
+
"EventEnginePosixInterface::LocalAddressString");
|
164
|
+
}
|
165
|
+
|
166
|
+
PosixErrorOr<FileDescriptor> EventEnginePosixInterface::EventFd(int initval,
|
167
|
+
int flags) {
|
168
|
+
grpc_core::Crash(
|
169
|
+
"unimplemented on this platform: EventEnginePosixInterface::EventFd");
|
170
|
+
}
|
171
|
+
|
172
|
+
PosixError EventEnginePosixInterface::EventFdRead(const FileDescriptor& fd) {
|
173
|
+
grpc_core::Crash(
|
174
|
+
"unimplemented on this platform: EventEnginePosixInterface::EventFdRead");
|
175
|
+
}
|
176
|
+
|
177
|
+
PosixError EventEnginePosixInterface::EventFdWrite(const FileDescriptor& fd) {
|
178
|
+
grpc_core::Crash(
|
179
|
+
"unimplemented on this platform: "
|
180
|
+
"EventEnginePosixInterface::EventFdWrite");
|
181
|
+
}
|
182
|
+
|
183
|
+
int EventEnginePosixInterface::ConfigureSocket(const FileDescriptor& fd,
|
184
|
+
int type) {
|
185
|
+
grpc_core::Crash(
|
186
|
+
"unimplemented on this platform: "
|
187
|
+
"EventEnginePosixInterface::ConfigureSocket");
|
188
|
+
}
|
189
|
+
|
190
|
+
PosixErrorOr<int> EventEnginePosixInterface::GetFd(const FileDescriptor& fd) {
|
191
|
+
grpc_core::Crash(
|
192
|
+
"unimplemented on this platform: "
|
193
|
+
"EventEnginePosixInterface::GetFd");
|
194
|
+
}
|
195
|
+
|
196
|
+
absl::StatusOr<EventEngine::ResolvedAddress>
|
197
|
+
EventEnginePosixInterface::PeerAddress(const FileDescriptor& fd) {
|
198
|
+
grpc_core::Crash(
|
199
|
+
"unimplemented on this platform: EventEnginePosixInterface::PeerAddress");
|
200
|
+
}
|
201
|
+
|
202
|
+
absl::StatusOr<std::string> EventEnginePosixInterface::PeerAddressString(
|
203
|
+
const FileDescriptor& fd) {
|
204
|
+
grpc_core::Crash(
|
205
|
+
"unimplemented on this platform: "
|
206
|
+
"EventEnginePosixInterface::PeerAddressString");
|
207
|
+
}
|
208
|
+
|
209
|
+
#ifndef GRPC_POSIX_WAKEUP_FD
|
210
|
+
void EventEnginePosixInterface::Close(const FileDescriptor& fd) {
|
211
|
+
grpc_core::Crash(
|
212
|
+
"unimplemented on this platform: EventEnginePosixInterface::Close");
|
213
|
+
}
|
214
|
+
#endif // GRPC_POSIX_WAKEUP_FD
|
215
|
+
|
216
|
+
absl::StatusOr<FileDescriptor> EventEnginePosixInterface::CreateDualStackSocket(
|
217
|
+
std::function<int(int, int, int)> socket_factory,
|
218
|
+
const experimental::EventEngine::ResolvedAddress& addr, int type,
|
219
|
+
int protocol, DSMode& dsmode) {
|
220
|
+
grpc_core::Crash(
|
221
|
+
"unimplemented on this platform: "
|
222
|
+
"EventEnginePosixInterface::CreateDualStackSocket");
|
223
|
+
}
|
224
|
+
|
225
|
+
absl::Status EventEnginePosixInterface::ApplySocketMutatorInOptions(
|
226
|
+
const FileDescriptor& fd, grpc_fd_usage usage,
|
227
|
+
const PosixTcpOptions& options) {
|
228
|
+
grpc_core::Crash(
|
229
|
+
"unimplemented on this platform: "
|
230
|
+
"EventEnginePosixInterface::ApplySocketMutatorInOptions");
|
231
|
+
}
|
232
|
+
|
233
|
+
absl::StatusOr<EventEnginePosixInterface::PosixSocketCreateResult>
|
234
|
+
EventEnginePosixInterface::CreateAndPrepareTcpClientSocket(
|
235
|
+
const PosixTcpOptions& options,
|
236
|
+
const EventEngine::ResolvedAddress& target_addr) {
|
237
|
+
grpc_core::Crash(
|
238
|
+
"unimplemented on this platform: "
|
239
|
+
"EventEnginePosixInterface::CreateAndPrepareTcpClientSocket");
|
240
|
+
}
|
241
|
+
|
242
|
+
FileDescriptor EventEnginePosixInterface::Adopt(int fd) {
|
243
|
+
grpc_core::Crash(
|
244
|
+
"unimplemented on this platform: EventEnginePosixInterface::Adopt");
|
245
|
+
}
|
246
|
+
|
247
|
+
PosixErrorOr<FileDescriptor>
|
248
|
+
EventEnginePosixInterface::EpollCreateAndCloexec() {
|
249
|
+
grpc_core::Crash(
|
250
|
+
"unimplemented on this platform: "
|
251
|
+
"EventEnginePosixInterface::EpollCreateAndCloexec");
|
252
|
+
}
|
253
|
+
|
254
|
+
absl::Status EventEnginePosixInterface::SetSocketNoSigpipeIfPossible(
|
255
|
+
const FileDescriptor& fd) {
|
256
|
+
grpc_core::Crash(
|
257
|
+
"unimplemented on this platform: "
|
258
|
+
"EventEnginePosixInterface::SetSocketNoSigpipeIfPossible");
|
259
|
+
}
|
260
|
+
|
261
|
+
#ifdef GRPC_ENABLE_FORK_SUPPORT
|
262
|
+
|
263
|
+
void EventEnginePosixInterface::AdvanceGeneration() {
|
264
|
+
grpc_core::Crash(
|
265
|
+
"unimplemented on this platform: "
|
266
|
+
"EventEnginePosixInterface::AdvanceGeneration");
|
267
|
+
}
|
268
|
+
|
269
|
+
#endif // GRPC_ENABLE_FORK_SUPPORT
|
270
|
+
|
271
|
+
absl::Status EventEnginePosixInterface::SetSocketMutator(
|
272
|
+
const FileDescriptor& fd, grpc_fd_usage usage,
|
273
|
+
grpc_socket_mutator* mutator) {
|
274
|
+
grpc_core::Crash(
|
275
|
+
"unimplemented on this platform: "
|
276
|
+
"EventEnginePosixInterface::SetSocketMutator");
|
277
|
+
}
|
278
|
+
|
279
|
+
} // namespace grpc_event_engine::experimental
|
280
|
+
|
281
|
+
#endif // !GRPC_POSIX_SOCKET
|
@@ -0,0 +1,154 @@
|
|
1
|
+
// Copyright 2025 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include "src/core/lib/event_engine/posix_engine/posix_write_event_sink.h"
|
16
|
+
|
17
|
+
namespace grpc_event_engine::experimental {
|
18
|
+
|
19
|
+
std::optional<size_t> PosixWriteEventSink::GetMetricKey(
|
20
|
+
absl::string_view name) {
|
21
|
+
if (name == "delivery_rate") {
|
22
|
+
return static_cast<size_t>(Metric::kDeliveryRate);
|
23
|
+
}
|
24
|
+
if (name == "is_delivery_rate_app_limited") {
|
25
|
+
return static_cast<size_t>(Metric::kIsDeliveryRateAppLimited);
|
26
|
+
}
|
27
|
+
if (name == "packet_retx") return static_cast<size_t>(Metric::kPacketRetx);
|
28
|
+
if (name == "packet_spurious_retx") {
|
29
|
+
return static_cast<size_t>(Metric::kPacketSpuriousRetx);
|
30
|
+
}
|
31
|
+
if (name == "packet_sent") return static_cast<size_t>(Metric::kPacketSent);
|
32
|
+
if (name == "packet_delivered") {
|
33
|
+
return static_cast<size_t>(Metric::kPacketDelivered);
|
34
|
+
}
|
35
|
+
if (name == "packet_delivered_ce") {
|
36
|
+
return static_cast<size_t>(Metric::kPacketDeliveredCE);
|
37
|
+
}
|
38
|
+
if (name == "data_retx") return static_cast<size_t>(Metric::kDataRetx);
|
39
|
+
if (name == "data_sent") return static_cast<size_t>(Metric::kDataSent);
|
40
|
+
if (name == "data_notsent") {
|
41
|
+
return static_cast<size_t>(Metric::kDataNotSent);
|
42
|
+
}
|
43
|
+
if (name == "pacing_rate") return static_cast<size_t>(Metric::kPacingRate);
|
44
|
+
if (name == "min_rtt") return static_cast<size_t>(Metric::kMinRtt);
|
45
|
+
if (name == "srtt") return static_cast<size_t>(Metric::kSrtt);
|
46
|
+
if (name == "congestion_window") {
|
47
|
+
return static_cast<size_t>(Metric::kCongestionWindow);
|
48
|
+
}
|
49
|
+
if (name == "snd_ssthresh") {
|
50
|
+
return static_cast<size_t>(Metric::kSndSsthresh);
|
51
|
+
}
|
52
|
+
if (name == "reordering") return static_cast<size_t>(Metric::kReordering);
|
53
|
+
if (name == "recurring_retrans") {
|
54
|
+
return static_cast<size_t>(Metric::kRecurringRetrans);
|
55
|
+
}
|
56
|
+
if (name == "busy_usec") return static_cast<size_t>(Metric::kBusyUsec);
|
57
|
+
if (name == "rwnd_limited_usec") {
|
58
|
+
return static_cast<size_t>(Metric::kRwndLimitedUsec);
|
59
|
+
}
|
60
|
+
if (name == "sndbuf_limited_usec") {
|
61
|
+
return static_cast<size_t>(Metric::kSndbufLimitedUsec);
|
62
|
+
}
|
63
|
+
return std::nullopt;
|
64
|
+
}
|
65
|
+
|
66
|
+
std::optional<absl::string_view> PosixWriteEventSink::GetMetricName(
|
67
|
+
size_t key) {
|
68
|
+
switch (key) {
|
69
|
+
case static_cast<size_t>(Metric::kDeliveryRate):
|
70
|
+
return "delivery_rate";
|
71
|
+
case static_cast<size_t>(Metric::kIsDeliveryRateAppLimited):
|
72
|
+
return "is_delivery_rate_app_limited";
|
73
|
+
case static_cast<size_t>(Metric::kPacketRetx):
|
74
|
+
return "packet_retx";
|
75
|
+
case static_cast<size_t>(Metric::kPacketSpuriousRetx):
|
76
|
+
return "packet_spurious_retx";
|
77
|
+
case static_cast<size_t>(Metric::kPacketSent):
|
78
|
+
return "packet_sent";
|
79
|
+
case static_cast<size_t>(Metric::kPacketDelivered):
|
80
|
+
return "packet_delivered";
|
81
|
+
case static_cast<size_t>(Metric::kPacketDeliveredCE):
|
82
|
+
return "packet_delivered_ce";
|
83
|
+
case static_cast<size_t>(Metric::kDataRetx):
|
84
|
+
return "data_retx";
|
85
|
+
case static_cast<size_t>(Metric::kDataSent):
|
86
|
+
return "data_sent";
|
87
|
+
case static_cast<size_t>(Metric::kDataNotSent):
|
88
|
+
return "data_notsent";
|
89
|
+
case static_cast<size_t>(Metric::kPacingRate):
|
90
|
+
return "pacing_rate";
|
91
|
+
case static_cast<size_t>(Metric::kMinRtt):
|
92
|
+
return "min_rtt";
|
93
|
+
case static_cast<size_t>(Metric::kSrtt):
|
94
|
+
return "srtt";
|
95
|
+
case static_cast<size_t>(Metric::kCongestionWindow):
|
96
|
+
return "congestion_window";
|
97
|
+
case static_cast<size_t>(Metric::kSndSsthresh):
|
98
|
+
return "snd_ssthresh";
|
99
|
+
case static_cast<size_t>(Metric::kReordering):
|
100
|
+
return "reordering";
|
101
|
+
case static_cast<size_t>(Metric::kRecurringRetrans):
|
102
|
+
return "recurring_retrans";
|
103
|
+
case static_cast<size_t>(Metric::kBusyUsec):
|
104
|
+
return "busy_usec";
|
105
|
+
case static_cast<size_t>(Metric::kRwndLimitedUsec):
|
106
|
+
return "rwnd_limited_usec";
|
107
|
+
case static_cast<size_t>(Metric::kSndbufLimitedUsec):
|
108
|
+
return "sndbuf_limited_usec";
|
109
|
+
default:
|
110
|
+
return std::nullopt;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
void PosixWriteEventSink::RecordEvent(EventEngine::Endpoint::WriteEvent event,
|
115
|
+
absl::Time timestamp,
|
116
|
+
const ConnectionMetrics& conn_metrics) {
|
117
|
+
if (!requested_events_.test(static_cast<int>(event))) return;
|
118
|
+
std::vector<EventEngine::Endpoint::WriteMetric> metrics;
|
119
|
+
auto maybe_add = [this, &metrics](Metric metric, auto value) {
|
120
|
+
if (requested_metrics_ == nullptr ||
|
121
|
+
!requested_metrics_->IsSet(static_cast<int>(metric)) ||
|
122
|
+
!value.has_value()) {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
metrics.push_back(EventEngine::Endpoint::WriteMetric{
|
126
|
+
static_cast<size_t>(metric),
|
127
|
+
static_cast<int64_t>(value.value()),
|
128
|
+
});
|
129
|
+
};
|
130
|
+
maybe_add(Metric::kDeliveryRate, conn_metrics.delivery_rate);
|
131
|
+
maybe_add(Metric::kIsDeliveryRateAppLimited,
|
132
|
+
conn_metrics.is_delivery_rate_app_limited);
|
133
|
+
maybe_add(Metric::kPacketRetx, conn_metrics.packet_retx);
|
134
|
+
maybe_add(Metric::kPacketSpuriousRetx, conn_metrics.packet_spurious_retx);
|
135
|
+
maybe_add(Metric::kPacketSent, conn_metrics.packet_sent);
|
136
|
+
maybe_add(Metric::kPacketDelivered, conn_metrics.packet_delivered);
|
137
|
+
maybe_add(Metric::kPacketDeliveredCE, conn_metrics.packet_delivered_ce);
|
138
|
+
maybe_add(Metric::kDataRetx, conn_metrics.data_retx);
|
139
|
+
maybe_add(Metric::kDataSent, conn_metrics.data_sent);
|
140
|
+
maybe_add(Metric::kDataNotSent, conn_metrics.data_notsent);
|
141
|
+
maybe_add(Metric::kPacingRate, conn_metrics.pacing_rate);
|
142
|
+
maybe_add(Metric::kMinRtt, conn_metrics.min_rtt);
|
143
|
+
maybe_add(Metric::kSrtt, conn_metrics.srtt);
|
144
|
+
maybe_add(Metric::kCongestionWindow, conn_metrics.congestion_window);
|
145
|
+
maybe_add(Metric::kSndSsthresh, conn_metrics.snd_ssthresh);
|
146
|
+
maybe_add(Metric::kReordering, conn_metrics.reordering);
|
147
|
+
maybe_add(Metric::kRecurringRetrans, conn_metrics.recurring_retrans);
|
148
|
+
maybe_add(Metric::kBusyUsec, conn_metrics.busy_usec);
|
149
|
+
maybe_add(Metric::kRwndLimitedUsec, conn_metrics.rwnd_limited_usec);
|
150
|
+
maybe_add(Metric::kSndbufLimitedUsec, conn_metrics.sndbuf_limited_usec);
|
151
|
+
on_event_(event, timestamp, std::move(metrics));
|
152
|
+
}
|
153
|
+
|
154
|
+
} // namespace grpc_event_engine::experimental
|
@@ -0,0 +1,174 @@
|
|
1
|
+
// Copyright 2025 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_WRITE_EVENT_SINK_H
|
16
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_WRITE_EVENT_SINK_H
|
17
|
+
|
18
|
+
#include <grpc/event_engine/event_engine.h>
|
19
|
+
|
20
|
+
#include "absl/base/no_destructor.h"
|
21
|
+
#include "absl/functional/any_invocable.h"
|
22
|
+
#include "src/core/util/bitset.h"
|
23
|
+
|
24
|
+
namespace grpc_event_engine::experimental {
|
25
|
+
|
26
|
+
class PosixWriteEventSink {
|
27
|
+
public:
|
28
|
+
struct ConnectionMetrics { // Delivery rate in Bytes/s.
|
29
|
+
std::optional<uint64_t> delivery_rate;
|
30
|
+
// If the delivery rate is limited by the application, this is set to true.
|
31
|
+
std::optional<bool> is_delivery_rate_app_limited;
|
32
|
+
// Total packets retransmitted.
|
33
|
+
std::optional<uint32_t> packet_retx;
|
34
|
+
// Total packets retransmitted spuriously. This metric is smaller than or
|
35
|
+
// equal to packet_retx.
|
36
|
+
std::optional<uint32_t> packet_spurious_retx;
|
37
|
+
// Total packets sent.
|
38
|
+
std::optional<uint32_t> packet_sent;
|
39
|
+
// Total packets delivered.
|
40
|
+
std::optional<uint32_t> packet_delivered;
|
41
|
+
// Total packets delivered with ECE marked. This metric is smaller than or
|
42
|
+
// equal to packet_delivered.
|
43
|
+
std::optional<uint32_t> packet_delivered_ce;
|
44
|
+
// Total bytes lost so far.
|
45
|
+
std::optional<uint64_t> data_retx;
|
46
|
+
// Total bytes sent so far.
|
47
|
+
std::optional<uint64_t> data_sent;
|
48
|
+
// Total bytes in write queue but not sent.
|
49
|
+
std::optional<uint64_t> data_notsent;
|
50
|
+
// Pacing rate of the connection in Bps
|
51
|
+
std::optional<uint64_t> pacing_rate;
|
52
|
+
// Minimum RTT observed in usec.
|
53
|
+
std::optional<uint32_t> min_rtt;
|
54
|
+
// Smoothed RTT in usec
|
55
|
+
std::optional<uint32_t> srtt;
|
56
|
+
// Send congestion window.
|
57
|
+
std::optional<uint32_t> congestion_window;
|
58
|
+
// Slow start threshold in packets.
|
59
|
+
std::optional<uint32_t> snd_ssthresh;
|
60
|
+
// Maximum degree of reordering (i.e., maximum number of packets reodered)
|
61
|
+
// on the connection.
|
62
|
+
std::optional<uint32_t> reordering;
|
63
|
+
// Represents the number of recurring retransmissions of the first sequence
|
64
|
+
// that is not acknowledged yet.
|
65
|
+
std::optional<uint8_t> recurring_retrans;
|
66
|
+
// The cumulative time (in usec) that the transport protocol was busy
|
67
|
+
// sending data.
|
68
|
+
std::optional<uint64_t> busy_usec;
|
69
|
+
// The cumulative time (in usec) that the transport protocol was limited by
|
70
|
+
// the receive window size.
|
71
|
+
std::optional<uint64_t> rwnd_limited_usec;
|
72
|
+
// The cumulative time (in usec) that the transport protocol was limited by
|
73
|
+
// the send buffer size.
|
74
|
+
std::optional<uint64_t> sndbuf_limited_usec;
|
75
|
+
};
|
76
|
+
|
77
|
+
enum class Metric {
|
78
|
+
kDeliveryRate,
|
79
|
+
kIsDeliveryRateAppLimited,
|
80
|
+
kPacketRetx,
|
81
|
+
kPacketSpuriousRetx,
|
82
|
+
kPacketSent,
|
83
|
+
kPacketDelivered,
|
84
|
+
kPacketDeliveredCE,
|
85
|
+
kDataRetx,
|
86
|
+
kDataSent,
|
87
|
+
kDataNotSent,
|
88
|
+
kPacingRate,
|
89
|
+
kMinRtt,
|
90
|
+
kSrtt,
|
91
|
+
kCongestionWindow,
|
92
|
+
kSndSsthresh,
|
93
|
+
kReordering,
|
94
|
+
kRecurringRetrans,
|
95
|
+
kBusyUsec,
|
96
|
+
kRwndLimitedUsec,
|
97
|
+
kSndbufLimitedUsec,
|
98
|
+
// Must be last.
|
99
|
+
kCount
|
100
|
+
};
|
101
|
+
|
102
|
+
explicit PosixWriteEventSink(EventEngine::Endpoint::WriteEventSink sink)
|
103
|
+
: requested_metrics_(sink.requested_metrics()),
|
104
|
+
requested_events_(sink.requested_events_mask()),
|
105
|
+
on_event_(sink.TakeEventCallback()) {}
|
106
|
+
|
107
|
+
static constexpr size_t NumWriteMetrics() {
|
108
|
+
return static_cast<size_t>(Metric::kCount);
|
109
|
+
}
|
110
|
+
|
111
|
+
static std::vector<size_t> AllWriteMetrics() {
|
112
|
+
std::vector<size_t> out;
|
113
|
+
out.reserve(NumWriteMetrics());
|
114
|
+
for (size_t i = 0; i < NumWriteMetrics(); ++i) {
|
115
|
+
out.push_back(i);
|
116
|
+
}
|
117
|
+
return out;
|
118
|
+
}
|
119
|
+
|
120
|
+
static std::optional<size_t> GetMetricKey(absl::string_view name);
|
121
|
+
static std::optional<absl::string_view> GetMetricName(size_t key);
|
122
|
+
|
123
|
+
static std::shared_ptr<EventEngine::Endpoint::MetricsSet> GetMetricsSet(
|
124
|
+
absl::Span<const size_t> keys) {
|
125
|
+
return std::make_shared<MetricsSet>(keys);
|
126
|
+
}
|
127
|
+
|
128
|
+
static std::shared_ptr<EventEngine::Endpoint::MetricsSet>
|
129
|
+
GetFullMetricsSet() {
|
130
|
+
static absl::NoDestructor<std::shared_ptr<FullMetricsSet>> full_metrics_set(
|
131
|
+
std::make_shared<FullMetricsSet>());
|
132
|
+
return *full_metrics_set;
|
133
|
+
}
|
134
|
+
|
135
|
+
void RecordEvent(EventEngine::Endpoint::WriteEvent event,
|
136
|
+
absl::Time timestamp, const ConnectionMetrics& metrics);
|
137
|
+
|
138
|
+
private:
|
139
|
+
class MetricsSet : public EventEngine::Endpoint::MetricsSet {
|
140
|
+
public:
|
141
|
+
explicit MetricsSet(absl::Span<const size_t> keys) {
|
142
|
+
for (size_t key : keys) {
|
143
|
+
if (key >= static_cast<size_t>(Metric::kCount)) continue;
|
144
|
+
metrics_set_.set(static_cast<int>(key));
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
bool IsSet(size_t key) const override {
|
149
|
+
return key < static_cast<size_t>(Metric::kCount) &&
|
150
|
+
metrics_set_.is_set(key);
|
151
|
+
}
|
152
|
+
|
153
|
+
private:
|
154
|
+
grpc_core::BitSet<static_cast<int>(Metric::kCount)> metrics_set_;
|
155
|
+
};
|
156
|
+
|
157
|
+
class FullMetricsSet : public EventEngine::Endpoint::MetricsSet {
|
158
|
+
public:
|
159
|
+
bool IsSet(size_t key) const override {
|
160
|
+
return key < static_cast<size_t>(Metric::kCount);
|
161
|
+
}
|
162
|
+
};
|
163
|
+
|
164
|
+
std::shared_ptr<EventEngine::Endpoint::MetricsSet> requested_metrics_;
|
165
|
+
grpc_event_engine::experimental::EventEngine::Endpoint::WriteEventSet
|
166
|
+
requested_events_;
|
167
|
+
absl::AnyInvocable<void(internal::WriteEvent, absl::Time,
|
168
|
+
std::vector<EventEngine::Endpoint::WriteMetric>)>
|
169
|
+
on_event_;
|
170
|
+
};
|
171
|
+
|
172
|
+
} // namespace grpc_event_engine::experimental
|
173
|
+
|
174
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_WRITE_EVENT_SINK_H
|