grpc 1.78.0 → 1.80.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 +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/grpc.rb +7 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
- data/src/ruby/spec/spec_helper.rb +1 -1
- metadata +64 -14
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
|
@@ -28,8 +28,8 @@ class TwoPartyPrioritizedRace {
|
|
|
28
28
|
public:
|
|
29
29
|
using Result = decltype(std::declval<A>()());
|
|
30
30
|
|
|
31
|
-
explicit TwoPartyPrioritizedRace(A a, B b)
|
|
32
|
-
: a_(std::
|
|
31
|
+
explicit TwoPartyPrioritizedRace(A&& a, B&& b)
|
|
32
|
+
: a_(std::forward<A>(a)), b_(std::forward<B>(b)) {}
|
|
33
33
|
|
|
34
34
|
Result operator()() {
|
|
35
35
|
// Check the priority promise.
|
|
@@ -63,17 +63,20 @@ class PrioritizedRace<Promise, Promises...>
|
|
|
63
63
|
: public TwoPartyPrioritizedRace<Promise, PrioritizedRace<Promises...>> {
|
|
64
64
|
public:
|
|
65
65
|
using Result = decltype(std::declval<Promise>()());
|
|
66
|
-
explicit PrioritizedRace(Promise promise, Promises
|
|
67
|
-
: TwoPartyPrioritizedRace<Promise
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
explicit PrioritizedRace(Promise&& promise, Promises&&... promises)
|
|
67
|
+
: TwoPartyPrioritizedRace<std::decay_t<Promise>,
|
|
68
|
+
std::decay_t<PrioritizedRace<Promises...>>>(
|
|
69
|
+
std::forward<Promise>(promise),
|
|
70
|
+
PrioritizedRace<std::decay_t<Promises>...>(
|
|
71
|
+
std::forward<Promises>(promises)...)) {}
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
template <typename Promise>
|
|
73
75
|
class PrioritizedRace<Promise> {
|
|
74
76
|
public:
|
|
75
77
|
using Result = decltype(std::declval<Promise>()());
|
|
76
|
-
explicit PrioritizedRace(Promise promise)
|
|
78
|
+
explicit PrioritizedRace(Promise&& promise)
|
|
79
|
+
: promise_(std::forward<Promise>(promise)) {}
|
|
77
80
|
Result operator()() { return promise_(); }
|
|
78
81
|
|
|
79
82
|
private:
|
|
@@ -36,9 +36,10 @@ using Promise = absl::AnyInvocable<Poll<T>()>;
|
|
|
36
36
|
// Helper to execute a promise immediately and return either the result or
|
|
37
37
|
// nothing.
|
|
38
38
|
template <typename Promise>
|
|
39
|
-
auto NowOrNever(Promise promise)
|
|
40
|
-
|
|
41
|
-
auto r = promise_detail::PromiseLike<
|
|
39
|
+
auto NowOrNever(Promise&& promise) -> std::optional<
|
|
40
|
+
typename promise_detail::PromiseLike<std::decay_t<Promise>>::Result> {
|
|
41
|
+
auto r = promise_detail::PromiseLike<std::decay_t<Promise>>(
|
|
42
|
+
std::forward<Promise>(promise))();
|
|
42
43
|
if (auto* p = r.value_if_ready()) {
|
|
43
44
|
return std::move(*p);
|
|
44
45
|
}
|
|
@@ -56,9 +57,13 @@ namespace promise_detail {
|
|
|
56
57
|
template <typename T>
|
|
57
58
|
class Immediate {
|
|
58
59
|
public:
|
|
59
|
-
|
|
60
|
+
template <typename U>
|
|
61
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Immediate(U value)
|
|
60
62
|
: value_(std::move(value)) {}
|
|
61
63
|
|
|
64
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Immediate(T&& value)
|
|
65
|
+
: value_(std::forward<T>(value)) {}
|
|
66
|
+
|
|
62
67
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll<T> operator()() {
|
|
63
68
|
return std::move(value_);
|
|
64
69
|
}
|
|
@@ -70,9 +75,10 @@ class Immediate {
|
|
|
70
75
|
|
|
71
76
|
// Return \a value immediately
|
|
72
77
|
template <typename T>
|
|
73
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Immediate<
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Immediate<
|
|
79
|
+
std::decay_t<T>>
|
|
80
|
+
Immediate(T&& value) {
|
|
81
|
+
return promise_detail::Immediate<std::decay_t<T>>(std::forward<T>(value));
|
|
76
82
|
}
|
|
77
83
|
|
|
78
84
|
// Return status Ok immediately
|
|
@@ -88,10 +94,9 @@ struct ImmediateOkStatus {
|
|
|
88
94
|
// should fail to compile. When modifying this code these should be uncommented
|
|
89
95
|
// and their miscompilation verified.
|
|
90
96
|
template <typename T, typename F>
|
|
91
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AssertResultType(F f) ->
|
|
92
|
-
typename std::
|
|
93
|
-
|
|
94
|
-
return f;
|
|
97
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AssertResultType(F&& f) ->
|
|
98
|
+
typename std::enable_if_t<std::is_same_v<decltype(f()), Poll<T>>, F> {
|
|
99
|
+
return std::forward<F>(f);
|
|
95
100
|
}
|
|
96
101
|
|
|
97
102
|
template <typename Promise>
|
data/src/core/lib/promise/race.h
CHANGED
|
@@ -35,9 +35,10 @@ class Race<Promise, Promises...> {
|
|
|
35
35
|
public:
|
|
36
36
|
using Result = decltype(std::declval<Promise>()());
|
|
37
37
|
|
|
38
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise promise,
|
|
39
|
-
Promises
|
|
40
|
-
: promise_(std::
|
|
38
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise&& promise,
|
|
39
|
+
Promises&&... promises)
|
|
40
|
+
: promise_(std::forward<Promise>(promise)),
|
|
41
|
+
next_(std::forward<Promises>(promises)...) {}
|
|
41
42
|
|
|
42
43
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()() {
|
|
43
44
|
// Check our own promise.
|
|
@@ -79,8 +80,8 @@ template <typename Promise>
|
|
|
79
80
|
class Race<Promise> {
|
|
80
81
|
public:
|
|
81
82
|
using Result = decltype(std::declval<Promise>()());
|
|
82
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise promise)
|
|
83
|
-
: promise_(std::
|
|
83
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Race(Promise&& promise)
|
|
84
|
+
: promise_(std::forward<Promise>(promise)) {}
|
|
84
85
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()() {
|
|
85
86
|
return promise_();
|
|
86
87
|
}
|
data/src/core/lib/promise/seq.h
CHANGED
|
@@ -90,8 +90,8 @@ struct SeqTraits {
|
|
|
90
90
|
}
|
|
91
91
|
template <typename Result, typename PriorResult, typename RunNext>
|
|
92
92
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
93
|
-
CheckResultAndRunNext(PriorResult prior, RunNext run_next) {
|
|
94
|
-
return run_next(std::
|
|
93
|
+
CheckResultAndRunNext(PriorResult&& prior, RunNext run_next) {
|
|
94
|
+
return run_next(std::forward<PriorResult>(prior));
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
|
|
@@ -128,113 +128,146 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline F Seq(F functor) {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
template <typename F0, typename F1>
|
|
131
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
132
|
-
F0 f0, F1 f1, DebugLocation whence = {}) {
|
|
133
|
-
return promise_detail::Seq<
|
|
131
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq(
|
|
132
|
+
F0&& f0, F1&& f1, DebugLocation whence = {}) {
|
|
133
|
+
return promise_detail::Seq<std::decay_t<F0>, std::decay_t<F1>>(
|
|
134
|
+
std::forward<F0>(f0), std::forward<F1>(f1), whence);
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
template <typename F0, typename F1, typename F2>
|
|
137
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
138
|
-
F0 f0, F1 f1, F2 f2, DebugLocation whence = {}) {
|
|
139
|
-
return promise_detail::Seq<
|
|
140
|
-
|
|
138
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq(
|
|
139
|
+
F0&& f0, F1&& f1, F2&& f2, DebugLocation whence = {}) {
|
|
140
|
+
return promise_detail::Seq<std::decay_t<F0>, std::decay_t<F1>,
|
|
141
|
+
std::decay_t<F2>>(
|
|
142
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2), whence);
|
|
141
143
|
}
|
|
142
144
|
|
|
143
145
|
template <typename F0, typename F1, typename F2, typename F3>
|
|
144
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
145
|
-
|
|
146
|
-
return promise_detail::Seq<F0
|
|
147
|
-
|
|
146
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq(
|
|
147
|
+
F0&& f0, F1&& f1, F2&& f2, F3&& f3, DebugLocation whence = {}) {
|
|
148
|
+
return promise_detail::Seq<std::decay_t<F0>, std::decay_t<F1>,
|
|
149
|
+
std::decay_t<F2>, std::decay_t<F3>>(
|
|
150
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
151
|
+
std::forward<F3>(f3), whence);
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
template <typename F0, typename F1, typename F2, typename F3, typename F4>
|
|
151
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
152
|
-
|
|
153
|
-
Seq
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq(
|
|
156
|
+
F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, DebugLocation whence = {}) {
|
|
157
|
+
return promise_detail::Seq<std::decay_t<F0>, std::decay_t<F1>,
|
|
158
|
+
std::decay_t<F2>, std::decay_t<F3>,
|
|
159
|
+
std::decay_t<F4>>(
|
|
160
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
161
|
+
std::forward<F3>(f3), std::forward<F4>(f4), whence);
|
|
157
162
|
}
|
|
158
163
|
|
|
159
164
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
160
165
|
typename F5>
|
|
161
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
return promise_detail::Seq<F0
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto Seq(
|
|
167
|
+
F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, F5&& f5,
|
|
168
|
+
DebugLocation whence = {}) {
|
|
169
|
+
return promise_detail::Seq<std::decay_t<F0>, std::decay_t<F1>,
|
|
170
|
+
std::decay_t<F2>, std::decay_t<F3>,
|
|
171
|
+
std::decay_t<F4>, std::decay_t<F5>>(
|
|
172
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
173
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5), whence);
|
|
167
174
|
}
|
|
168
175
|
|
|
169
176
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
170
177
|
typename F5, typename F6>
|
|
171
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
return promise_detail::Seq<
|
|
176
|
-
std::
|
|
177
|
-
std::
|
|
178
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
179
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
180
|
+
F6&& f6,
|
|
181
|
+
DebugLocation whence = {}) {
|
|
182
|
+
return promise_detail::Seq<
|
|
183
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
184
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>>(
|
|
185
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
186
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
187
|
+
std::forward<F6>(f6), whence);
|
|
178
188
|
}
|
|
179
189
|
|
|
180
190
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
181
191
|
typename F5, typename F6, typename F7>
|
|
182
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return promise_detail::Seq<
|
|
187
|
-
std::
|
|
188
|
-
std::
|
|
192
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
193
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
194
|
+
F6&& f6, F7&& f7,
|
|
195
|
+
DebugLocation whence = {}) {
|
|
196
|
+
return promise_detail::Seq<
|
|
197
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
198
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>>(
|
|
199
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
200
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
201
|
+
std::forward<F6>(f6), std::forward<F7>(f7), whence);
|
|
189
202
|
}
|
|
190
203
|
|
|
191
204
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
192
205
|
typename F5, typename F6, typename F7, typename F8>
|
|
193
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
return promise_detail::Seq<
|
|
198
|
-
std::
|
|
199
|
-
std::
|
|
206
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
207
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
208
|
+
F6&& f6, F7&& f7, F8&& f8,
|
|
209
|
+
DebugLocation whence = {}) {
|
|
210
|
+
return promise_detail::Seq<
|
|
211
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
212
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>,
|
|
213
|
+
std::decay_t<F8>>(
|
|
214
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
215
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
216
|
+
std::forward<F6>(f6), std::forward<F7>(f7), std::forward<F8>(f8), whence);
|
|
200
217
|
}
|
|
201
218
|
|
|
202
219
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
203
220
|
typename F5, typename F6, typename F7, typename F8, typename F9>
|
|
204
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
std::
|
|
211
|
-
|
|
221
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
222
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
223
|
+
F6&& f6, F7&& f7, F8&& f8,
|
|
224
|
+
F9&& f9,
|
|
225
|
+
DebugLocation whence = {}) {
|
|
226
|
+
return promise_detail::Seq<
|
|
227
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
228
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>,
|
|
229
|
+
std::decay_t<F8>, std::decay_t<F9>>(
|
|
230
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
231
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
232
|
+
std::forward<F6>(f6), std::forward<F7>(f7), std::forward<F8>(f8),
|
|
233
|
+
std::forward<F9>(f9), whence);
|
|
212
234
|
}
|
|
213
235
|
|
|
214
236
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
215
237
|
typename F5, typename F6, typename F7, typename F8, typename F9,
|
|
216
238
|
typename F10>
|
|
217
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
std::
|
|
224
|
-
std::
|
|
239
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
240
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
241
|
+
F6&& f6, F7&& f7, F8&& f8,
|
|
242
|
+
F9&& f9, F10&& f10,
|
|
243
|
+
DebugLocation whence = {}) {
|
|
244
|
+
return promise_detail::Seq<
|
|
245
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
246
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>,
|
|
247
|
+
std::decay_t<F8>, std::decay_t<F9>, std::decay_t<F10>>(
|
|
248
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
249
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
250
|
+
std::forward<F6>(f6), std::forward<F7>(f7), std::forward<F8>(f8),
|
|
251
|
+
std::forward<F9>(f9), std::forward<F10>(f10), whence);
|
|
225
252
|
}
|
|
226
253
|
|
|
227
254
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
228
255
|
typename F5, typename F6, typename F7, typename F8, typename F9,
|
|
229
256
|
typename F10, typename F11>
|
|
230
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
std::
|
|
237
|
-
std::
|
|
257
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto Seq(F0&& f0, F1&& f1, F2&& f2,
|
|
258
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
259
|
+
F6&& f6, F7&& f7, F8&& f8,
|
|
260
|
+
F9&& f9, F10&& f10, F11&& f11,
|
|
261
|
+
DebugLocation whence = {}) {
|
|
262
|
+
return promise_detail::Seq<
|
|
263
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
264
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>,
|
|
265
|
+
std::decay_t<F8>, std::decay_t<F9>, std::decay_t<F10>, std::decay_t<F11>>(
|
|
266
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
267
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
268
|
+
std::forward<F6>(f6), std::forward<F7>(f7), std::forward<F8>(f8),
|
|
269
|
+
std::forward<F9>(f9), std::forward<F10>(f10), std::forward<F11>(f11),
|
|
270
|
+
whence);
|
|
238
271
|
}
|
|
239
272
|
|
|
240
273
|
// Execute a sequence of operations of unknown length.
|
|
@@ -245,10 +278,12 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
|
245
278
|
// return argument;
|
|
246
279
|
template <typename Iter, typename Factory, typename Argument>
|
|
247
280
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto SeqIter(Iter begin, Iter end,
|
|
248
|
-
Argument argument,
|
|
249
|
-
Factory factory) {
|
|
250
|
-
return promise_detail::SeqIter<Iter, Factory
|
|
251
|
-
|
|
281
|
+
Argument&& argument,
|
|
282
|
+
Factory&& factory) {
|
|
283
|
+
return promise_detail::SeqIter<Iter, std::decay_t<Factory>,
|
|
284
|
+
std::decay_t<Argument>>(
|
|
285
|
+
begin, end, std::forward<Factory>(factory),
|
|
286
|
+
std::forward<Argument>(argument));
|
|
252
287
|
}
|
|
253
288
|
|
|
254
289
|
} // namespace grpc_core
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
|
19
19
|
|
|
20
20
|
#include <tuple>
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
#include <utility>
|
|
21
23
|
#include <variant>
|
|
22
24
|
|
|
23
25
|
#include "src/core/lib/promise/detail/join_state.h"
|
|
@@ -231,6 +233,11 @@ class TryJoin {
|
|
|
231
233
|
return state_.PollOnce();
|
|
232
234
|
}
|
|
233
235
|
|
|
236
|
+
void ToProto(grpc_channelz_v2_Promise* promise_proto,
|
|
237
|
+
upb_Arena* arena) const {
|
|
238
|
+
state_.ToProto(grpc_channelz_v2_Promise_TRY, promise_proto, arena);
|
|
239
|
+
}
|
|
240
|
+
|
|
234
241
|
private:
|
|
235
242
|
JoinState<TryJoinTraits<R>, Promises...> state_;
|
|
236
243
|
};
|
|
@@ -247,15 +254,16 @@ struct WrapInStatusOrTuple {
|
|
|
247
254
|
} // namespace promise_detail
|
|
248
255
|
|
|
249
256
|
template <template <typename> class R, typename... Promises>
|
|
250
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
251
|
-
|
|
252
|
-
TryJoin(
|
|
253
|
-
|
|
257
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TryJoin(
|
|
258
|
+
Promises&&... promises) {
|
|
259
|
+
return promise_detail::TryJoin<R, std::decay_t<Promises>...>(
|
|
260
|
+
std::forward<Promises>(promises)...);
|
|
254
261
|
}
|
|
255
262
|
|
|
256
263
|
template <template <typename> class R, typename F>
|
|
257
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TryJoin(F promise) {
|
|
258
|
-
return Map(
|
|
264
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TryJoin(F&& promise) {
|
|
265
|
+
return Map(std::forward<F>(promise),
|
|
266
|
+
promise_detail::WrapInStatusOrTuple<R>{});
|
|
259
267
|
}
|
|
260
268
|
|
|
261
269
|
} // namespace grpc_core
|
|
@@ -94,8 +94,8 @@ struct TrySeqTraitsWithSfinae {
|
|
|
94
94
|
}
|
|
95
95
|
template <typename Result, typename RunNext>
|
|
96
96
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
97
|
-
CheckResultAndRunNext(T prior, RunNext run_next) {
|
|
98
|
-
return run_next(std::
|
|
97
|
+
CheckResultAndRunNext(T&& prior, RunNext run_next) {
|
|
98
|
+
return run_next(std::forward<T>(prior));
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
101
|
|
|
@@ -122,9 +122,9 @@ struct TrySeqTraitsWithSfinae<absl::StatusOr<T>> {
|
|
|
122
122
|
}
|
|
123
123
|
template <typename Result, typename RunNext>
|
|
124
124
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
125
|
-
CheckResultAndRunNext(absl::StatusOr<T
|
|
125
|
+
CheckResultAndRunNext(absl::StatusOr<T>&& prior, RunNext run_next) {
|
|
126
126
|
if (!prior.ok()) return FailureStatusCast<Result>(prior.status());
|
|
127
|
-
return run_next(std::
|
|
127
|
+
return run_next(std::forward<absl::StatusOr<T>>(prior));
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
130
|
|
|
@@ -181,9 +181,9 @@ struct TrySeqTraitsWithSfinae<
|
|
|
181
181
|
}
|
|
182
182
|
template <typename Result, typename RunNext>
|
|
183
183
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
184
|
-
CheckResultAndRunNext(T prior, RunNext run_next) {
|
|
185
|
-
if (!IsStatusOk(prior)) return Result(std::
|
|
186
|
-
return run_next(std::
|
|
184
|
+
CheckResultAndRunNext(T&& prior, RunNext run_next) {
|
|
185
|
+
if (!IsStatusOk(prior)) return Result(std::forward<T>(prior));
|
|
186
|
+
return run_next(std::forward<T>(prior));
|
|
187
187
|
}
|
|
188
188
|
};
|
|
189
189
|
template <typename T>
|
|
@@ -213,9 +213,9 @@ struct TrySeqTraitsWithSfinae<
|
|
|
213
213
|
}
|
|
214
214
|
template <typename Result, typename RunNext>
|
|
215
215
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
216
|
-
CheckResultAndRunNext(T prior, RunNext run_next) {
|
|
217
|
-
if (!IsStatusOk(prior)) return Result(std::
|
|
218
|
-
return run_next(std::
|
|
216
|
+
CheckResultAndRunNext(T&& prior, RunNext run_next) {
|
|
217
|
+
if (!IsStatusOk(prior)) return Result(std::forward<T>(prior));
|
|
218
|
+
return run_next(std::forward<T>(prior));
|
|
219
219
|
}
|
|
220
220
|
};
|
|
221
221
|
template <>
|
|
@@ -241,9 +241,9 @@ struct TrySeqTraitsWithSfinae<absl::Status> {
|
|
|
241
241
|
}
|
|
242
242
|
template <typename Result, typename RunNext>
|
|
243
243
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
244
|
-
CheckResultAndRunNext(absl::Status prior, RunNext run_next) {
|
|
244
|
+
CheckResultAndRunNext(absl::Status&& prior, RunNext run_next) {
|
|
245
245
|
if (!prior.ok()) return StatusCast<Result>(std::move(prior));
|
|
246
|
-
return run_next(std::
|
|
246
|
+
return run_next(std::forward<absl::Status>(prior));
|
|
247
247
|
}
|
|
248
248
|
};
|
|
249
249
|
|
|
@@ -306,66 +306,77 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline F TrySeq(F functor) {
|
|
|
306
306
|
}
|
|
307
307
|
|
|
308
308
|
template <typename F0, typename F1>
|
|
309
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
310
|
-
|
|
311
|
-
return promise_detail::TrySeq<
|
|
309
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TrySeq(
|
|
310
|
+
F0&& f0, F1&& f1, DebugLocation whence = {}) {
|
|
311
|
+
return promise_detail::TrySeq<std::decay_t<F0>, std::decay_t<F1>>(
|
|
312
|
+
std::forward<F0>(f0), std::forward<F1>(f1), whence);
|
|
312
313
|
}
|
|
313
314
|
|
|
314
315
|
template <typename F0, typename F1, typename F2>
|
|
315
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
316
|
-
|
|
317
|
-
return promise_detail::TrySeq<
|
|
318
|
-
|
|
316
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TrySeq(
|
|
317
|
+
F0&& f0, F1&& f1, F2&& f2, DebugLocation whence = {}) {
|
|
318
|
+
return promise_detail::TrySeq<std::decay_t<F0>, std::decay_t<F1>,
|
|
319
|
+
std::decay_t<F2>>(
|
|
320
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2), whence);
|
|
319
321
|
}
|
|
320
322
|
|
|
321
323
|
template <typename F0, typename F1, typename F2, typename F3>
|
|
322
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
323
|
-
|
|
324
|
-
TrySeq
|
|
325
|
-
|
|
326
|
-
std::
|
|
324
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TrySeq(
|
|
325
|
+
F0&& f0, F1&& f1, F2&& f2, F3&& f3, DebugLocation whence = {}) {
|
|
326
|
+
return promise_detail::TrySeq<std::decay_t<F0>, std::decay_t<F1>,
|
|
327
|
+
std::decay_t<F2>, std::decay_t<F3>>(
|
|
328
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
329
|
+
std::forward<F3>(f3), whence);
|
|
327
330
|
}
|
|
328
331
|
|
|
329
332
|
template <typename F0, typename F1, typename F2, typename F3, typename F4>
|
|
330
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline
|
|
331
|
-
|
|
332
|
-
TrySeq
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
333
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto TrySeq(
|
|
334
|
+
F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, DebugLocation whence = {}) {
|
|
335
|
+
return promise_detail::TrySeq<std::decay_t<F0>, std::decay_t<F1>,
|
|
336
|
+
std::decay_t<F2>, std::decay_t<F3>,
|
|
337
|
+
std::decay_t<F4>>(
|
|
338
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
339
|
+
std::forward<F3>(f3), std::forward<F4>(f4), whence);
|
|
336
340
|
}
|
|
337
341
|
|
|
338
342
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
339
343
|
typename F5>
|
|
340
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
std::
|
|
344
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto TrySeq(F0&& f0, F1&& f1, F2&& f2,
|
|
345
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
346
|
+
DebugLocation whence = {}) {
|
|
347
|
+
return promise_detail::TrySeq<std::decay_t<F0>, std::decay_t<F1>,
|
|
348
|
+
std::decay_t<F2>, std::decay_t<F3>,
|
|
349
|
+
std::decay_t<F4>, std::decay_t<F5>>(
|
|
350
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
351
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5), whence);
|
|
347
352
|
}
|
|
348
353
|
|
|
349
354
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
350
355
|
typename F5, typename F6>
|
|
351
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
return promise_detail::TrySeq<
|
|
356
|
-
std::
|
|
357
|
-
std::
|
|
356
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto TrySeq(F0&& f0, F1&& f1, F2&& f2,
|
|
357
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
358
|
+
F6&& f6,
|
|
359
|
+
DebugLocation whence = {}) {
|
|
360
|
+
return promise_detail::TrySeq<
|
|
361
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
362
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>>(
|
|
363
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
364
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
365
|
+
std::forward<F6>(f6), whence);
|
|
358
366
|
}
|
|
359
367
|
|
|
360
368
|
template <typename F0, typename F1, typename F2, typename F3, typename F4,
|
|
361
369
|
typename F5, typename F6, typename F7>
|
|
362
|
-
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
return promise_detail::TrySeq<
|
|
367
|
-
std::
|
|
368
|
-
std::
|
|
370
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto TrySeq(F0&& f0, F1&& f1, F2&& f2,
|
|
371
|
+
F3&& f3, F4&& f4, F5&& f5,
|
|
372
|
+
F6&& f6, F7&& f7,
|
|
373
|
+
DebugLocation whence = {}) {
|
|
374
|
+
return promise_detail::TrySeq<
|
|
375
|
+
std::decay_t<F0>, std::decay_t<F1>, std::decay_t<F2>, std::decay_t<F3>,
|
|
376
|
+
std::decay_t<F4>, std::decay_t<F5>, std::decay_t<F6>, std::decay_t<F7>>(
|
|
377
|
+
std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F2>(f2),
|
|
378
|
+
std::forward<F3>(f3), std::forward<F4>(f4), std::forward<F5>(f5),
|
|
379
|
+
std::forward<F6>(f6), std::forward<F7>(f7), whence);
|
|
369
380
|
}
|
|
370
381
|
|
|
371
382
|
// Try a sequence of operations of unknown length.
|
|
@@ -378,18 +389,23 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION
|
|
|
378
389
|
// return argument;
|
|
379
390
|
template <typename Iter, typename Factory, typename Argument>
|
|
380
391
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION auto TrySeqIter(Iter begin, Iter end,
|
|
381
|
-
Argument argument,
|
|
382
|
-
Factory factory) {
|
|
383
|
-
return promise_detail::TrySeqIter<Iter, Factory
|
|
384
|
-
|
|
392
|
+
Argument&& argument,
|
|
393
|
+
Factory&& factory) {
|
|
394
|
+
return promise_detail::TrySeqIter<Iter, std::decay_t<Factory>,
|
|
395
|
+
std::decay_t<Argument>>(
|
|
396
|
+
begin, end, std::forward<Factory>(factory),
|
|
397
|
+
std::forward<Argument>(argument));
|
|
385
398
|
}
|
|
386
399
|
|
|
387
400
|
template <typename Container, typename Factory, typename Argument>
|
|
388
|
-
auto TrySeqContainer(Container container, Argument argument,
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
401
|
+
auto TrySeqContainer(Container&& container, Argument&& argument,
|
|
402
|
+
Factory&& factory) {
|
|
403
|
+
using Result = typename promise_detail::TrySeqContainerResultTraits<
|
|
404
|
+
std::decay_t<Container>, std::decay_t<Factory>,
|
|
405
|
+
std::decay_t<Argument>>::Result;
|
|
406
|
+
return Result(std::forward<Container>(container),
|
|
407
|
+
std::forward<Factory>(factory),
|
|
408
|
+
std::forward<Argument>(argument));
|
|
393
409
|
}
|
|
394
410
|
|
|
395
411
|
} // namespace grpc_core
|
|
@@ -100,3 +100,10 @@ extern "C" void grpc_resource_quota_set_max_threads(
|
|
|
100
100
|
->thread_quota()
|
|
101
101
|
->SetMax(new_max_threads);
|
|
102
102
|
}
|
|
103
|
+
|
|
104
|
+
extern "C" void grpc_resource_quota_set_max_outstanding_streams(
|
|
105
|
+
grpc_resource_quota* resource_quota, int new_max_outstanding_streams) {
|
|
106
|
+
grpc_core::ResourceQuota::FromC(resource_quota)
|
|
107
|
+
->stream_quota()
|
|
108
|
+
->SetMaxOutstandingStreams(new_max_outstanding_streams);
|
|
109
|
+
}
|