grpc 1.78.1 → 1.80.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 +22 -8
- data/include/grpc/credentials.h +47 -37
- data/include/grpc/credentials_cpp.h +39 -0
- data/include/grpc/event_engine/event_engine.h +8 -3
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/impl/call.h +9 -0
- data/include/grpc/impl/channel_arg_names.h +7 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/private_key_signer.h +104 -0
- data/include/grpc/support/port_platform.h +6 -0
- data/src/core/call/call_filters.h +101 -78
- data/src/core/call/call_spine.h +91 -68
- data/src/core/call/call_state.h +60 -4
- data/src/core/call/client_call.cc +9 -9
- data/src/core/call/client_call.h +1 -1
- data/src/core/call/metadata_batch.cc +2 -0
- data/src/core/call/metadata_batch.h +48 -1
- data/src/core/call/metadata_info.cc +35 -0
- data/src/core/call/metadata_info.h +2 -0
- data/src/core/call/simple_slice_based_metadata.h +2 -1
- data/src/core/channelz/channelz.cc +9 -6
- data/src/core/channelz/channelz.h +7 -4
- data/src/core/channelz/property_list.h +5 -0
- data/src/core/channelz/v2tov1/convert.cc +1 -1
- data/src/core/channelz/v2tov1/legacy_api.cc +164 -307
- data/src/core/client_channel/buffered_call.cc +7 -3
- data/src/core/client_channel/buffered_call.h +11 -5
- data/src/core/client_channel/client_channel.cc +106 -44
- data/src/core/client_channel/client_channel.h +3 -6
- data/src/core/client_channel/client_channel_filter.cc +90 -64
- data/src/core/client_channel/client_channel_filter.h +3 -6
- data/src/core/client_channel/client_channel_internal.h +5 -0
- data/src/core/client_channel/config_selector.h +17 -12
- data/src/core/client_channel/dynamic_filters.cc +8 -7
- data/src/core/client_channel/dynamic_filters.h +7 -5
- data/src/core/client_channel/retry_filter.cc +1 -1
- data/src/core/client_channel/retry_filter.h +2 -2
- data/src/core/client_channel/subchannel.cc +1682 -266
- data/src/core/client_channel/subchannel.h +411 -134
- data/src/core/client_channel/subchannel_stream_client.cc +22 -18
- data/src/core/client_channel/subchannel_stream_client.h +8 -9
- data/src/core/client_channel/subchannel_stream_limiter.cc +76 -0
- data/src/core/client_channel/subchannel_stream_limiter.h +51 -0
- data/src/core/config/config_vars.cc +9 -1
- data/src/core/config/config_vars.h +6 -0
- data/src/core/credentials/call/call_creds_registry.h +51 -22
- data/src/core/credentials/call/call_creds_registry_init.cc +86 -2
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +2 -2
- data/src/core/credentials/call/external/external_account_credentials.cc +11 -4
- data/src/core/credentials/call/external/file_external_account_credentials.cc +2 -2
- data/src/core/credentials/transport/channel_creds_registry.h +71 -20
- data/src/core/credentials/transport/channel_creds_registry_init.cc +338 -29
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +43 -24
- data/src/core/credentials/transport/ssl/ssl_credentials.h +7 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +2 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +7 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +181 -109
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +55 -42
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +28 -23
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +26 -23
- data/src/core/credentials/transport/tls/spiffe_utils.cc +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +18 -18
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -10
- data/src/core/credentials/transport/tls/tls_security_connector.cc +106 -74
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -8
- data/src/core/credentials/transport/xds/xds_credentials.cc +76 -32
- data/src/core/credentials/transport/xds/xds_credentials.h +4 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +117 -35
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +42 -4
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +58 -29
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +19 -11
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +82 -25
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +28 -3
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +9 -7
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +7 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +117 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +2 -15
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/goaway.cc +17 -2
- data/src/core/ext/transport/chttp2/transport/goaway.h +27 -6
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -21
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +101 -40
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +95 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +923 -772
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +406 -423
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +8 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +25 -13
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +71 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +25 -49
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +29 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -2
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/keepalive.h +9 -6
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +34 -74
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +123 -79
- data/src/core/ext/transport/chttp2/transport/security_frame.h +233 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +152 -73
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +155 -85
- data/src/core/ext/transport/chttp2/transport/transport_common.h +0 -5
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +8 -7
- data/src/core/ext/transport/chttp2/transport/write_cycle.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +355 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +31 -29
- data/src/core/ext/upb-gen/cel/expr/checked.upb.h +1875 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +409 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +56 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +2223 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +489 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +60 -0
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +130 -18
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -13
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +70 -38
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +20 -17
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +495 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +114 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +121 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +54 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +143 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +18 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +112 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +22 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +276 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +60 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +72 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +23 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +129 -13
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +36 -10
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +31 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +63 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +12 -7
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +97 -81
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +40 -23
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +604 -228
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +146 -100
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +35 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +7 -4
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +66 -14
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +22 -11
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +87 -0
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +29 -2
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +20 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +5 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +239 -60
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +59 -28
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +89 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +50 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +135 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +53 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +105 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +51 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +6 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +206 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +41 -8
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +283 -14
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -11
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +144 -6
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +42 -21
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +9 -8
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +164 -1
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +37 -6
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +26 -11
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +33 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +14 -3
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +90 -10
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +18 -7
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c +248 -0
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h +97 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c +283 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h +107 -0
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +213 -211
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +635 -614
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1012 -1000
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +276 -273
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +149 -144
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +367 -370
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +297 -284
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +492 -469
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +74 -43
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +60 -59
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +202 -184
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +354 -339
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +28 -19
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +30 -27
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +94 -91
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +386 -369
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +60 -57
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +1974 -1884
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +119 -112
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +62 -51
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +109 -88
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +54 -36
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +78 -84
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +48 -46
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1041 -984
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +304 -290
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +94 -77
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +246 -193
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +37 -23
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +4 -5
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +113 -87
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +6 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +25 -30
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +14 -20
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +180 -183
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +56 -47
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +69 -47
- data/src/core/filter/filter_chain.h +95 -0
- data/src/core/handshaker/http_connect/{http_connect_handshaker.cc → http_connect_client_handshaker.cc} +32 -31
- data/src/core/handshaker/http_connect/{http_connect_handshaker.h → http_connect_client_handshaker.h} +4 -4
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +14 -13
- data/src/core/handshaker/security/secure_endpoint.cc +282 -68
- data/src/core/handshaker/security/secure_endpoint.h +0 -7
- data/src/core/lib/channel/channel_args.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +17 -4
- data/src/core/lib/channel/promise_based_filter.h +3 -2
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +35 -8
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -2
- data/src/core/lib/event_engine/event_engine.cc +9 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +24 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +141 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +19 -2
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +7 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +21 -3
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +16 -0
- data/src/core/lib/experiments/experiments.cc +309 -201
- data/src/core/lib/experiments/experiments.h +141 -80
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/resolve_address.h +0 -2
- data/src/core/lib/iomgr/resolved_address.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +13 -5
- data/src/core/lib/iomgr/tcp_server.cc +0 -5
- data/src/core/lib/iomgr/tcp_server.h +0 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +12 -51
- data/src/core/lib/promise/all_ok.h +17 -12
- data/src/core/lib/promise/cancel_callback.h +12 -13
- data/src/core/lib/promise/detail/join_state.h +626 -0
- data/src/core/lib/promise/detail/promise_factory.h +14 -14
- data/src/core/lib/promise/for_each.h +32 -8
- data/src/core/lib/promise/if.h +9 -7
- data/src/core/lib/promise/loop.h +18 -16
- data/src/core/lib/promise/map.h +54 -47
- data/src/core/lib/promise/mpsc.h +11 -10
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.h +25 -19
- data/src/core/lib/promise/poll.h +5 -5
- data/src/core/lib/promise/prioritized_race.h +10 -7
- data/src/core/lib/promise/promise.h +16 -11
- data/src/core/lib/promise/race.h +6 -5
- data/src/core/lib/promise/seq.h +109 -74
- data/src/core/lib/promise/try_join.h +14 -6
- data/src/core/lib/promise/try_seq.h +76 -60
- data/src/core/lib/resource_quota/api.cc +7 -0
- data/src/core/lib/resource_quota/arena.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +4 -1
- data/src/core/lib/resource_quota/resource_quota.cc +2 -1
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/resource_quota/stream_quota.cc +77 -1
- data/src/core/lib/resource_quota/stream_quota.h +64 -1
- data/src/core/lib/resource_quota/telemetry.h +1 -1
- data/src/core/lib/surface/call.cc +13 -0
- data/src/core/lib/surface/call_utils.h +58 -43
- data/src/core/lib/surface/channel.h +1 -4
- data/src/core/lib/surface/completion_queue.cc +13 -6
- data/src/core/lib/surface/validate_metadata.cc +20 -15
- data/src/core/lib/surface/validate_metadata.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +1 -1
- data/src/core/lib/transport/transport.h +5 -0
- data/src/core/load_balancing/health_check_client.cc +1 -15
- data/src/core/load_balancing/health_check_client_internal.h +0 -2
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/oob_backend_metric_internal.h +0 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +12 -9
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -2
- data/src/core/resolver/xds/xds_resolver.cc +162 -116
- data/src/core/server/server.cc +18 -1
- data/src/core/server/server.h +2 -0
- data/src/core/server/xds_server_config_fetcher.cc +4 -4
- data/src/core/telemetry/call_tracer.cc +87 -2
- data/src/core/telemetry/call_tracer.h +46 -8
- data/src/core/telemetry/instrument.cc +102 -40
- data/src/core/telemetry/instrument.h +246 -65
- data/src/core/tsi/fake_transport_security.cc +3 -1
- data/src/core/tsi/ssl_transport_security.cc +516 -137
- data/src/core/tsi/ssl_transport_security.h +28 -22
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
- data/src/core/tsi/ssl_transport_security_utils.h +2 -2
- data/src/core/util/bitset.h +6 -0
- data/src/core/util/function_signature.h +3 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
- data/src/core/util/json/json_reader.cc +0 -4
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -17
- data/src/core/xds/grpc/certificate_provider_store_interface.h +61 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +48 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +18 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -2
- data/src/core/xds/grpc/xds_certificate_provider.h +13 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +13 -6
- data/src/core/xds/grpc/xds_client_grpc.h +10 -7
- data/src/core/xds/grpc/xds_cluster.cc +18 -4
- data/src/core/xds/grpc/xds_cluster.h +17 -2
- data/src/core/xds/grpc/xds_cluster_parser.cc +36 -11
- data/src/core/xds/grpc/xds_common_types.cc +45 -0
- data/src/core/xds/grpc/xds_common_types.h +31 -0
- data/src/core/xds/grpc/xds_common_types_parser.cc +274 -16
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +128 -24
- data/src/core/xds/grpc/xds_http_fault_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_filter.cc +38 -0
- data/src/core/xds/grpc/xds_http_filter.h +70 -47
- data/src/core/xds/grpc/xds_http_filter_registry.cc +48 -14
- data/src/core/xds/grpc/xds_http_filter_registry.h +29 -15
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +88 -22
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +22 -11
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +36 -20
- data/src/core/xds/grpc/xds_http_rbac_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +143 -26
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -10
- data/src/core/xds/grpc/xds_listener.cc +4 -1
- data/src/core/xds/grpc/xds_listener.h +10 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +23 -18
- data/src/core/xds/grpc/xds_matcher.cc +40 -5
- data/src/core/xds/grpc/xds_matcher.h +13 -0
- data/src/core/xds/grpc/xds_matcher_action.h +1 -1
- data/src/core/xds/grpc/xds_matcher_parse.cc +60 -40
- data/src/core/xds/grpc/xds_matcher_parse.h +2 -1
- data/src/core/xds/grpc/xds_route_config.cc +12 -1
- data/src/core/xds/grpc/xds_route_config.h +15 -2
- data/src/core/xds/grpc/xds_route_config_parser.cc +11 -5
- data/src/core/xds/grpc/xds_routing.cc +181 -6
- data/src/core/xds/grpc/xds_routing.h +57 -0
- data/src/core/xds/grpc/xds_server_grpc.cc +55 -43
- data/src/core/xds/grpc/xds_server_grpc.h +13 -6
- data/src/core/xds/grpc/xds_server_grpc_interface.h +3 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +12 -6
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -12
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- metadata +42 -6
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
data/src/core/call/call_spine.h
CHANGED
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
|
19
19
|
|
|
20
|
+
#include <type_traits>
|
|
21
|
+
#include <utility>
|
|
22
|
+
|
|
20
23
|
#include "src/core/call/call_arena_allocator.h"
|
|
21
24
|
#include "src/core/call/call_filters.h"
|
|
22
25
|
#include "src/core/call/channelz_context.h"
|
|
@@ -61,15 +64,15 @@ class CallSpine final : public Party, public channelz::DataSource {
|
|
|
61
64
|
// Add a callback to be called when server trailing metadata is received and
|
|
62
65
|
// return true.
|
|
63
66
|
// If CallOnDone has already been invoked, does nothing and returns false.
|
|
64
|
-
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)
|
|
67
|
+
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)>&& fn) {
|
|
65
68
|
if (call_filters().WasServerTrailingMetadataPulled()) {
|
|
66
69
|
return false;
|
|
67
70
|
}
|
|
68
71
|
if (on_done_ == nullptr) {
|
|
69
|
-
on_done_ = std::
|
|
72
|
+
on_done_ = std::forward<absl::AnyInvocable<void(bool)>>(fn);
|
|
70
73
|
return true;
|
|
71
74
|
}
|
|
72
|
-
on_done_ = [first = std::
|
|
75
|
+
on_done_ = [first = std::forward<absl::AnyInvocable<void(bool)>>(fn),
|
|
73
76
|
next = std::move(on_done_)](bool cancelled) mutable {
|
|
74
77
|
first(cancelled);
|
|
75
78
|
next(cancelled);
|
|
@@ -136,11 +139,11 @@ class CallSpine final : public Party, public channelz::DataSource {
|
|
|
136
139
|
// the rest of the call.
|
|
137
140
|
// The resulting (returned) promise will resolve to Empty.
|
|
138
141
|
template <typename Promise>
|
|
139
|
-
auto CancelIfFails(Promise promise) {
|
|
142
|
+
auto CancelIfFails(Promise&& promise) {
|
|
140
143
|
GRPC_DCHECK(GetContext<Activity>() == this);
|
|
141
|
-
using P = promise_detail::PromiseLike<Promise
|
|
144
|
+
using P = promise_detail::PromiseLike<std::decay_t<Promise>>;
|
|
142
145
|
using ResultType = typename P::Result;
|
|
143
|
-
return Map(std::
|
|
146
|
+
return Map(std::forward<Promise>(promise),
|
|
144
147
|
[self = RefAsSubclass<CallSpine>()](ResultType r) {
|
|
145
148
|
self->CancelIfFailed(r);
|
|
146
149
|
});
|
|
@@ -160,48 +163,54 @@ class CallSpine final : public Party, public channelz::DataSource {
|
|
|
160
163
|
// Spawn a promise that returns Empty{} and save some boilerplate handling
|
|
161
164
|
// that detail.
|
|
162
165
|
template <typename PromiseFactory>
|
|
163
|
-
void SpawnInfallible(absl::string_view name,
|
|
164
|
-
|
|
166
|
+
void SpawnInfallible(absl::string_view name,
|
|
167
|
+
PromiseFactory&& promise_factory) {
|
|
168
|
+
Spawn(name, std::forward<PromiseFactory>(promise_factory), [](Empty) {});
|
|
165
169
|
}
|
|
166
170
|
|
|
167
171
|
// Spawn a promise that returns some status-like type; if the status
|
|
168
172
|
// represents failure automatically cancel the rest of the call.
|
|
169
173
|
template <typename PromiseFactory>
|
|
170
|
-
void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory,
|
|
174
|
+
void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory,
|
|
171
175
|
DebugLocation whence = {}) {
|
|
172
176
|
using FactoryType =
|
|
173
|
-
promise_detail::OncePromiseFactory<void, PromiseFactory
|
|
177
|
+
promise_detail::OncePromiseFactory<void, std::decay_t<PromiseFactory>>;
|
|
174
178
|
using PromiseType = typename FactoryType::Promise;
|
|
175
179
|
using ResultType = typename PromiseType::Result;
|
|
176
180
|
static_assert(
|
|
177
181
|
std::is_same<bool,
|
|
178
182
|
decltype(IsStatusOk(std::declval<ResultType>()))>::value,
|
|
179
183
|
"SpawnGuarded promise must return a status-like object");
|
|
180
|
-
Spawn(name, std::
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
184
|
+
Spawn(name, std::forward<PromiseFactory>(promise_factory),
|
|
185
|
+
[this, whence](ResultType&& r) {
|
|
186
|
+
if (!IsStatusOk(r)) {
|
|
187
|
+
GRPC_TRACE_LOG(promise_primitives, INFO)
|
|
188
|
+
<< "SpawnGuarded sees failure: " << r
|
|
189
|
+
<< " (source: " << whence.file() << ":" << whence.line()
|
|
190
|
+
<< ")";
|
|
191
|
+
auto status =
|
|
192
|
+
StatusCast<ServerMetadataHandle>(std::forward<ResultType>(r));
|
|
193
|
+
status->Set(GrpcCallWasCancelled(), true);
|
|
194
|
+
PushServerTrailingMetadata(std::move(status));
|
|
195
|
+
}
|
|
196
|
+
});
|
|
190
197
|
}
|
|
191
198
|
|
|
192
199
|
// Wrap a promise so that if the call completes that promise is cancelled.
|
|
193
200
|
template <typename Promise>
|
|
194
|
-
auto UntilCallCompletes(Promise promise) {
|
|
195
|
-
using Result = PromiseResult<Promise
|
|
196
|
-
return PrioritizedRace(std::
|
|
201
|
+
auto UntilCallCompletes(Promise&& promise) {
|
|
202
|
+
using Result = PromiseResult<std::decay_t<Promise>>;
|
|
203
|
+
return PrioritizedRace(std::forward<Promise>(promise),
|
|
204
|
+
Map(WasCancelled(), [](bool) {
|
|
197
205
|
return FailureStatusCast<Result>(Failure{});
|
|
198
206
|
}));
|
|
199
207
|
}
|
|
200
208
|
|
|
201
209
|
template <typename PromiseFactory>
|
|
202
210
|
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
|
203
|
-
PromiseFactory promise_factory) {
|
|
204
|
-
SpawnGuarded(name, [this, promise_factory
|
|
211
|
+
PromiseFactory&& promise_factory) {
|
|
212
|
+
SpawnGuarded(name, [this, promise_factory = std::forward<PromiseFactory>(
|
|
213
|
+
promise_factory)]() mutable {
|
|
205
214
|
return UntilCallCompletes(promise_factory());
|
|
206
215
|
});
|
|
207
216
|
}
|
|
@@ -353,9 +362,9 @@ class CallInitiator {
|
|
|
353
362
|
// the rest of the call.
|
|
354
363
|
// The resulting (returned) promise will resolve to Empty.
|
|
355
364
|
template <typename Promise>
|
|
356
|
-
auto CancelIfFails(Promise promise) {
|
|
365
|
+
auto CancelIfFails(Promise&& promise) {
|
|
357
366
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
358
|
-
return spine_->CancelIfFails(std::
|
|
367
|
+
return spine_->CancelIfFails(std::forward<Promise>(promise));
|
|
359
368
|
}
|
|
360
369
|
|
|
361
370
|
auto PullServerInitialMetadata() {
|
|
@@ -419,40 +428,44 @@ class CallInitiator {
|
|
|
419
428
|
spine_->SpawnCancel();
|
|
420
429
|
}
|
|
421
430
|
|
|
422
|
-
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)
|
|
431
|
+
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)>&& fn) {
|
|
423
432
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
424
|
-
return spine_->OnDone(std::
|
|
433
|
+
return spine_->OnDone(std::forward<absl::AnyInvocable<void(bool)>>(fn));
|
|
425
434
|
}
|
|
426
435
|
|
|
427
436
|
template <typename Promise>
|
|
428
|
-
auto UntilCallCompletes(Promise promise) {
|
|
437
|
+
auto UntilCallCompletes(Promise&& promise) {
|
|
429
438
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
430
|
-
return spine_->UntilCallCompletes(std::
|
|
439
|
+
return spine_->UntilCallCompletes(std::forward<Promise>(promise));
|
|
431
440
|
}
|
|
432
441
|
|
|
433
442
|
template <typename PromiseFactory>
|
|
434
|
-
void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory) {
|
|
443
|
+
void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory) {
|
|
435
444
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
436
|
-
spine_->SpawnGuarded(name, std::
|
|
445
|
+
spine_->SpawnGuarded(name, std::forward<PromiseFactory>(promise_factory));
|
|
437
446
|
}
|
|
438
447
|
|
|
439
448
|
template <typename PromiseFactory>
|
|
440
449
|
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
|
441
|
-
PromiseFactory promise_factory) {
|
|
450
|
+
PromiseFactory&& promise_factory) {
|
|
442
451
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
443
|
-
spine_->SpawnGuardedUntilCallCompletes(
|
|
452
|
+
spine_->SpawnGuardedUntilCallCompletes(
|
|
453
|
+
name, std::forward<PromiseFactory>(promise_factory));
|
|
444
454
|
}
|
|
445
455
|
|
|
446
456
|
template <typename PromiseFactory>
|
|
447
|
-
void SpawnInfallible(absl::string_view name,
|
|
457
|
+
void SpawnInfallible(absl::string_view name,
|
|
458
|
+
PromiseFactory&& promise_factory) {
|
|
448
459
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
449
|
-
spine_->SpawnInfallible(name,
|
|
460
|
+
spine_->SpawnInfallible(name,
|
|
461
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
450
462
|
}
|
|
451
463
|
|
|
452
464
|
template <typename PromiseFactory>
|
|
453
|
-
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
|
465
|
+
auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) {
|
|
454
466
|
GRPC_DCHECK_NE(spine_.get(), nullptr);
|
|
455
|
-
return spine_->SpawnWaitable(name,
|
|
467
|
+
return spine_->SpawnWaitable(name,
|
|
468
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
456
469
|
}
|
|
457
470
|
|
|
458
471
|
bool WasCancelledPushed() const {
|
|
@@ -501,16 +514,16 @@ class CallHandler {
|
|
|
501
514
|
spine_->SpawnPushServerTrailingMetadata(std::move(status));
|
|
502
515
|
}
|
|
503
516
|
|
|
504
|
-
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)
|
|
505
|
-
return spine_->OnDone(std::
|
|
517
|
+
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)>&& fn) {
|
|
518
|
+
return spine_->OnDone(std::forward<absl::AnyInvocable<void(bool)>>(fn));
|
|
506
519
|
}
|
|
507
520
|
|
|
508
521
|
// Wrap a promise so that if it returns failure it automatically cancels
|
|
509
522
|
// the rest of the call.
|
|
510
523
|
// The resulting (returned) promise will resolve to Empty.
|
|
511
524
|
template <typename Promise>
|
|
512
|
-
auto CancelIfFails(Promise promise) {
|
|
513
|
-
return spine_->CancelIfFails(std::
|
|
525
|
+
auto CancelIfFails(Promise&& promise) {
|
|
526
|
+
return spine_->CancelIfFails(std::forward<Promise>(promise));
|
|
514
527
|
}
|
|
515
528
|
|
|
516
529
|
auto PushMessage(MessageHandle message) {
|
|
@@ -530,30 +543,35 @@ class CallHandler {
|
|
|
530
543
|
}
|
|
531
544
|
|
|
532
545
|
template <typename Promise>
|
|
533
|
-
auto UntilCallCompletes(Promise promise) {
|
|
534
|
-
return spine_->UntilCallCompletes(std::
|
|
546
|
+
auto UntilCallCompletes(Promise&& promise) {
|
|
547
|
+
return spine_->UntilCallCompletes(std::forward<Promise>(promise));
|
|
535
548
|
}
|
|
536
549
|
|
|
537
550
|
template <typename PromiseFactory>
|
|
538
|
-
void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory,
|
|
551
|
+
void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory,
|
|
539
552
|
DebugLocation whence = {}) {
|
|
540
|
-
spine_->SpawnGuarded(name, std::
|
|
553
|
+
spine_->SpawnGuarded(name, std::forward<PromiseFactory>(promise_factory),
|
|
554
|
+
whence);
|
|
541
555
|
}
|
|
542
556
|
|
|
543
557
|
template <typename PromiseFactory>
|
|
544
558
|
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
|
545
|
-
PromiseFactory promise_factory) {
|
|
546
|
-
spine_->SpawnGuardedUntilCallCompletes(
|
|
559
|
+
PromiseFactory&& promise_factory) {
|
|
560
|
+
spine_->SpawnGuardedUntilCallCompletes(
|
|
561
|
+
name, std::forward<PromiseFactory>(promise_factory));
|
|
547
562
|
}
|
|
548
563
|
|
|
549
564
|
template <typename PromiseFactory>
|
|
550
|
-
void SpawnInfallible(absl::string_view name,
|
|
551
|
-
|
|
565
|
+
void SpawnInfallible(absl::string_view name,
|
|
566
|
+
PromiseFactory&& promise_factory) {
|
|
567
|
+
spine_->SpawnInfallible(name,
|
|
568
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
552
569
|
}
|
|
553
570
|
|
|
554
571
|
template <typename PromiseFactory>
|
|
555
|
-
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
|
556
|
-
return spine_->SpawnWaitable(name,
|
|
572
|
+
auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) {
|
|
573
|
+
return spine_->SpawnWaitable(name,
|
|
574
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
557
575
|
}
|
|
558
576
|
|
|
559
577
|
void AddChildCall(const CallInitiator& initiator) {
|
|
@@ -577,35 +595,40 @@ class UnstartedCallHandler {
|
|
|
577
595
|
spine_->PushServerTrailingMetadata(std::move(status));
|
|
578
596
|
}
|
|
579
597
|
|
|
580
|
-
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)
|
|
581
|
-
return spine_->OnDone(std::
|
|
598
|
+
GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)>&& fn) {
|
|
599
|
+
return spine_->OnDone(std::forward<absl::AnyInvocable<void(bool)>>(fn));
|
|
582
600
|
}
|
|
583
601
|
|
|
584
602
|
template <typename Promise>
|
|
585
|
-
auto CancelIfFails(Promise promise) {
|
|
586
|
-
return spine_->CancelIfFails(std::
|
|
603
|
+
auto CancelIfFails(Promise&& promise) {
|
|
604
|
+
return spine_->CancelIfFails(std::forward<Promise>(promise));
|
|
587
605
|
}
|
|
588
606
|
|
|
589
607
|
template <typename PromiseFactory>
|
|
590
|
-
void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory,
|
|
608
|
+
void SpawnGuarded(absl::string_view name, PromiseFactory&& promise_factory,
|
|
591
609
|
DebugLocation whence = {}) {
|
|
592
|
-
spine_->SpawnGuarded(name, std::
|
|
610
|
+
spine_->SpawnGuarded(name, std::forward<PromiseFactory>(promise_factory),
|
|
611
|
+
whence);
|
|
593
612
|
}
|
|
594
613
|
|
|
595
614
|
template <typename PromiseFactory>
|
|
596
615
|
void SpawnGuardedUntilCallCompletes(absl::string_view name,
|
|
597
|
-
PromiseFactory promise_factory) {
|
|
598
|
-
spine_->SpawnGuardedUntilCallCompletes(
|
|
616
|
+
PromiseFactory&& promise_factory) {
|
|
617
|
+
spine_->SpawnGuardedUntilCallCompletes(
|
|
618
|
+
name, std::forward<PromiseFactory>(promise_factory));
|
|
599
619
|
}
|
|
600
620
|
|
|
601
621
|
template <typename PromiseFactory>
|
|
602
|
-
void SpawnInfallible(absl::string_view name,
|
|
603
|
-
|
|
622
|
+
void SpawnInfallible(absl::string_view name,
|
|
623
|
+
PromiseFactory&& promise_factory) {
|
|
624
|
+
spine_->SpawnInfallible(name,
|
|
625
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
604
626
|
}
|
|
605
627
|
|
|
606
628
|
template <typename PromiseFactory>
|
|
607
|
-
auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
|
|
608
|
-
return spine_->SpawnWaitable(name,
|
|
629
|
+
auto SpawnWaitable(absl::string_view name, PromiseFactory&& promise_factory) {
|
|
630
|
+
return spine_->SpawnWaitable(name,
|
|
631
|
+
std::forward<PromiseFactory>(promise_factory));
|
|
609
632
|
}
|
|
610
633
|
|
|
611
634
|
ClientMetadata& UnprocessedClientInitialMetadata() {
|
|
@@ -636,12 +659,12 @@ CallInitiatorAndHandler MakeCallPair(
|
|
|
636
659
|
ClientMetadataHandle client_initial_metadata, RefCountedPtr<Arena> arena);
|
|
637
660
|
|
|
638
661
|
template <typename CallHalf>
|
|
639
|
-
auto MessagesFrom(CallHalf h) {
|
|
662
|
+
auto MessagesFrom(CallHalf&& h) {
|
|
640
663
|
struct Wrapper {
|
|
641
|
-
CallHalf h;
|
|
664
|
+
std::decay_t<CallHalf> h;
|
|
642
665
|
auto Next() { return h.PullMessage(); }
|
|
643
666
|
};
|
|
644
|
-
return Wrapper{std::
|
|
667
|
+
return Wrapper{std::forward<CallHalf>(h)};
|
|
645
668
|
}
|
|
646
669
|
|
|
647
670
|
template <typename CallHalf>
|
data/src/core/call/call_state.h
CHANGED
|
@@ -92,6 +92,9 @@ class CallState {
|
|
|
92
92
|
// PULL: server -> client
|
|
93
93
|
|
|
94
94
|
// Poll for initial metadata to be available.
|
|
95
|
+
// One and only one call to GRPC_OP_RECV_INITIAL_METADATA MUST be made on the
|
|
96
|
+
// client. By extension, this function is also expected to be called exactly
|
|
97
|
+
// once.
|
|
95
98
|
Poll<bool> PollPullServerInitialMetadataAvailable();
|
|
96
99
|
// Finish pulling server initial metadata.
|
|
97
100
|
void FinishPullServerInitialMetadata();
|
|
@@ -209,6 +212,7 @@ class CallState {
|
|
|
209
212
|
kReading,
|
|
210
213
|
// Main call loop: processing one message
|
|
211
214
|
kProcessingServerToClientMessage,
|
|
215
|
+
kDone,
|
|
212
216
|
kTerminated,
|
|
213
217
|
};
|
|
214
218
|
static const char* ServerToClientPullStateString(
|
|
@@ -232,6 +236,8 @@ class CallState {
|
|
|
232
236
|
return "Reading";
|
|
233
237
|
case ServerToClientPullState::kProcessingServerToClientMessage:
|
|
234
238
|
return "ProcessingServerToClientMessage";
|
|
239
|
+
case ServerToClientPullState::kDone:
|
|
240
|
+
return "Done";
|
|
235
241
|
case ServerToClientPullState::kTerminated:
|
|
236
242
|
return "Terminated";
|
|
237
243
|
}
|
|
@@ -354,6 +360,7 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline void CallState::Start() {
|
|
|
354
360
|
case ServerToClientPullState::kIdle:
|
|
355
361
|
case ServerToClientPullState::kReading:
|
|
356
362
|
case ServerToClientPullState::kProcessingServerToClientMessage:
|
|
363
|
+
case ServerToClientPullState::kDone:
|
|
357
364
|
LOG(FATAL) << "Start called twice; "
|
|
358
365
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_);
|
|
359
366
|
case ServerToClientPullState::kTerminated:
|
|
@@ -747,7 +754,12 @@ CallState::PollPullServerInitialMetadataAvailable() {
|
|
|
747
754
|
case ServerToClientPullState::kUnstartedReading:
|
|
748
755
|
if (server_to_client_push_state_ ==
|
|
749
756
|
ServerToClientPushState::kTrailersOnly) {
|
|
757
|
+
GRPC_DCHECK(server_trailing_metadata_state_ ==
|
|
758
|
+
ServerTrailingMetadataState::kPushedCancel ||
|
|
759
|
+
server_trailing_metadata_state_ ==
|
|
760
|
+
ServerTrailingMetadataState::kPulledCancel);
|
|
750
761
|
server_to_client_pull_state_ = ServerToClientPullState::kTerminated;
|
|
762
|
+
server_to_client_pull_waiter_.Wake();
|
|
751
763
|
return false;
|
|
752
764
|
}
|
|
753
765
|
server_to_client_push_waiter_.pending();
|
|
@@ -766,6 +778,8 @@ CallState::PollPullServerInitialMetadataAvailable() {
|
|
|
766
778
|
LOG(FATAL) << "PollPullServerInitialMetadataAvailable called twice; "
|
|
767
779
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_,
|
|
768
780
|
server_to_client_push_state_);
|
|
781
|
+
// If trailing metadata has been pulled, initial metadata cannot be pulled.
|
|
782
|
+
case ServerToClientPullState::kDone:
|
|
769
783
|
case ServerToClientPullState::kTerminated:
|
|
770
784
|
return false;
|
|
771
785
|
}
|
|
@@ -829,6 +843,7 @@ CallState::FinishPullServerInitialMetadata() {
|
|
|
829
843
|
LOG(FATAL) << "Out of order FinishPullServerInitialMetadata; "
|
|
830
844
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_,
|
|
831
845
|
server_to_client_push_state_);
|
|
846
|
+
case ServerToClientPullState::kDone:
|
|
832
847
|
case ServerToClientPullState::kTerminated:
|
|
833
848
|
return;
|
|
834
849
|
}
|
|
@@ -870,12 +885,28 @@ CallState::PollPullServerToClientMessageAvailable() {
|
|
|
870
885
|
switch (server_to_client_pull_state_) {
|
|
871
886
|
case ServerToClientPullState::kUnstarted:
|
|
872
887
|
server_to_client_pull_state_ = ServerToClientPullState::kUnstartedReading;
|
|
888
|
+
[[fallthrough]];
|
|
889
|
+
case ServerToClientPullState::kUnstartedReading:
|
|
890
|
+
if (server_to_client_push_state_ ==
|
|
891
|
+
ServerToClientPushState::kTrailersOnly) {
|
|
892
|
+
// Here we do not transition to kDone because this poll would return a
|
|
893
|
+
// null message (based on whether the trailing metadata was cancelled)
|
|
894
|
+
// which MUST be interpreted as end of stream.
|
|
895
|
+
server_to_client_pull_state_ = ServerToClientPullState::kTerminated;
|
|
896
|
+
server_to_client_pull_waiter_.Wake();
|
|
897
|
+
GRPC_DCHECK(server_trailing_metadata_state_ !=
|
|
898
|
+
ServerTrailingMetadataState::kNotPushed);
|
|
899
|
+
return WasCancelledPushed() ? Failure{} : ValueOrFailure<bool>{false};
|
|
900
|
+
}
|
|
901
|
+
// When TrailersOnly is pushed, server_to_client_push_state_ is modified
|
|
902
|
+
// and the server_to_client_push_waiter_ is woken up. If this promise only
|
|
903
|
+
// waits on server_to_client_pull_waiter_, it may never be polled.
|
|
904
|
+
server_to_client_push_waiter_.pending();
|
|
873
905
|
return server_to_client_pull_waiter_.pending();
|
|
874
906
|
case ServerToClientPullState::kProcessingServerInitialMetadata:
|
|
875
907
|
server_to_client_pull_state_ =
|
|
876
908
|
ServerToClientPullState::kProcessingServerInitialMetadataReading;
|
|
877
909
|
return server_to_client_pull_waiter_.pending();
|
|
878
|
-
case ServerToClientPullState::kUnstartedReading:
|
|
879
910
|
case ServerToClientPullState::kProcessingServerInitialMetadataReading:
|
|
880
911
|
return server_to_client_pull_waiter_.pending();
|
|
881
912
|
case ServerToClientPullState::kStarted:
|
|
@@ -884,8 +915,19 @@ CallState::PollPullServerToClientMessageAvailable() {
|
|
|
884
915
|
case ServerToClientPullState::kStartedReading:
|
|
885
916
|
if (server_to_client_push_state_ ==
|
|
886
917
|
ServerToClientPushState::kTrailersOnly) {
|
|
887
|
-
return
|
|
918
|
+
// Here we do not transition to kDone because this poll would return a
|
|
919
|
+
// null message (based on whether the trailing metadata was cancelled)
|
|
920
|
+
// which MUST be interpreted as end of stream.
|
|
921
|
+
server_to_client_pull_state_ = ServerToClientPullState::kTerminated;
|
|
922
|
+
server_to_client_pull_waiter_.Wake();
|
|
923
|
+
GRPC_DCHECK(server_trailing_metadata_state_ !=
|
|
924
|
+
ServerTrailingMetadataState::kNotPushed);
|
|
925
|
+
return WasCancelledPushed() ? Failure{} : ValueOrFailure<bool>{false};
|
|
888
926
|
}
|
|
927
|
+
// When TrailersOnly is pushed, server_to_client_push_state_ is modified
|
|
928
|
+
// and the server_to_client_push_waiter_ is woken up. If this promise only
|
|
929
|
+
// waits on server_to_client_pull_waiter_, it may never be polled.
|
|
930
|
+
server_to_client_push_waiter_.pending();
|
|
889
931
|
return server_to_client_pull_waiter_.pending();
|
|
890
932
|
case ServerToClientPullState::kIdle:
|
|
891
933
|
server_to_client_pull_state_ = ServerToClientPullState::kReading;
|
|
@@ -898,6 +940,12 @@ CallState::PollPullServerToClientMessageAvailable() {
|
|
|
898
940
|
"processing a message; "
|
|
899
941
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_,
|
|
900
942
|
server_to_client_push_state_);
|
|
943
|
+
case ServerToClientPullState::kDone:
|
|
944
|
+
// Return EndOfStream to the upper layer. Any further attempts to read
|
|
945
|
+
// message will be treated as failures.
|
|
946
|
+
server_to_client_pull_state_ = ServerToClientPullState::kTerminated;
|
|
947
|
+
server_to_client_pull_waiter_.Wake();
|
|
948
|
+
return false;
|
|
901
949
|
case ServerToClientPullState::kTerminated:
|
|
902
950
|
return Failure{};
|
|
903
951
|
}
|
|
@@ -949,6 +997,7 @@ CallState::PollPullServerToClientMessageStarted() {
|
|
|
949
997
|
case ServerToClientPullState::kReading:
|
|
950
998
|
case ServerToClientPullState::kProcessingServerToClientMessage:
|
|
951
999
|
return Success{};
|
|
1000
|
+
case ServerToClientPullState::kDone:
|
|
952
1001
|
case ServerToClientPullState::kTerminated:
|
|
953
1002
|
return Failure{};
|
|
954
1003
|
}
|
|
@@ -977,6 +1026,7 @@ CallState::FinishPullServerToClientMessage() {
|
|
|
977
1026
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_,
|
|
978
1027
|
server_to_client_push_state_);
|
|
979
1028
|
case ServerToClientPullState::kReading:
|
|
1029
|
+
case ServerToClientPullState::kDone:
|
|
980
1030
|
LOG(FATAL) << "FinishPullServerToClientMessage called before "
|
|
981
1031
|
<< "PollPullServerToClientMessageAvailable; "
|
|
982
1032
|
<< GRPC_DUMP_ARGS(server_to_client_pull_state_,
|
|
@@ -1027,6 +1077,7 @@ CallState::PollServerTrailingMetadataAvailable() {
|
|
|
1027
1077
|
case ServerToClientPullState::kProcessingServerToClientMessage:
|
|
1028
1078
|
case ServerToClientPullState::kProcessingServerInitialMetadataReading:
|
|
1029
1079
|
case ServerToClientPullState::kUnstartedReading:
|
|
1080
|
+
server_trailing_metadata_waiter_.pending();
|
|
1030
1081
|
return server_to_client_pull_waiter_.pending();
|
|
1031
1082
|
case ServerToClientPullState::kStartedReading:
|
|
1032
1083
|
case ServerToClientPullState::kReading:
|
|
@@ -1045,6 +1096,7 @@ CallState::PollServerTrailingMetadataAvailable() {
|
|
|
1045
1096
|
case ServerToClientPushState::
|
|
1046
1097
|
kPushedServerInitialMetadataAndPushedMessage:
|
|
1047
1098
|
case ServerToClientPushState::kPushedMessage:
|
|
1099
|
+
server_trailing_metadata_waiter_.pending();
|
|
1048
1100
|
server_to_client_push_waiter_.pending();
|
|
1049
1101
|
return server_to_client_pull_waiter_.pending();
|
|
1050
1102
|
}
|
|
@@ -1057,19 +1109,23 @@ CallState::PollServerTrailingMetadataAvailable() {
|
|
|
1057
1109
|
break; // Ready for processing
|
|
1058
1110
|
}
|
|
1059
1111
|
return server_trailing_metadata_waiter_.pending();
|
|
1112
|
+
case ServerToClientPullState::kDone:
|
|
1060
1113
|
case ServerToClientPullState::kTerminated:
|
|
1061
1114
|
break;
|
|
1062
1115
|
}
|
|
1063
|
-
|
|
1064
|
-
server_to_client_pull_waiter_.Wake();
|
|
1116
|
+
|
|
1065
1117
|
switch (server_trailing_metadata_state_) {
|
|
1066
1118
|
case ServerTrailingMetadataState::kPushed:
|
|
1067
1119
|
server_trailing_metadata_state_ = ServerTrailingMetadataState::kPulled;
|
|
1120
|
+
server_to_client_pull_state_ = ServerToClientPullState::kDone;
|
|
1121
|
+
server_to_client_pull_waiter_.Wake();
|
|
1068
1122
|
server_trailing_metadata_waiter_.Wake();
|
|
1069
1123
|
break;
|
|
1070
1124
|
case ServerTrailingMetadataState::kPushedCancel:
|
|
1071
1125
|
server_trailing_metadata_state_ =
|
|
1072
1126
|
ServerTrailingMetadataState::kPulledCancel;
|
|
1127
|
+
server_to_client_pull_state_ = ServerToClientPullState::kTerminated;
|
|
1128
|
+
server_to_client_pull_waiter_.Wake();
|
|
1073
1129
|
server_trailing_metadata_waiter_.Wake();
|
|
1074
1130
|
break;
|
|
1075
1131
|
case ServerTrailingMetadataState::kNotPushed:
|
|
@@ -211,7 +211,7 @@ void ClientCall::CancelWithError(grpc_error_handle error) {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
template <typename Batch>
|
|
214
|
-
void ClientCall::ScheduleCommittedBatch(Batch batch) {
|
|
214
|
+
void ClientCall::ScheduleCommittedBatch(Batch&& batch) {
|
|
215
215
|
GRPC_LATENT_SEE_SCOPE("ClientCall::ScheduleCommittedBatch");
|
|
216
216
|
auto cur_state = call_state_.load(std::memory_order_acquire);
|
|
217
217
|
while (true) {
|
|
@@ -219,12 +219,12 @@ void ClientCall::ScheduleCommittedBatch(Batch batch) {
|
|
|
219
219
|
case kUnstarted:
|
|
220
220
|
default: { // UnorderedStart
|
|
221
221
|
auto pending = std::make_unique<UnorderedStart>();
|
|
222
|
-
pending->start_pending_batch =
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
222
|
+
pending->start_pending_batch =
|
|
223
|
+
[this, batch = std::forward<Batch>(batch)]() mutable {
|
|
224
|
+
started_call_initiator_.SpawnInfallible(
|
|
225
|
+
"batch", GRPC_LATENT_SEE_PROMISE("ClientCallBatch",
|
|
226
|
+
std::forward<Batch>(batch)));
|
|
227
|
+
};
|
|
228
228
|
while (true) {
|
|
229
229
|
pending->next = reinterpret_cast<UnorderedStart*>(cur_state);
|
|
230
230
|
if (call_state_.compare_exchange_strong(
|
|
@@ -244,8 +244,8 @@ void ClientCall::ScheduleCommittedBatch(Batch batch) {
|
|
|
244
244
|
}
|
|
245
245
|
case kStarted:
|
|
246
246
|
started_call_initiator_.SpawnInfallible(
|
|
247
|
-
"batch",
|
|
248
|
-
|
|
247
|
+
"batch", GRPC_LATENT_SEE_PROMISE("ClientCallBatch",
|
|
248
|
+
std::forward<Batch>(batch)));
|
|
249
249
|
return;
|
|
250
250
|
case kCancelled:
|
|
251
251
|
return;
|
data/src/core/call/client_call.h
CHANGED
|
@@ -130,7 +130,7 @@ class ClientCall final
|
|
|
130
130
|
void CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag,
|
|
131
131
|
bool is_notify_tag_closure);
|
|
132
132
|
template <typename Batch>
|
|
133
|
-
void ScheduleCommittedBatch(Batch batch);
|
|
133
|
+
void ScheduleCommittedBatch(Batch&& batch);
|
|
134
134
|
Party::WakeupHold StartCall(const grpc_op& send_initial_metadata_op);
|
|
135
135
|
// Attempt to start the call and send handler down the stack; returns true if
|
|
136
136
|
// state was updated, false otherwise (with cur_state updated to the new
|
|
@@ -59,6 +59,8 @@ bool IsMetadataKeyAllowedInDebugOutput(absl::string_view key) {
|
|
|
59
59
|
if (key == UserAgentMetadata::key()) return true;
|
|
60
60
|
if (key == W3CTraceParentMetadata::key()) return true;
|
|
61
61
|
if (key == XEnvoyPeerMetadata::key()) return true;
|
|
62
|
+
if (key == XForwardedForMetadata::key()) return true;
|
|
63
|
+
if (key == XForwardedHostMetadata::key()) return true;
|
|
62
64
|
// go/keep-sorted end
|
|
63
65
|
// go/keep-sorted start
|
|
64
66
|
if (key == GrpcCallWasCancelled::DebugKey()) return true;
|