grpc 1.75.0.pre1 → 1.76.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +18 -5
- data/include/grpc/credentials.h +21 -5
- data/src/core/call/call_filters.cc +4 -4
- data/src/core/call/call_filters.h +36 -36
- data/src/core/call/call_spine.h +27 -27
- data/src/core/call/client_call.cc +6 -5
- data/src/core/call/filter_fusion.h +5 -5
- data/src/core/call/metadata_batch.h +3 -3
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/server_call.cc +4 -4
- data/src/core/call/server_call.h +1 -1
- data/src/core/channelz/channelz.cc +12 -18
- data/src/core/channelz/channelz.h +32 -16
- data/src/core/channelz/channelz_registry.h +11 -0
- data/src/core/channelz/property_list.cc +18 -0
- data/src/core/channelz/property_list.h +10 -1
- data/src/core/channelz/text_encode.cc +66 -0
- data/src/core/channelz/text_encode.h +29 -0
- data/src/core/channelz/v2tov1/convert.cc +11 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
- data/src/core/channelz/ztrace_collector.h +247 -86
- data/src/core/client_channel/backup_poller.cc +5 -6
- data/src/core/client_channel/client_channel.cc +20 -13
- data/src/core/client_channel/client_channel_filter.cc +53 -45
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +3 -4
- data/src/core/client_channel/config_selector.h +3 -3
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/global_subchannel_pool.cc +0 -37
- data/src/core/client_channel/global_subchannel_pool.h +0 -27
- data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
- data/src/core/client_channel/local_subchannel_pool.cc +4 -4
- data/src/core/client_channel/retry_filter.h +3 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/subchannel.cc +8 -8
- data/src/core/client_channel/subchannel_stream_client.cc +4 -4
- data/src/core/config/config_vars.cc +30 -1
- data/src/core/config/config_vars.h +21 -0
- data/src/core/config/core_configuration.cc +5 -5
- data/src/core/config/core_configuration.h +7 -7
- data/src/core/config/load_config.cc +12 -0
- data/src/core/config/load_config.h +2 -0
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_util.cc +4 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
- data/src/core/credentials/call/jwt/json_token.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
- data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
- data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
- data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
- data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
- data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
- data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
- data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
- data/src/core/credentials/transport/security_connector.cc +5 -5
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
- data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
- data/src/core/credentials/transport/transport_credentials.cc +2 -2
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
- data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
- data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
- data/src/core/filter/auth/server_auth_filter.cc +2 -2
- data/src/core/handshaker/handshaker.cc +3 -3
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
- data/src/core/handshaker/security/secure_endpoint.cc +16 -6
- data/src/core/handshaker/security/security_handshaker.cc +3 -3
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/channel/channel_stack.cc +8 -5
- data/src/core/lib/channel/channel_stack.h +3 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +69 -64
- data/src/core/lib/channel/promise_based_filter.h +16 -15
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/message_compress.cc +7 -7
- data/src/core/lib/event_engine/ares_resolver.cc +22 -20
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
- data/src/core/lib/event_engine/extensions/channelz.h +2 -2
- data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +3 -3
- data/src/core/lib/event_engine/shim.cc +8 -11
- data/src/core/lib/event_engine/shim.h +2 -1
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
- data/src/core/lib/event_engine/windows/iocp.cc +10 -10
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
- data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
- data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
- data/src/core/lib/experiments/experiments.cc +105 -18
- data/src/core/lib/experiments/experiments.h +43 -11
- data/src/core/lib/iomgr/call_combiner.cc +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +8 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
- data/src/core/lib/iomgr/lockfree_event.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +3 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +42 -42
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +7 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
- data/src/core/lib/iomgr/tcp_windows.cc +7 -7
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/context.h +2 -2
- data/src/core/lib/promise/detail/join_state.h +9 -9
- data/src/core/lib/promise/detail/seq_state.h +13 -13
- data/src/core/lib/promise/detail/status.h +2 -2
- data/src/core/lib/promise/for_each.h +5 -5
- data/src/core/lib/promise/interceptor_list.h +2 -2
- data/src/core/lib/promise/latch.h +7 -7
- data/src/core/lib/promise/mpsc.cc +26 -26
- data/src/core/lib/promise/mpsc.h +2 -2
- data/src/core/lib/promise/observable.h +4 -4
- data/src/core/lib/promise/party.cc +32 -25
- data/src/core/lib/promise/party.h +16 -19
- data/src/core/lib/promise/pipe.h +15 -15
- data/src/core/lib/promise/poll.h +5 -4
- data/src/core/lib/promise/promise.h +0 -2
- data/src/core/lib/promise/sleep.cc +3 -1
- data/src/core/lib/promise/status_flag.h +7 -7
- data/src/core/lib/promise/try_join.h +2 -2
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +15 -2
- data/src/core/lib/resource_quota/connection_quota.cc +9 -7
- data/src/core/lib/resource_quota/memory_quota.cc +45 -24
- data/src/core/lib/resource_quota/memory_quota.h +48 -16
- data/src/core/lib/resource_quota/telemetry.h +54 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -2
- data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
- data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
- data/src/core/lib/surface/call.cc +16 -14
- data/src/core/lib/surface/call.h +1 -1
- data/src/core/lib/surface/call_utils.cc +2 -2
- data/src/core/lib/surface/call_utils.h +2 -2
- data/src/core/lib/surface/channel.cc +4 -4
- data/src/core/lib/surface/channel_create.cc +10 -6
- data/src/core/lib/surface/channel_init.cc +80 -23
- data/src/core/lib/surface/channel_init.h +26 -11
- data/src/core/lib/surface/completion_queue.cc +17 -16
- data/src/core/lib/surface/completion_queue_factory.cc +7 -7
- data/src/core/lib/surface/connection_context.h +45 -2
- data/src/core/lib/surface/filter_stack_call.cc +12 -23
- data/src/core/lib/surface/filter_stack_call.h +3 -4
- data/src/core/lib/surface/legacy_channel.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/promise_endpoint.cc +3 -3
- data/src/core/lib/transport/promise_endpoint.h +8 -8
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/endpoint_list.cc +2 -2
- data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
- data/src/core/load_balancing/health_check_client.cc +4 -4
- data/src/core/load_balancing/health_check_client_internal.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +4 -4
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
- data/src/core/load_balancing/priority/priority.cc +23 -24
- data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
- data/src/core/load_balancing/rls/rls.cc +13 -13
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
- data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
- data/src/core/load_balancing/xds/cds.cc +76 -32
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
- data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
- data/src/core/resolver/endpoint_addresses.cc +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
- data/src/core/resolver/polling_resolver.cc +3 -3
- data/src/core/resolver/resolver_registry.cc +5 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
- data/src/core/resolver/xds/xds_resolver.cc +9 -9
- data/src/core/server/server.cc +38 -38
- data/src/core/server/server_call_tracer_filter.h +4 -4
- data/src/core/server/server_config_selector_filter.cc +2 -2
- data/src/core/server/xds_server_config_fetcher.cc +9 -8
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/telemetry/call_tracer.cc +39 -49
- data/src/core/telemetry/call_tracer.h +199 -22
- data/src/core/telemetry/histogram.h +205 -0
- data/src/core/telemetry/instrument.cc +719 -0
- data/src/core/telemetry/instrument.h +932 -0
- data/src/core/telemetry/metrics.cc +13 -5
- data/src/core/telemetry/metrics.h +3 -1
- data/src/core/telemetry/stats_data.cc +0 -19
- data/src/core/telemetry/stats_data.h +0 -19
- data/src/core/transport/auth_context.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +26 -25
- data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
- data/src/core/util/chunked_vector.h +4 -4
- data/src/core/util/event_log.cc +2 -2
- data/src/core/util/gcp_metadata_query.cc +2 -2
- data/src/core/util/grpc_check.cc +22 -0
- data/src/core/util/grpc_check.h +103 -0
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/parser.cc +4 -4
- data/src/core/util/latent_see.h +7 -4
- data/src/core/util/lru_cache.h +4 -4
- data/src/core/util/memory_usage.h +16 -0
- data/src/core/util/posix/directory_reader.cc +3 -2
- data/src/core/util/posix/sync.cc +24 -24
- data/src/core/util/postmortem_emit.cc +52 -0
- data/src/core/util/postmortem_emit.h +30 -0
- data/src/core/util/ref_counted_ptr.h +5 -0
- data/src/core/util/trie_lookup.h +170 -0
- data/src/core/util/unique_ptr_with_bitset.h +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
- data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
- data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
- data/src/core/xds/grpc/xds_client_grpc.h +4 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
- data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
- data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
- data/src/core/xds/grpc/xds_matcher.cc +277 -0
- data/src/core/xds/grpc/xds_matcher.h +432 -0
- data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
- data/src/core/xds/grpc/xds_matcher_action.h +48 -0
- data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
- data/src/core/xds/grpc/xds_matcher_context.h +46 -0
- data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
- data/src/core/xds/grpc/xds_matcher_input.h +105 -0
- data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
- data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
- data/src/core/xds/grpc/xds_metadata.cc +4 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
- data/src/core/xds/grpc/xds_routing.cc +3 -3
- data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
- data/src/core/xds/xds_client/lrs_client.cc +6 -6
- data/src/core/xds/xds_client/xds_client.cc +9 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- metadata +37 -2
@@ -31,6 +31,9 @@
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
33
33
|
std::optional<Http2SettingsFrame> Http2SettingsManager::MaybeSendUpdate() {
|
34
|
+
if (!IsPreviousSettingsPromiseResolved()) {
|
35
|
+
return std::nullopt;
|
36
|
+
}
|
34
37
|
switch (update_state_) {
|
35
38
|
case UpdateState::kSending:
|
36
39
|
return std::nullopt;
|
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
#include <cstdint>
|
24
24
|
#include <optional>
|
25
|
+
#include <queue>
|
25
26
|
|
26
27
|
#include "absl/functional/function_ref.h"
|
27
28
|
#include "absl/strings/string_view.h"
|
@@ -29,6 +30,7 @@
|
|
29
30
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
30
31
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
31
32
|
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
33
|
+
#include "src/core/lib/channel/channel_args.h"
|
32
34
|
#include "src/core/util/useful.h"
|
33
35
|
|
34
36
|
namespace grpc_core {
|
@@ -80,6 +82,13 @@ class Http2SettingsManager {
|
|
80
82
|
// This function is not idempotent.
|
81
83
|
GRPC_MUST_USE_RESULT bool AckLastSend();
|
82
84
|
|
85
|
+
GRPC_MUST_USE_RESULT bool IsPreviousSettingsPromiseResolved() const {
|
86
|
+
return did_previous_settings_promise_resolve_;
|
87
|
+
}
|
88
|
+
void SetPreviousSettingsPromiseResolved(const bool value) {
|
89
|
+
did_previous_settings_promise_resolve_ = value;
|
90
|
+
}
|
91
|
+
|
83
92
|
private:
|
84
93
|
struct CountUpdates {
|
85
94
|
http2::Http2ErrorCode IsUpdatePermitted(const uint16_t setting_id,
|
@@ -135,6 +144,8 @@ class Http2SettingsManager {
|
|
135
144
|
Http2Settings local_;
|
136
145
|
Http2Settings sent_;
|
137
146
|
Http2Settings acked_;
|
147
|
+
|
148
|
+
bool did_previous_settings_promise_resolve_ = true;
|
138
149
|
};
|
139
150
|
|
140
151
|
} // namespace grpc_core
|
@@ -0,0 +1,179 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2025 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
|
20
|
+
#define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
#include <stdint.h>
|
24
|
+
|
25
|
+
#include <cstdint>
|
26
|
+
#include <optional>
|
27
|
+
#include <queue>
|
28
|
+
|
29
|
+
#include "absl/functional/function_ref.h"
|
30
|
+
#include "absl/strings/string_view.h"
|
31
|
+
#include "src/core/channelz/property_list.h"
|
32
|
+
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
33
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
34
|
+
#include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
|
35
|
+
#include "src/core/ext/transport/chttp2/transport/http2_status.h"
|
36
|
+
#include "src/core/lib/channel/channel_args.h"
|
37
|
+
#include "src/core/lib/promise/race.h"
|
38
|
+
#include "src/core/lib/promise/sleep.h"
|
39
|
+
#include "src/core/lib/promise/try_seq.h"
|
40
|
+
#include "src/core/util/grpc_check.h"
|
41
|
+
#include "src/core/util/time.h"
|
42
|
+
#include "src/core/util/useful.h"
|
43
|
+
namespace grpc_core {
|
44
|
+
|
45
|
+
// Timeout for getting an ack back on settings changes
|
46
|
+
#define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
|
47
|
+
|
48
|
+
#define GRPC_SETTINGS_TIMEOUT_DLOG DLOG(INFO)
|
49
|
+
|
50
|
+
// This class can only be used only from a promise based HTTP2 transports
|
51
|
+
// general_party_ .
|
52
|
+
// This class is designed with the assumption that only 1 SETTINGS frame will be
|
53
|
+
// in flight at a time. And we do not send a second SETTINGS frame till we
|
54
|
+
// receive and process the SETTINGS ACK.
|
55
|
+
class SettingsTimeoutManager {
|
56
|
+
public:
|
57
|
+
// Assumption : This would be set only once in the life of the transport.
|
58
|
+
inline void SetSettingsTimeout(const ChannelArgs& channel_args,
|
59
|
+
const Duration keepalive_timeout) {
|
60
|
+
timeout_ =
|
61
|
+
channel_args.GetDurationFromIntMillis(GRPC_ARG_SETTINGS_TIMEOUT)
|
62
|
+
.value_or(std::max(keepalive_timeout * 2, Duration::Minutes(1)));
|
63
|
+
}
|
64
|
+
|
65
|
+
// To be called when a promise based Transport receives an a SETTINGS ACK
|
66
|
+
// frame.
|
67
|
+
inline void OnSettingsAckReceived() { RecordReceivedAck(); }
|
68
|
+
|
69
|
+
// This returns a promise which must be spawned on transports general party.
|
70
|
+
// This must be spawned soon after the transport sends a SETTINGS frame on the
|
71
|
+
// endpoint.
|
72
|
+
// If we don't get an ACK before timeout, the caller MUST close the transport.
|
73
|
+
auto WaitForSettingsTimeout() {
|
74
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
75
|
+
<< "SettingsTimeoutManager::WaitForSettingsTimeout Factory";
|
76
|
+
StartSettingsTimeoutTimer();
|
77
|
+
// TODO(tjagtap) : [PH2][P1] : Make this a ref counted class and manage the
|
78
|
+
// lifetime
|
79
|
+
return AssertResultType<absl::Status>(
|
80
|
+
Race(
|
81
|
+
[this]() -> Poll<absl::Status> {
|
82
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
83
|
+
<< "SettingsTimeoutManager::WaitForSettingsTimeout Race";
|
84
|
+
// This Promise will "win" the race if we receive the SETTINGS
|
85
|
+
// ACK from the peer within the timeout time.
|
86
|
+
if (DidReceiveAck()) {
|
87
|
+
GRPC_DCHECK(
|
88
|
+
sent_time_ +
|
89
|
+
(timeout_ *
|
90
|
+
1.1 /* 10% grace time for this promise to be scheduled*/) >
|
91
|
+
Timestamp::Now())
|
92
|
+
<< "Should have timed out";
|
93
|
+
RemoveReceivedAck();
|
94
|
+
return absl::OkStatus();
|
95
|
+
}
|
96
|
+
AddWaitingForAck();
|
97
|
+
return Pending{};
|
98
|
+
},
|
99
|
+
// This promise will "Win" the Race if timeout is crossed and we did
|
100
|
+
// not receive the ACK. The transport must close when this happens.
|
101
|
+
TrySeq(Sleep(timeout_), [sent_time = sent_time_,
|
102
|
+
timeout = timeout_]() {
|
103
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
104
|
+
<< "SettingsTimeoutManager::WaitForSettingsTimeout Timeout"
|
105
|
+
" triggered. Transport will close. Sent Time : "
|
106
|
+
<< sent_time << " Timeout Time : " << (sent_time + timeout)
|
107
|
+
<< " Current Time " << Timestamp::Now();
|
108
|
+
return absl::CancelledError(
|
109
|
+
std::string(RFC9113::kSettingsTimeout));
|
110
|
+
})));
|
111
|
+
}
|
112
|
+
|
113
|
+
private:
|
114
|
+
inline void StartSettingsTimeoutTimer() {
|
115
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
116
|
+
<< "SettingsTimeoutManager::StartSettingsTimeoutTimer "
|
117
|
+
"did_register_waker_ "
|
118
|
+
<< did_register_waker_
|
119
|
+
<< " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
|
120
|
+
GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
|
121
|
+
GRPC_DCHECK(!did_register_waker_);
|
122
|
+
sent_time_ = Timestamp::Now();
|
123
|
+
}
|
124
|
+
inline bool DidReceiveAck() {
|
125
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
126
|
+
<< "SettingsTimeoutManager::DidReceiveAck did_register_waker_ "
|
127
|
+
<< did_register_waker_
|
128
|
+
<< " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
|
129
|
+
return number_of_acks_unprocessed_ > 0;
|
130
|
+
}
|
131
|
+
inline void AddWaitingForAck() {
|
132
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
133
|
+
<< "SettingsTimeoutManager::AddWaitingForAck did_register_waker_ "
|
134
|
+
<< did_register_waker_
|
135
|
+
<< " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
|
136
|
+
if (!did_register_waker_) {
|
137
|
+
GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
|
138
|
+
waker_ = GetContext<Activity>()->MakeNonOwningWaker();
|
139
|
+
did_register_waker_ = true;
|
140
|
+
}
|
141
|
+
GRPC_DCHECK(did_register_waker_);
|
142
|
+
}
|
143
|
+
inline void RecordReceivedAck() {
|
144
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
145
|
+
<< "SettingsTimeoutManager::RecordReceivedAck did_register_waker_ "
|
146
|
+
<< did_register_waker_
|
147
|
+
<< " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
|
148
|
+
GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
|
149
|
+
++number_of_acks_unprocessed_;
|
150
|
+
if (did_register_waker_) {
|
151
|
+
// It is possible that we receive the ACK before WaitForSettingsTimeout is
|
152
|
+
// scheduled. That is why we do this inside an if.
|
153
|
+
waker_.Wakeup();
|
154
|
+
did_register_waker_ = false;
|
155
|
+
}
|
156
|
+
GRPC_DCHECK(!did_register_waker_);
|
157
|
+
}
|
158
|
+
inline void RemoveReceivedAck() {
|
159
|
+
GRPC_SETTINGS_TIMEOUT_DLOG
|
160
|
+
<< "SettingsTimeoutManager::RemoveReceivedAck did_register_waker_ "
|
161
|
+
<< did_register_waker_
|
162
|
+
<< " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
|
163
|
+
--number_of_acks_unprocessed_;
|
164
|
+
GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
|
165
|
+
GRPC_DCHECK(!did_register_waker_);
|
166
|
+
}
|
167
|
+
|
168
|
+
Duration timeout_;
|
169
|
+
// We don't actually use this for the timeout. We are just keeping this as
|
170
|
+
// book keeping for better debuggability.
|
171
|
+
Timestamp sent_time_ = Timestamp::InfFuture();
|
172
|
+
Waker waker_;
|
173
|
+
bool did_register_waker_ = false;
|
174
|
+
int number_of_acks_unprocessed_ = 0;
|
175
|
+
};
|
176
|
+
|
177
|
+
} // namespace grpc_core
|
178
|
+
|
179
|
+
#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
|
@@ -23,6 +23,8 @@
|
|
23
23
|
|
24
24
|
#include "src/core/call/call_spine.h"
|
25
25
|
#include "src/core/call/metadata_info.h"
|
26
|
+
#include "src/core/channelz/channelz.h"
|
27
|
+
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
26
28
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
27
29
|
#include "src/core/lib/promise/mpsc.h"
|
28
30
|
#include "src/core/lib/promise/party.h"
|
@@ -52,69 +54,95 @@ void InitLocalSettings(Http2Settings& settings, const bool is_client) {
|
|
52
54
|
}
|
53
55
|
|
54
56
|
void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
|
55
|
-
Http2Settings&
|
57
|
+
Http2Settings& local_settings,
|
58
|
+
chttp2::TransportFlowControl& flow_control,
|
56
59
|
const bool is_client) {
|
57
60
|
if (channel_args.Contains(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)) {
|
58
|
-
|
61
|
+
local_settings.SetHeaderTableSize(
|
59
62
|
channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)
|
60
63
|
.value_or(-1));
|
61
64
|
}
|
62
65
|
|
63
66
|
if (channel_args.Contains(GRPC_ARG_MAX_CONCURRENT_STREAMS)) {
|
64
67
|
if (!is_client) {
|
65
|
-
|
68
|
+
local_settings.SetMaxConcurrentStreams(
|
66
69
|
channel_args.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS).value_or(-1));
|
67
70
|
} else {
|
68
71
|
// We do not allow the channel arg to alter our 0 setting for
|
69
|
-
// MAX_CONCURRENT_STREAMS for clients because we
|
72
|
+
// MAX_CONCURRENT_STREAMS for clients because we don't support
|
73
|
+
// PUSH_PROMISE
|
70
74
|
LOG(WARNING) << "ChannelArg GRPC_ARG_MAX_CONCURRENT_STREAMS is not "
|
71
75
|
"available on clients";
|
72
76
|
}
|
73
77
|
}
|
74
78
|
|
75
79
|
if (channel_args.Contains(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)) {
|
76
|
-
|
77
|
-
channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)
|
78
|
-
|
79
|
-
|
80
|
-
|
80
|
+
int value =
|
81
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES).value_or(-1);
|
82
|
+
if (value >= 0) {
|
83
|
+
local_settings.SetInitialWindowSize(value);
|
84
|
+
flow_control.set_target_initial_window_size(value);
|
85
|
+
}
|
81
86
|
}
|
82
87
|
|
83
|
-
|
88
|
+
local_settings.SetMaxHeaderListSize(
|
89
|
+
GetHardLimitFromChannelArgs(channel_args));
|
84
90
|
|
85
91
|
if (channel_args.Contains(GRPC_ARG_HTTP2_MAX_FRAME_SIZE)) {
|
86
|
-
|
92
|
+
local_settings.SetMaxFrameSize(
|
87
93
|
channel_args.GetInt(GRPC_ARG_HTTP2_MAX_FRAME_SIZE).value_or(-1));
|
88
94
|
}
|
89
95
|
|
90
96
|
if (channel_args
|
91
97
|
.GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
|
92
98
|
.value_or(false)) {
|
93
|
-
|
99
|
+
local_settings.SetPreferredReceiveCryptoMessageSize(INT_MAX);
|
94
100
|
}
|
95
101
|
|
96
102
|
if (channel_args.Contains(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY)) {
|
97
|
-
|
103
|
+
local_settings.SetAllowTrueBinaryMetadata(
|
98
104
|
channel_args.GetInt(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY).value_or(-1) !=
|
99
105
|
0);
|
100
106
|
}
|
101
107
|
|
102
|
-
|
108
|
+
local_settings.SetAllowSecurityFrame(
|
103
109
|
channel_args.GetBool(GRPC_ARG_SECURITY_FRAME_ALLOWED).value_or(false));
|
104
110
|
|
105
111
|
GRPC_HTTP2_COMMON_DLOG
|
106
112
|
<< "Http2Settings: {"
|
107
|
-
<< "header_table_size: " <<
|
108
|
-
<< ", max_concurrent_streams: " <<
|
109
|
-
<< ", initial_window_size: " <<
|
110
|
-
<< ", max_frame_size: " <<
|
111
|
-
<< ", max_header_list_size: " <<
|
113
|
+
<< "header_table_size: " << local_settings.header_table_size()
|
114
|
+
<< ", max_concurrent_streams: " << local_settings.max_concurrent_streams()
|
115
|
+
<< ", initial_window_size: " << local_settings.initial_window_size()
|
116
|
+
<< ", max_frame_size: " << local_settings.max_frame_size()
|
117
|
+
<< ", max_header_list_size: " << local_settings.max_header_list_size()
|
112
118
|
<< ", preferred_receive_crypto_message_size: "
|
113
|
-
<<
|
114
|
-
<< ", enable_push: " <<
|
119
|
+
<< local_settings.preferred_receive_crypto_message_size()
|
120
|
+
<< ", enable_push: " << local_settings.enable_push()
|
115
121
|
<< ", allow_true_binary_metadata: "
|
116
|
-
<<
|
117
|
-
<< ", allow_security_frame: " <<
|
122
|
+
<< local_settings.allow_true_binary_metadata()
|
123
|
+
<< ", allow_security_frame: " << local_settings.allow_security_frame()
|
124
|
+
<< "}";
|
125
|
+
}
|
126
|
+
|
127
|
+
RefCountedPtr<channelz::SocketNode> CreateChannelzSocketNode(
|
128
|
+
std::shared_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
129
|
+
event_engine_endpoint,
|
130
|
+
const ChannelArgs& args) {
|
131
|
+
if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
|
132
|
+
.value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
|
133
|
+
auto local_addr = grpc_event_engine::experimental::ResolvedAddressToString(
|
134
|
+
event_engine_endpoint->GetLocalAddress());
|
135
|
+
auto peer_addr = grpc_event_engine::experimental::ResolvedAddressToString(
|
136
|
+
event_engine_endpoint->GetPeerAddress());
|
137
|
+
GRPC_HTTP2_COMMON_DLOG << "CreateChannelzSocketNode: local_addr: "
|
138
|
+
<< local_addr.value_or("unknown")
|
139
|
+
<< " peer_addr: " << peer_addr.value_or("unknown");
|
140
|
+
return MakeRefCounted<channelz::SocketNode>(
|
141
|
+
local_addr.value_or("unknown"), peer_addr.value_or("unknown"),
|
142
|
+
absl::StrCat("http2", " ", peer_addr.value_or("unknown")),
|
143
|
+
args.GetObjectRef<channelz::SocketNode::Security>());
|
144
|
+
}
|
145
|
+
return nullptr;
|
118
146
|
}
|
119
147
|
|
120
148
|
} // namespace http2
|
@@ -24,8 +24,11 @@
|
|
24
24
|
|
25
25
|
#include "src/core/call/call_spine.h"
|
26
26
|
#include "src/core/call/metadata_info.h"
|
27
|
+
#include "src/core/channelz/channelz.h"
|
28
|
+
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
|
27
29
|
#include "src/core/ext/transport/chttp2/transport/frame.h"
|
28
30
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
31
|
+
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
29
32
|
#include "src/core/lib/promise/mpsc.h"
|
30
33
|
#include "src/core/lib/promise/party.h"
|
31
34
|
#include "src/core/lib/transport/promise_endpoint.h"
|
@@ -49,12 +52,9 @@ namespace http2 {
|
|
49
52
|
#define GRPC_HTTP2_COMMON_DLOG \
|
50
53
|
DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport))
|
51
54
|
|
52
|
-
//
|
53
|
-
#define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
|
54
|
-
|
55
|
-
// TODO(akshitpatel) : [PH2][P2] : Choose appropriate size later.
|
56
|
-
constexpr int kMpscSize = 10;
|
55
|
+
// TODO(akshitpatel) : [PH2][P4] : Choose appropriate size later.
|
57
56
|
constexpr uint32_t kStreamQueueSize = /*1 MB*/ 1024u * 1024u;
|
57
|
+
constexpr uint32_t kMaxWriteSize = /*10 MB*/ 10u * 1024u * 1024u;
|
58
58
|
|
59
59
|
enum class HttpStreamState : uint8_t {
|
60
60
|
// https://www.rfc-editor.org/rfc/rfc9113.html#name-stream-states
|
@@ -68,7 +68,14 @@ enum class HttpStreamState : uint8_t {
|
|
68
68
|
void InitLocalSettings(Http2Settings& settings, const bool is_client);
|
69
69
|
|
70
70
|
void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
|
71
|
-
Http2Settings&
|
71
|
+
Http2Settings& local_settings,
|
72
|
+
chttp2::TransportFlowControl& flow_control,
|
73
|
+
const bool is_client);
|
74
|
+
|
75
|
+
RefCountedPtr<channelz::SocketNode> CreateChannelzSocketNode(
|
76
|
+
std::shared_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
77
|
+
event_engine_endpoint,
|
78
|
+
const ChannelArgs& args);
|
72
79
|
|
73
80
|
} // namespace http2
|
74
81
|
} // namespace grpc_core
|