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
@@ -30,16 +30,19 @@
|
|
30
30
|
|
31
31
|
#include <algorithm>
|
32
32
|
#include <atomic>
|
33
|
+
#include <cstddef>
|
33
34
|
#include <memory>
|
34
35
|
#include <optional>
|
35
36
|
#include <regex>
|
36
37
|
#include <utility>
|
38
|
+
#include <vector>
|
37
39
|
|
38
40
|
#include "absl/base/thread_annotations.h"
|
39
41
|
#include "absl/log/check.h"
|
40
42
|
#include "absl/log/log.h"
|
41
43
|
#include "absl/status/status.h"
|
42
44
|
#include "absl/strings/string_view.h"
|
45
|
+
#include "absl/types/span.h"
|
43
46
|
#include "src/core/lib/debug/trace.h"
|
44
47
|
#include "src/core/lib/experiments/experiments.h"
|
45
48
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -183,6 +186,10 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
183
186
|
|
184
187
|
absl::Status Unprotect(absl::Status read_status)
|
185
188
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_) {
|
189
|
+
if (shutdown_) {
|
190
|
+
return absl::CancelledError("secure endpoint shutdown");
|
191
|
+
}
|
192
|
+
|
186
193
|
GRPC_LATENT_SEE_INNER_SCOPE("unprotect");
|
187
194
|
bool keep_looping = false;
|
188
195
|
tsi_result result = TSI_OK;
|
@@ -312,6 +319,8 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
312
319
|
|
313
320
|
tsi_result Protect(grpc_slice_buffer* slices, int max_frame_size)
|
314
321
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_mu_) {
|
322
|
+
if (shutdown_) return TSI_FAILED_PRECONDITION;
|
323
|
+
|
315
324
|
GRPC_LATENT_SEE_INNER_SCOPE("protect");
|
316
325
|
uint8_t* cur = GRPC_SLICE_START_PTR(write_staging_buffer_);
|
317
326
|
uint8_t* end = GRPC_SLICE_END_PTR(write_staging_buffer_);
|
@@ -414,7 +423,10 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
414
423
|
return &output_buffer_;
|
415
424
|
}
|
416
425
|
|
417
|
-
void Shutdown() {
|
426
|
+
void Shutdown() {
|
427
|
+
shutdown_ = true;
|
428
|
+
memory_owner_.Reset();
|
429
|
+
}
|
418
430
|
|
419
431
|
private:
|
420
432
|
struct tsi_frame_protector* const protector_;
|
@@ -436,6 +448,7 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
436
448
|
std::atomic<bool> has_posted_reclaimer_{false};
|
437
449
|
int min_progress_size_ = 1;
|
438
450
|
SliceBuffer protector_staging_buffer_;
|
451
|
+
bool shutdown_ = false;
|
439
452
|
};
|
440
453
|
} // namespace
|
441
454
|
} // namespace grpc_core
|
@@ -567,14 +580,15 @@ static void on_write(void* user_data, grpc_error_handle error) {
|
|
567
580
|
});
|
568
581
|
}
|
569
582
|
|
570
|
-
static void endpoint_write(
|
571
|
-
|
583
|
+
static void endpoint_write(
|
584
|
+
grpc_endpoint* secure_ep, grpc_slice_buffer* slices, grpc_closure* cb,
|
585
|
+
grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) {
|
572
586
|
GRPC_LATENT_SEE_INNER_SCOPE("secure_endpoint write");
|
573
587
|
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
|
574
588
|
tsi_result result;
|
575
589
|
{
|
576
590
|
grpc_core::MutexLock lock(ep->frame_protector.write_mu());
|
577
|
-
result = ep->frame_protector.Protect(slices, max_frame_size);
|
591
|
+
result = ep->frame_protector.Protect(slices, args.max_frame_size());
|
578
592
|
}
|
579
593
|
|
580
594
|
if (result != TSI_OK) {
|
@@ -591,7 +605,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
591
605
|
ep->write_cb = cb;
|
592
606
|
grpc_endpoint_write(ep->wrapped_ep.get(),
|
593
607
|
ep->frame_protector.output_buffer()->c_slice_buffer(),
|
594
|
-
&ep->on_write,
|
608
|
+
&ep->on_write, std::move(args));
|
595
609
|
}
|
596
610
|
|
597
611
|
static void endpoint_destroy(grpc_endpoint* secure_ep) {
|
@@ -692,21 +706,59 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
692
706
|
return impl_->QueryExtension(id);
|
693
707
|
}
|
694
708
|
|
695
|
-
std::
|
696
|
-
return impl_->
|
697
|
-
}
|
698
|
-
|
699
|
-
std::optional<absl::string_view> GetMetricName(size_t key) override {
|
700
|
-
return impl_->GetMetricName(key);
|
701
|
-
}
|
702
|
-
|
703
|
-
std::optional<size_t> GetMetricKey(absl::string_view name) override {
|
704
|
-
return impl_->GetMetricKey(name);
|
709
|
+
std::shared_ptr<TelemetryInfo> GetTelemetryInfo() const override {
|
710
|
+
return std::make_shared<Impl::TelemetryInfo>(impl_->GetTelemetryInfo());
|
705
711
|
}
|
706
712
|
|
707
713
|
private:
|
708
714
|
class Impl : public grpc_core::RefCounted<Impl> {
|
709
715
|
public:
|
716
|
+
class TelemetryInfo : public EventEngine::Endpoint::TelemetryInfo {
|
717
|
+
public:
|
718
|
+
explicit TelemetryInfo(
|
719
|
+
std::shared_ptr<EventEngine::Endpoint::TelemetryInfo>
|
720
|
+
wrapped_telemetry_info)
|
721
|
+
: wrapped_telemetry_info_(std::move(wrapped_telemetry_info)) {}
|
722
|
+
|
723
|
+
std::vector<size_t> AllWriteMetrics() const override {
|
724
|
+
return wrapped_telemetry_info_
|
725
|
+
? wrapped_telemetry_info_->AllWriteMetrics()
|
726
|
+
: std::vector<size_t>{};
|
727
|
+
}
|
728
|
+
|
729
|
+
std::optional<absl::string_view> GetMetricName(
|
730
|
+
size_t key) const override {
|
731
|
+
return wrapped_telemetry_info_
|
732
|
+
? wrapped_telemetry_info_->GetMetricName(key)
|
733
|
+
: std::nullopt;
|
734
|
+
}
|
735
|
+
|
736
|
+
std::optional<size_t> GetMetricKey(
|
737
|
+
absl::string_view name) const override {
|
738
|
+
return wrapped_telemetry_info_
|
739
|
+
? wrapped_telemetry_info_->GetMetricKey(name)
|
740
|
+
: std::nullopt;
|
741
|
+
}
|
742
|
+
|
743
|
+
std::shared_ptr<EventEngine::Endpoint::MetricsSet> GetMetricsSet(
|
744
|
+
absl::Span<const size_t> keys) const override {
|
745
|
+
return wrapped_telemetry_info_
|
746
|
+
? wrapped_telemetry_info_->GetMetricsSet(keys)
|
747
|
+
: nullptr;
|
748
|
+
}
|
749
|
+
|
750
|
+
std::shared_ptr<EventEngine::Endpoint::MetricsSet> GetFullMetricsSet()
|
751
|
+
const override {
|
752
|
+
return wrapped_telemetry_info_
|
753
|
+
? wrapped_telemetry_info_->GetFullMetricsSet()
|
754
|
+
: nullptr;
|
755
|
+
}
|
756
|
+
|
757
|
+
private:
|
758
|
+
std::shared_ptr<EventEngine::Endpoint::TelemetryInfo>
|
759
|
+
wrapped_telemetry_info_;
|
760
|
+
};
|
761
|
+
|
710
762
|
Impl(std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
711
763
|
wrapped_ep,
|
712
764
|
struct tsi_frame_protector* protector,
|
@@ -837,16 +889,9 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
837
889
|
frame_protector_.Shutdown();
|
838
890
|
}
|
839
891
|
|
840
|
-
|
841
|
-
return
|
842
|
-
|
843
|
-
|
844
|
-
virtual std::optional<absl::string_view> GetMetricName(size_t key) {
|
845
|
-
return wrapped_ep_->GetMetricName(key);
|
846
|
-
}
|
847
|
-
|
848
|
-
virtual std::optional<size_t> GetMetricKey(absl::string_view name) {
|
849
|
-
return wrapped_ep_->GetMetricKey(name);
|
892
|
+
std::shared_ptr<TelemetryInfo> GetTelemetryInfo() const {
|
893
|
+
return std::make_shared<Impl::TelemetryInfo>(
|
894
|
+
wrapped_ep_->GetTelemetryInfo());
|
850
895
|
}
|
851
896
|
|
852
897
|
private:
|
@@ -373,13 +373,16 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
|
|
373
373
|
outgoing_.Clear();
|
374
374
|
outgoing_.Append(Slice::FromCopiedBuffer(
|
375
375
|
reinterpret_cast<const char*>(bytes_to_send), bytes_to_send_size));
|
376
|
+
grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs
|
377
|
+
write_args;
|
378
|
+
write_args.set_max_frame_size(INT_MAX);
|
376
379
|
grpc_endpoint_write(
|
377
380
|
args_->endpoint.get(), outgoing_.c_slice_buffer(),
|
378
381
|
NewClosure(
|
379
382
|
[self = RefAsSubclass<SecurityHandshaker>()](absl::Status status) {
|
380
383
|
self->OnHandshakeDataSentToPeerFnScheduler(std::move(status));
|
381
384
|
}),
|
382
|
-
|
385
|
+
std::move(write_args));
|
383
386
|
} else if (handshaker_result == nullptr) {
|
384
387
|
// There is nothing to send, but need to read from peer.
|
385
388
|
grpc_endpoint_read(
|
@@ -119,11 +119,17 @@ void TCPConnectHandshaker::Shutdown(absl::Status /*error*/) {
|
|
119
119
|
void TCPConnectHandshaker::DoHandshake(
|
120
120
|
HandshakerArgs* args,
|
121
121
|
absl::AnyInvocable<void(absl::Status)> on_handshake_done) {
|
122
|
+
// If the endpoint already exists, skip the TCP connection step.
|
123
|
+
// In this case, the handshaker becomes a no-op, it simply completes the
|
124
|
+
// handshake successfully without performing any action.
|
125
|
+
if (args->endpoint != nullptr) {
|
126
|
+
InvokeOnHandshakeDone(args, std::move(on_handshake_done), absl::OkStatus());
|
127
|
+
return;
|
128
|
+
}
|
122
129
|
{
|
123
130
|
MutexLock lock(&mu_);
|
124
131
|
on_handshake_done_ = std::move(on_handshake_done);
|
125
132
|
}
|
126
|
-
CHECK_EQ(args->endpoint.get(), nullptr);
|
127
133
|
args_ = args;
|
128
134
|
absl::string_view resolved_address_text =
|
129
135
|
args->args.GetString(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS).value();
|
@@ -291,6 +291,21 @@ absl::string_view ChannelArgs::Value::ToString(
|
|
291
291
|
return backing_strings.back();
|
292
292
|
}
|
293
293
|
|
294
|
+
channelz::PropertyList ChannelArgs::ToPropertyList() const {
|
295
|
+
channelz::PropertyList result;
|
296
|
+
args_.ForEach(
|
297
|
+
[&result](const RefCountedStringValue& key, const Value& value) {
|
298
|
+
if (auto i = value.GetIfInt(); i.has_value()) {
|
299
|
+
result.Set(key.as_string_view(), *i);
|
300
|
+
} else if (auto s = value.GetIfString(); s != nullptr) {
|
301
|
+
result.Set(key.as_string_view(), s->as_string_view());
|
302
|
+
} else if (auto p = value.GetIfPointer(); p != nullptr) {
|
303
|
+
result.Set(key.as_string_view(), "POINTER");
|
304
|
+
}
|
305
|
+
});
|
306
|
+
return result;
|
307
|
+
}
|
308
|
+
|
294
309
|
std::string ChannelArgs::ToString() const {
|
295
310
|
std::vector<absl::string_view> strings;
|
296
311
|
std::list<std::string> backing_strings;
|
@@ -35,6 +35,7 @@
|
|
35
35
|
|
36
36
|
#include "absl/meta/type_traits.h"
|
37
37
|
#include "absl/strings/string_view.h"
|
38
|
+
#include "src/core/channelz/property_list.h"
|
38
39
|
#include "src/core/lib/surface/channel_stack_type.h"
|
39
40
|
#include "src/core/util/avl.h"
|
40
41
|
#include "src/core/util/debug_location.h"
|
@@ -507,6 +508,8 @@ class ChannelArgs {
|
|
507
508
|
GRPC_MUST_USE_RESULT ChannelArgs Remove(absl::string_view name) const;
|
508
509
|
bool Contains(absl::string_view name) const;
|
509
510
|
|
511
|
+
channelz::PropertyList ToPropertyList() const;
|
512
|
+
|
510
513
|
GRPC_MUST_USE_RESULT ChannelArgs
|
511
514
|
RemoveAllKeysWithPrefix(absl::string_view prefix) const;
|
512
515
|
|
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
#include "absl/log/check.h"
|
28
28
|
#include "absl/log/log.h"
|
29
|
+
#include "src/core/channelz/property_list.h"
|
29
30
|
#include "src/core/lib/channel/channel_args.h"
|
30
31
|
#include "src/core/lib/channel/channel_fwd.h"
|
31
32
|
#include "src/core/lib/surface/channel_init.h"
|
@@ -114,8 +115,7 @@ grpc_error_handle grpc_channel_stack_init(
|
|
114
115
|
int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg,
|
115
116
|
const grpc_channel_filter** filters, size_t filter_count,
|
116
117
|
const grpc_core::ChannelArgs& channel_args, const char* name,
|
117
|
-
grpc_channel_stack* stack, const grpc_core::Blackboard*
|
118
|
-
grpc_core::Blackboard* new_blackboard) {
|
118
|
+
grpc_channel_stack* stack, const grpc_core::Blackboard* blackboard) {
|
119
119
|
if (GRPC_TRACE_FLAG_ENABLED(channel_stack)) {
|
120
120
|
LOG(INFO) << "CHANNEL_STACK: init " << name;
|
121
121
|
for (size_t i = 0; i < filter_count; i++) {
|
@@ -144,8 +144,7 @@ grpc_error_handle grpc_channel_stack_init(
|
|
144
144
|
sizeof(grpc_channel_element));
|
145
145
|
|
146
146
|
// init per-filter data
|
147
|
-
args.
|
148
|
-
args.new_blackboard = new_blackboard;
|
147
|
+
args.blackboard = blackboard;
|
149
148
|
grpc_error_handle first_error;
|
150
149
|
for (i = 0; i < filter_count; i++) {
|
151
150
|
args.channel_stack = stack;
|
@@ -177,28 +176,28 @@ grpc_error_handle grpc_channel_stack_init(
|
|
177
176
|
}
|
178
177
|
|
179
178
|
void grpc_channel_stack::ChannelStackDataSource::AddData(
|
180
|
-
grpc_core::channelz::DataSink
|
181
|
-
using grpc_core::Json;
|
182
|
-
Json::Object output;
|
183
|
-
output["type"] = Json::FromString("v1");
|
184
|
-
Json::Array elements;
|
179
|
+
grpc_core::channelz::DataSink sink) {
|
185
180
|
grpc_channel_stack* channel_stack = reinterpret_cast<grpc_channel_stack*>(
|
186
181
|
reinterpret_cast<char*>(this) -
|
187
182
|
offsetof(grpc_channel_stack, channelz_data_source));
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
183
|
+
sink.AddData(
|
184
|
+
"channel_stack",
|
185
|
+
grpc_core::channelz::PropertyList()
|
186
|
+
.Set("type", "v1")
|
187
|
+
.Set("elements", [channel_stack]() {
|
188
|
+
grpc_core::channelz::PropertyTable elements;
|
189
|
+
grpc_channel_element* elems =
|
190
|
+
CHANNEL_ELEMS_FROM_STACK(channel_stack);
|
191
|
+
for (size_t i = 0; i < channel_stack->count; i++) {
|
192
|
+
grpc_channel_element& e = elems[i];
|
193
|
+
elements.AppendRow(
|
194
|
+
grpc_core::channelz::PropertyList()
|
195
|
+
.Set("type", e.filter->name.name())
|
196
|
+
.Set("call_data_size", e.filter->sizeof_call_data)
|
197
|
+
.Set("channel_data_size", e.filter->sizeof_channel_data));
|
198
|
+
}
|
199
|
+
return elements;
|
200
|
+
}()));
|
202
201
|
}
|
203
202
|
|
204
203
|
void grpc_channel_stack_destroy(grpc_channel_stack* stack) {
|
@@ -75,8 +75,7 @@ struct grpc_channel_element_args {
|
|
75
75
|
grpc_core::ChannelArgs channel_args;
|
76
76
|
int is_first;
|
77
77
|
int is_last;
|
78
|
-
const grpc_core::Blackboard*
|
79
|
-
grpc_core::Blackboard* new_blackboard;
|
78
|
+
const grpc_core::Blackboard* blackboard;
|
80
79
|
};
|
81
80
|
struct grpc_call_element_args {
|
82
81
|
grpc_call_stack* call_stack;
|
@@ -190,9 +189,13 @@ struct grpc_channel_stack {
|
|
190
189
|
|
191
190
|
class ChannelStackDataSource final : public grpc_core::channelz::DataSource {
|
192
191
|
public:
|
193
|
-
|
194
|
-
|
195
|
-
|
192
|
+
explicit ChannelStackDataSource(
|
193
|
+
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> node)
|
194
|
+
: DataSource(std::move(node)) {
|
195
|
+
SourceConstructed();
|
196
|
+
}
|
197
|
+
~ChannelStackDataSource() { SourceDestructing(); }
|
198
|
+
void AddData(grpc_core::channelz::DataSink sink) override;
|
196
199
|
};
|
197
200
|
|
198
201
|
grpc_core::ManualConstructor<ChannelStackDataSource> channelz_data_source;
|
@@ -269,8 +272,7 @@ grpc_error_handle grpc_channel_stack_init(
|
|
269
272
|
const grpc_channel_filter** filters, size_t filter_count,
|
270
273
|
const grpc_core::ChannelArgs& args, const char* name,
|
271
274
|
grpc_channel_stack* stack,
|
272
|
-
const grpc_core::Blackboard*
|
273
|
-
grpc_core::Blackboard* new_blackboard = nullptr);
|
275
|
+
const grpc_core::Blackboard* blackboard = nullptr);
|
274
276
|
// Destroy a channel stack
|
275
277
|
void grpc_channel_stack_destroy(grpc_channel_stack* stack);
|
276
278
|
|
@@ -75,7 +75,7 @@ ChannelStackBuilderImpl::Build() {
|
|
75
75
|
gpr_free(stk);
|
76
76
|
},
|
77
77
|
channel_stack, stack.data(), stack.size(), channel_args(), name(),
|
78
|
-
channel_stack,
|
78
|
+
channel_stack, blackboard_);
|
79
79
|
|
80
80
|
if (!error.ok()) {
|
81
81
|
grpc_channel_stack_destroy(channel_stack);
|
@@ -35,11 +35,7 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
|
|
35
35
|
public:
|
36
36
|
using ChannelStackBuilder::ChannelStackBuilder;
|
37
37
|
|
38
|
-
void
|
39
|
-
Blackboard* new_blackboard) {
|
40
|
-
old_blackboard_ = old_blackboard;
|
41
|
-
new_blackboard_ = new_blackboard;
|
42
|
-
}
|
38
|
+
void SetBlackboard(const Blackboard* blackboard) { blackboard_ = blackboard; }
|
43
39
|
|
44
40
|
// Build the channel stack.
|
45
41
|
// After success, *result holds the new channel stack,
|
@@ -49,8 +45,7 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
|
|
49
45
|
absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() override;
|
50
46
|
|
51
47
|
private:
|
52
|
-
const Blackboard*
|
53
|
-
Blackboard* new_blackboard_ = nullptr;
|
48
|
+
const Blackboard* blackboard_ = nullptr;
|
54
49
|
};
|
55
50
|
|
56
51
|
} // namespace grpc_core
|
@@ -1979,11 +1979,11 @@ struct ChannelFilterWithFlagsMethods {
|
|
1979
1979
|
static absl::Status InitChannelElem(grpc_channel_element* elem,
|
1980
1980
|
grpc_channel_element_args* args) {
|
1981
1981
|
CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
|
1982
|
-
auto status =
|
1983
|
-
args->channel_args,
|
1984
|
-
|
1985
|
-
|
1986
|
-
|
1982
|
+
auto status =
|
1983
|
+
F::Create(args->channel_args,
|
1984
|
+
ChannelFilter::Args(args->channel_stack, elem,
|
1985
|
+
grpc_channel_stack_filter_instance_number,
|
1986
|
+
args->blackboard));
|
1987
1987
|
if (!status.ok()) {
|
1988
1988
|
new (elem->channel_data) F*(nullptr);
|
1989
1989
|
return absl_status_to_grpc_error(status.status());
|