grpc 1.73.0 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +116 -53
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +18 -6
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +274 -192
- data/src/core/channelz/channelz.h +224 -72
- data/src/core/channelz/channelz_registry.cc +2 -163
- data/src/core/channelz/channelz_registry.h +37 -6
- data/src/core/channelz/property_list.cc +353 -0
- data/src/core/channelz/property_list.h +204 -0
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +24 -33
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +57 -25
- data/src/core/client_channel/subchannel.h +10 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +4 -1
- data/src/core/config/core_configuration.h +23 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +2 -27
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +98 -38
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +11 -10
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +51 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +165 -99
- data/src/core/lib/experiments/experiments.h +65 -52
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +15 -9
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +3 -2
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +55 -6
- data/src/core/lib/promise/party.h +68 -3
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +19 -10
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +84 -13
- data/src/core/server/server.h +21 -2
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +369 -343
- data/src/core/telemetry/stats_data.h +341 -244
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +205 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +249 -189
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +7 -4
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +144 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +192 -68
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -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,7 +186,13 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
183
186
|
|
184
187
|
absl::Status Unprotect(absl::Status read_status)
|
185
188
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(read_mu_) {
|
186
|
-
|
189
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("unprotect");
|
190
|
+
|
191
|
+
if (shutdown_) {
|
192
|
+
return absl::CancelledError("secure endpoint shutdown");
|
193
|
+
}
|
194
|
+
|
195
|
+
GRPC_TRACE_LOG(secure_endpoint, INFO) << "Starting unprotect for " << this;
|
187
196
|
bool keep_looping = false;
|
188
197
|
tsi_result result = TSI_OK;
|
189
198
|
|
@@ -312,7 +321,10 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
312
321
|
|
313
322
|
tsi_result Protect(grpc_slice_buffer* slices, int max_frame_size)
|
314
323
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_mu_) {
|
315
|
-
|
324
|
+
if (shutdown_) return TSI_FAILED_PRECONDITION;
|
325
|
+
|
326
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("protect");
|
327
|
+
GRPC_TRACE_LOG(secure_endpoint, INFO) << "Starting protect for " << this;
|
316
328
|
uint8_t* cur = GRPC_SLICE_START_PTR(write_staging_buffer_);
|
317
329
|
uint8_t* end = GRPC_SLICE_END_PTR(write_staging_buffer_);
|
318
330
|
|
@@ -407,6 +419,10 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
407
419
|
}
|
408
420
|
// TODO(yangg) do different things according to the error type?
|
409
421
|
if (result != TSI_OK) output_buffer_.Clear();
|
422
|
+
|
423
|
+
GRPC_TRACE_LOG(secure_endpoint, INFO)
|
424
|
+
<< "Protect: " << this << " result: " << result;
|
425
|
+
|
410
426
|
return result;
|
411
427
|
}
|
412
428
|
|
@@ -414,7 +430,10 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
414
430
|
return &output_buffer_;
|
415
431
|
}
|
416
432
|
|
417
|
-
void Shutdown() {
|
433
|
+
void Shutdown() {
|
434
|
+
shutdown_ = true;
|
435
|
+
memory_owner_.Reset();
|
436
|
+
}
|
418
437
|
|
419
438
|
private:
|
420
439
|
struct tsi_frame_protector* const protector_;
|
@@ -436,6 +455,7 @@ class FrameProtector : public RefCounted<FrameProtector> {
|
|
436
455
|
std::atomic<bool> has_posted_reclaimer_{false};
|
437
456
|
int min_progress_size_ = 1;
|
438
457
|
SliceBuffer protector_staging_buffer_;
|
458
|
+
bool shutdown_ = false;
|
439
459
|
};
|
440
460
|
} // namespace
|
441
461
|
} // namespace grpc_core
|
@@ -567,14 +587,15 @@ static void on_write(void* user_data, grpc_error_handle error) {
|
|
567
587
|
});
|
568
588
|
}
|
569
589
|
|
570
|
-
static void endpoint_write(
|
571
|
-
|
572
|
-
|
590
|
+
static void endpoint_write(
|
591
|
+
grpc_endpoint* secure_ep, grpc_slice_buffer* slices, grpc_closure* cb,
|
592
|
+
grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) {
|
593
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure_endpoint write");
|
573
594
|
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
|
574
595
|
tsi_result result;
|
575
596
|
{
|
576
597
|
grpc_core::MutexLock lock(ep->frame_protector.write_mu());
|
577
|
-
result = ep->frame_protector.Protect(slices, max_frame_size);
|
598
|
+
result = ep->frame_protector.Protect(slices, args.max_frame_size());
|
578
599
|
}
|
579
600
|
|
580
601
|
if (result != TSI_OK) {
|
@@ -591,7 +612,7 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
|
|
591
612
|
ep->write_cb = cb;
|
592
613
|
grpc_endpoint_write(ep->wrapped_ep.get(),
|
593
614
|
ep->frame_protector.output_buffer()->c_slice_buffer(),
|
594
|
-
&ep->on_write,
|
615
|
+
&ep->on_write, std::move(args));
|
595
616
|
}
|
596
617
|
|
597
618
|
static void endpoint_destroy(grpc_endpoint* secure_ep) {
|
@@ -692,21 +713,59 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
692
713
|
return impl_->QueryExtension(id);
|
693
714
|
}
|
694
715
|
|
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);
|
716
|
+
std::shared_ptr<TelemetryInfo> GetTelemetryInfo() const override {
|
717
|
+
return std::make_shared<Impl::TelemetryInfo>(impl_->GetTelemetryInfo());
|
705
718
|
}
|
706
719
|
|
707
720
|
private:
|
708
721
|
class Impl : public grpc_core::RefCounted<Impl> {
|
709
722
|
public:
|
723
|
+
class TelemetryInfo : public EventEngine::Endpoint::TelemetryInfo {
|
724
|
+
public:
|
725
|
+
explicit TelemetryInfo(
|
726
|
+
std::shared_ptr<EventEngine::Endpoint::TelemetryInfo>
|
727
|
+
wrapped_telemetry_info)
|
728
|
+
: wrapped_telemetry_info_(std::move(wrapped_telemetry_info)) {}
|
729
|
+
|
730
|
+
std::vector<size_t> AllWriteMetrics() const override {
|
731
|
+
return wrapped_telemetry_info_
|
732
|
+
? wrapped_telemetry_info_->AllWriteMetrics()
|
733
|
+
: std::vector<size_t>{};
|
734
|
+
}
|
735
|
+
|
736
|
+
std::optional<absl::string_view> GetMetricName(
|
737
|
+
size_t key) const override {
|
738
|
+
return wrapped_telemetry_info_
|
739
|
+
? wrapped_telemetry_info_->GetMetricName(key)
|
740
|
+
: std::nullopt;
|
741
|
+
}
|
742
|
+
|
743
|
+
std::optional<size_t> GetMetricKey(
|
744
|
+
absl::string_view name) const override {
|
745
|
+
return wrapped_telemetry_info_
|
746
|
+
? wrapped_telemetry_info_->GetMetricKey(name)
|
747
|
+
: std::nullopt;
|
748
|
+
}
|
749
|
+
|
750
|
+
std::shared_ptr<EventEngine::Endpoint::MetricsSet> GetMetricsSet(
|
751
|
+
absl::Span<const size_t> keys) const override {
|
752
|
+
return wrapped_telemetry_info_
|
753
|
+
? wrapped_telemetry_info_->GetMetricsSet(keys)
|
754
|
+
: nullptr;
|
755
|
+
}
|
756
|
+
|
757
|
+
std::shared_ptr<EventEngine::Endpoint::MetricsSet> GetFullMetricsSet()
|
758
|
+
const override {
|
759
|
+
return wrapped_telemetry_info_
|
760
|
+
? wrapped_telemetry_info_->GetFullMetricsSet()
|
761
|
+
: nullptr;
|
762
|
+
}
|
763
|
+
|
764
|
+
private:
|
765
|
+
std::shared_ptr<EventEngine::Endpoint::TelemetryInfo>
|
766
|
+
wrapped_telemetry_info_;
|
767
|
+
};
|
768
|
+
|
710
769
|
Impl(std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
711
770
|
wrapped_ep,
|
712
771
|
struct tsi_frame_protector* protector,
|
@@ -748,7 +807,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
748
807
|
|
749
808
|
bool Write(absl::AnyInvocable<void(absl::Status)> on_writable,
|
750
809
|
SliceBuffer* data, WriteArgs args) {
|
751
|
-
|
810
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure_endpoint write");
|
752
811
|
tsi_result result;
|
753
812
|
frame_protector_.TraceOp("Write", data->c_slice_buffer());
|
754
813
|
if (grpc_core::IsSecureEndpointOffloadLargeWritesEnabled()) {
|
@@ -835,23 +894,18 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
835
894
|
grpc_core::MutexLock read_lock(frame_protector_.read_mu());
|
836
895
|
wrapped_ep = std::move(wrapped_ep_);
|
837
896
|
frame_protector_.Shutdown();
|
897
|
+
GRPC_TRACE_LOG(secure_endpoint, INFO)
|
898
|
+
<< "Shutdown for secure endpoint: " << this;
|
838
899
|
}
|
839
900
|
|
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);
|
901
|
+
std::shared_ptr<TelemetryInfo> GetTelemetryInfo() const {
|
902
|
+
return std::make_shared<Impl::TelemetryInfo>(
|
903
|
+
wrapped_ep_->GetTelemetryInfo());
|
850
904
|
}
|
851
905
|
|
852
906
|
private:
|
853
907
|
bool MaybeFinishReadImmediately() {
|
854
|
-
|
908
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure_endpoint maybe finish read");
|
855
909
|
grpc_core::MutexLock lock(frame_protector_.read_mu());
|
856
910
|
// If the read is large, since we got the bytes whilst still calling read,
|
857
911
|
// offload the decryption to event engine.
|
@@ -882,7 +936,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
882
936
|
|
883
937
|
static void FinishAsyncRead(grpc_core::RefCountedPtr<Impl> impl,
|
884
938
|
absl::Status status) {
|
885
|
-
|
939
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure endpoint finish async read");
|
886
940
|
{
|
887
941
|
grpc_core::MutexLock lock(impl->frame_protector_.read_mu());
|
888
942
|
if (status.ok() && impl->wrapped_ep_ == nullptr) {
|
@@ -917,7 +971,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
|
|
917
971
|
};
|
918
972
|
|
919
973
|
static void FinishAsyncWrite(grpc_core::RefCountedPtr<Impl> impl) {
|
920
|
-
|
974
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("secure endpoint finish async write");
|
921
975
|
tsi_result result;
|
922
976
|
std::unique_ptr<SliceBuffer> data;
|
923
977
|
WriteArgs args;
|
@@ -1022,12 +1076,18 @@ grpc_core::OrphanablePtr<grpc_endpoint> grpc_secure_endpoint_create(
|
|
1022
1076
|
event_engine_endpoint = grpc_event_engine::experimental::
|
1023
1077
|
grpc_take_wrapped_event_engine_endpoint(to_wrap.release());
|
1024
1078
|
CHECK(event_engine_endpoint != nullptr);
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1079
|
+
if (grpc_core::IsPipelinedReadSecureEndpointEnabled()) {
|
1080
|
+
return grpc_pipelined_secure_endpoint_create(
|
1081
|
+
protector, zero_copy_protector, std::move(event_engine_endpoint),
|
1082
|
+
leftover_slices, channel_args, leftover_nslices);
|
1083
|
+
} else {
|
1084
|
+
return grpc_core::OrphanablePtr<grpc_endpoint>(
|
1085
|
+
grpc_event_engine::experimental::grpc_event_engine_endpoint_create(
|
1086
|
+
std::make_unique<grpc_event_engine::experimental::SecureEndpoint>(
|
1087
|
+
std::move(event_engine_endpoint), protector,
|
1088
|
+
zero_copy_protector, leftover_slices, leftover_nslices,
|
1089
|
+
channel_args)));
|
1090
|
+
}
|
1031
1091
|
}
|
1032
1092
|
return grpc_core::MakeOrphanable<secure_endpoint>(
|
1033
1093
|
&vtable, protector, zero_copy_protector, std::move(to_wrap),
|
@@ -55,4 +55,12 @@ grpc_core::OrphanablePtr<grpc_endpoint> grpc_legacy_secure_endpoint_create(
|
|
55
55
|
grpc_slice* leftover_slices, const grpc_channel_args* channel_args,
|
56
56
|
size_t leftover_nslices);
|
57
57
|
|
58
|
+
grpc_core::OrphanablePtr<grpc_endpoint> grpc_pipelined_secure_endpoint_create(
|
59
|
+
struct tsi_frame_protector* protector,
|
60
|
+
struct tsi_zero_copy_grpc_protector* zero_copy_protector,
|
61
|
+
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
62
|
+
to_wrap,
|
63
|
+
grpc_slice* leftover_slices, const grpc_core::ChannelArgs& channel_args,
|
64
|
+
size_t leftover_nslices);
|
65
|
+
|
58
66
|
#endif // GRPC_SRC_CORE_HANDSHAKER_SECURITY_SECURE_ENDPOINT_H
|
@@ -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
|
@@ -242,8 +242,7 @@ void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
|
|
242
242
|
///////////////////////////////////////////////////////////////////////////////
|
243
243
|
// BaseCallData::Flusher
|
244
244
|
|
245
|
-
BaseCallData::Flusher::Flusher(BaseCallData* call
|
246
|
-
: latent_see::InnerScope(desc), call_(call) {
|
245
|
+
BaseCallData::Flusher::Flusher(BaseCallData* call) : call_(call) {
|
247
246
|
GRPC_CALL_STACK_REF(call_->call_stack(), "flusher");
|
248
247
|
}
|
249
248
|
|
@@ -395,7 +394,7 @@ bool BaseCallData::SendMessage::IsIdle() const {
|
|
395
394
|
}
|
396
395
|
|
397
396
|
void BaseCallData::SendMessage::OnComplete(absl::Status status) {
|
398
|
-
Flusher flusher(base_
|
397
|
+
Flusher flusher(base_);
|
399
398
|
GRPC_TRACE_LOG(channel, INFO)
|
400
399
|
<< base_->LogTag() << " SendMessage.OnComplete st=" << StateString(state_)
|
401
400
|
<< " status=" << status;
|
@@ -705,8 +704,7 @@ void BaseCallData::ReceiveMessage::OnComplete(absl::Status status) {
|
|
705
704
|
break;
|
706
705
|
}
|
707
706
|
completed_status_ = status;
|
708
|
-
Flusher flusher(base_
|
709
|
-
GRPC_LATENT_SEE_METADATA("ReceiveMessage::OnComplete"));
|
707
|
+
Flusher flusher(base_);
|
710
708
|
ScopedContext ctx(base_);
|
711
709
|
base_->WakeInsideCombiner(&flusher);
|
712
710
|
}
|
@@ -1220,9 +1218,7 @@ class ClientCallData::PollContext {
|
|
1220
1218
|
auto* next_poll = static_cast<NextPoll*>(p);
|
1221
1219
|
{
|
1222
1220
|
ScopedContext ctx(next_poll->call_data);
|
1223
|
-
Flusher flusher(next_poll->call_data
|
1224
|
-
GRPC_LATENT_SEE_METADATA(
|
1225
|
-
"ClientCallData::PollContext::~PollContext"));
|
1221
|
+
Flusher flusher(next_poll->call_data);
|
1226
1222
|
next_poll->call_data->WakeInsideCombiner(&flusher);
|
1227
1223
|
}
|
1228
1224
|
GRPC_CALL_STACK_UNREF(next_poll->call_stack, "re-poll");
|
@@ -1351,7 +1347,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1351
1347
|
// Fake out the activity based context.
|
1352
1348
|
ScopedContext context(this);
|
1353
1349
|
CapturedBatch batch(b);
|
1354
|
-
Flusher flusher(this
|
1350
|
+
Flusher flusher(this);
|
1355
1351
|
|
1356
1352
|
GRPC_TRACE_LOG(channel, INFO) << LogTag() << " StartBatch " << DebugString();
|
1357
1353
|
|
@@ -1557,8 +1553,7 @@ void ClientCallData::RecvInitialMetadataReady(grpc_error_handle error) {
|
|
1557
1553
|
<< DebugString() << " error:" << error.ToString()
|
1558
1554
|
<< " md:" << recv_initial_metadata_->metadata->DebugString();
|
1559
1555
|
ScopedContext context(this);
|
1560
|
-
Flusher flusher(this
|
1561
|
-
"ClientCallData::RecvInitialMetadataReady"));
|
1556
|
+
Flusher flusher(this);
|
1562
1557
|
if (!error.ok()) {
|
1563
1558
|
switch (recv_initial_metadata_->state) {
|
1564
1559
|
case RecvInitialMetadata::kHookedWaitingForPipe:
|
@@ -1744,8 +1739,7 @@ void ClientCallData::RecvTrailingMetadataReadyCallback(
|
|
1744
1739
|
}
|
1745
1740
|
|
1746
1741
|
void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
|
1747
|
-
Flusher flusher(this
|
1748
|
-
"ClientCallData::RecvTrailingMetadataReady"));
|
1742
|
+
Flusher flusher(this);
|
1749
1743
|
GRPC_TRACE_LOG(channel, INFO)
|
1750
1744
|
<< LogTag() << " ClientCallData.RecvTrailingMetadataReady "
|
1751
1745
|
<< "recv_trailing_state=" << StateString(recv_trailing_state_)
|
@@ -1796,12 +1790,12 @@ void ClientCallData::SetStatusFromError(grpc_metadata_batch* metadata,
|
|
1796
1790
|
|
1797
1791
|
// Wakeup and poll the promise if appropriate.
|
1798
1792
|
void ClientCallData::WakeInsideCombiner(Flusher* flusher) {
|
1799
|
-
|
1793
|
+
GRPC_LATENT_SEE_SCOPE("ClientCallData::WakeInsideCombiner");
|
1800
1794
|
PollContext(this, flusher).Run();
|
1801
1795
|
}
|
1802
1796
|
|
1803
1797
|
void ClientCallData::OnWakeup() {
|
1804
|
-
Flusher flusher(this
|
1798
|
+
Flusher flusher(this);
|
1805
1799
|
ScopedContext context(this);
|
1806
1800
|
WakeInsideCombiner(&flusher);
|
1807
1801
|
}
|
@@ -1877,9 +1871,7 @@ class ServerCallData::PollContext {
|
|
1877
1871
|
auto run = [](void* p, grpc_error_handle) {
|
1878
1872
|
auto* next_poll = static_cast<NextPoll*>(p);
|
1879
1873
|
{
|
1880
|
-
Flusher flusher(next_poll->call_data
|
1881
|
-
GRPC_LATENT_SEE_METADATA(
|
1882
|
-
"ServerCallData::PollContext::~PollContext"));
|
1874
|
+
Flusher flusher(next_poll->call_data);
|
1883
1875
|
ScopedContext context(next_poll->call_data);
|
1884
1876
|
next_poll->call_data->WakeInsideCombiner(&flusher);
|
1885
1877
|
}
|
@@ -1983,7 +1975,7 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
|
|
1983
1975
|
// Fake out the activity based context.
|
1984
1976
|
ScopedContext context(this);
|
1985
1977
|
CapturedBatch batch(b);
|
1986
|
-
Flusher flusher(this
|
1978
|
+
Flusher flusher(this);
|
1987
1979
|
bool wake = false;
|
1988
1980
|
|
1989
1981
|
GRPC_TRACE_LOG(channel, INFO) << LogTag() << " StartBatch: " << DebugString();
|
@@ -2272,8 +2264,7 @@ void ServerCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
|
|
2272
2264
|
GRPC_TRACE_LOG(channel, INFO)
|
2273
2265
|
<< LogTag() << ": RecvTrailingMetadataReady error=" << error
|
2274
2266
|
<< " md=" << recv_trailing_metadata_->DebugString();
|
2275
|
-
Flusher flusher(this
|
2276
|
-
"ServerCallData::RecvTrailingMetadataReady"));
|
2267
|
+
Flusher flusher(this);
|
2277
2268
|
PollContext poll_ctx(this, &flusher);
|
2278
2269
|
Completed(error, recv_trailing_metadata_->get(GrpcTarPit()).has_value(),
|
2279
2270
|
&flusher);
|
@@ -2287,8 +2278,7 @@ void ServerCallData::RecvInitialMetadataReadyCallback(void* arg,
|
|
2287
2278
|
}
|
2288
2279
|
|
2289
2280
|
void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
|
2290
|
-
Flusher flusher(this
|
2291
|
-
"ServerCallData::RecvInitialMetadataReady"));
|
2281
|
+
Flusher flusher(this);
|
2292
2282
|
GRPC_TRACE_LOG(channel, INFO)
|
2293
2283
|
<< LogTag() << ": RecvInitialMetadataReady " << error;
|
2294
2284
|
CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
|
@@ -2351,7 +2341,7 @@ std::string ServerCallData::DebugString() const {
|
|
2351
2341
|
|
2352
2342
|
// Wakeup and poll the promise if appropriate.
|
2353
2343
|
void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
2354
|
-
|
2344
|
+
GRPC_LATENT_SEE_SCOPE("ServerCallData::WakeInsideCombiner");
|
2355
2345
|
PollContext poll_ctx(this, flusher);
|
2356
2346
|
GRPC_TRACE_LOG(channel, INFO)
|
2357
2347
|
<< LogTag() << ": WakeInsideCombiner " << DebugString();
|
@@ -2503,7 +2493,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
|
|
2503
2493
|
}
|
2504
2494
|
|
2505
2495
|
void ServerCallData::OnWakeup() {
|
2506
|
-
Flusher flusher(this
|
2496
|
+
Flusher flusher(this);
|
2507
2497
|
ScopedContext context(this);
|
2508
2498
|
WakeInsideCombiner(&flusher);
|
2509
2499
|
}
|