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
|
@@ -309,7 +309,7 @@ struct Operator {
|
|
|
309
309
|
// Return the result of the poll.
|
|
310
310
|
// If the promise finishes, also destroy the promise data!
|
|
311
311
|
Poll<ResultOr<T>> (*promise_init)(void* promise_data, void* call_data,
|
|
312
|
-
void* channel_data, T value);
|
|
312
|
+
void* channel_data, T&& value);
|
|
313
313
|
// Poll the promise data for this filter.
|
|
314
314
|
// If the promise finishes, also destroy the promise data!
|
|
315
315
|
// Note that if the promise always finishes on the first poll, then supplying
|
|
@@ -505,18 +505,19 @@ template <typename FilterType, typename T,
|
|
|
505
505
|
struct AddOpImpl<FilterType, T,
|
|
506
506
|
void (FilterType::Call::*)(typename T::element_type&), impl> {
|
|
507
507
|
static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
|
|
508
|
-
to.Add(
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
508
|
+
to.Add(
|
|
509
|
+
0, 0,
|
|
510
|
+
Operator<T>{
|
|
511
|
+
channel_data,
|
|
512
|
+
call_offset,
|
|
513
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
514
|
+
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
515
|
+
*value);
|
|
516
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
517
|
+
},
|
|
518
|
+
nullptr,
|
|
519
|
+
nullptr,
|
|
520
|
+
});
|
|
520
521
|
}
|
|
521
522
|
};
|
|
522
523
|
|
|
@@ -527,18 +528,19 @@ struct AddOpImpl<FilterType, T,
|
|
|
527
528
|
void (FilterType::Call::*)(const typename T::element_type&),
|
|
528
529
|
impl> {
|
|
529
530
|
static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
|
|
530
|
-
to.Add(
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
531
|
+
to.Add(
|
|
532
|
+
0, 0,
|
|
533
|
+
Operator<T>{
|
|
534
|
+
channel_data,
|
|
535
|
+
call_offset,
|
|
536
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
537
|
+
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
538
|
+
*value);
|
|
539
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
540
|
+
},
|
|
541
|
+
nullptr,
|
|
542
|
+
nullptr,
|
|
543
|
+
});
|
|
542
544
|
}
|
|
543
545
|
};
|
|
544
546
|
|
|
@@ -555,10 +557,10 @@ struct AddOpImpl<
|
|
|
555
557
|
channel_data,
|
|
556
558
|
call_offset,
|
|
557
559
|
[](void*, void* call_data, void* channel_data,
|
|
558
|
-
T value) -> Poll<ResultOr<T>> {
|
|
560
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
559
561
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
560
562
|
*value, static_cast<FilterType*>(channel_data));
|
|
561
|
-
return ResultOr<T>{std::
|
|
563
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
562
564
|
},
|
|
563
565
|
nullptr,
|
|
564
566
|
nullptr,
|
|
@@ -580,10 +582,10 @@ struct AddOpImpl<FilterType, T,
|
|
|
580
582
|
channel_data,
|
|
581
583
|
call_offset,
|
|
582
584
|
[](void*, void* call_data, void* channel_data,
|
|
583
|
-
T value) -> Poll<ResultOr<T>> {
|
|
585
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
584
586
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
585
587
|
*value, static_cast<FilterType*>(channel_data));
|
|
586
|
-
return ResultOr<T>{std::
|
|
588
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
587
589
|
},
|
|
588
590
|
nullptr,
|
|
589
591
|
nullptr,
|
|
@@ -602,10 +604,11 @@ struct AddOpImpl<FilterType, T, T (FilterType::Call::*)(T, FilterType*), impl> {
|
|
|
602
604
|
channel_data,
|
|
603
605
|
call_offset,
|
|
604
606
|
[](void*, void* call_data, void* channel_data,
|
|
605
|
-
T value) -> Poll<ResultOr<T>> {
|
|
607
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
606
608
|
return ResultOr<T>{
|
|
607
609
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
608
|
-
std::
|
|
610
|
+
std::forward<T>(value),
|
|
611
|
+
static_cast<FilterType*>(channel_data)),
|
|
609
612
|
nullptr};
|
|
610
613
|
},
|
|
611
614
|
nullptr,
|
|
@@ -626,11 +629,11 @@ struct AddOpImpl<FilterType, T,
|
|
|
626
629
|
Operator<T>{
|
|
627
630
|
channel_data,
|
|
628
631
|
call_offset,
|
|
629
|
-
[](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
|
|
632
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
630
633
|
auto r =
|
|
631
634
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
632
635
|
*value);
|
|
633
|
-
if (r.ok()) return ResultOr<T>{std::
|
|
636
|
+
if (r.ok()) return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
634
637
|
return ResultOr<T>{
|
|
635
638
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
636
639
|
},
|
|
@@ -653,11 +656,11 @@ struct AddOpImpl<
|
|
|
653
656
|
Operator<T>{
|
|
654
657
|
channel_data,
|
|
655
658
|
call_offset,
|
|
656
|
-
[](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
|
|
659
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
657
660
|
auto r =
|
|
658
661
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
659
662
|
*value);
|
|
660
|
-
if (r.ok()) return ResultOr<T>{std::
|
|
663
|
+
if (r.ok()) return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
661
664
|
return ResultOr<T>{
|
|
662
665
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
663
666
|
},
|
|
@@ -682,11 +685,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
682
685
|
channel_data,
|
|
683
686
|
call_offset,
|
|
684
687
|
[](void*, void* call_data, void* channel_data,
|
|
685
|
-
T value) -> Poll<ResultOr<T>> {
|
|
688
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
686
689
|
auto r =
|
|
687
690
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
688
691
|
*value, static_cast<FilterType*>(channel_data));
|
|
689
|
-
if (IsStatusOk(r))
|
|
692
|
+
if (IsStatusOk(r)) {
|
|
693
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
694
|
+
}
|
|
690
695
|
return ResultOr<T>{
|
|
691
696
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
692
697
|
},
|
|
@@ -711,11 +716,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
711
716
|
channel_data,
|
|
712
717
|
call_offset,
|
|
713
718
|
[](void*, void* call_data, void* channel_data,
|
|
714
|
-
T value) -> Poll<ResultOr<T>> {
|
|
719
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
715
720
|
auto r =
|
|
716
721
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
717
722
|
*value, static_cast<FilterType*>(channel_data));
|
|
718
|
-
if (IsStatusOk(r))
|
|
723
|
+
if (IsStatusOk(r)) {
|
|
724
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
725
|
+
}
|
|
719
726
|
return ResultOr<T>{
|
|
720
727
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
721
728
|
},
|
|
@@ -738,10 +745,11 @@ struct AddOpImpl<FilterType, T,
|
|
|
738
745
|
channel_data,
|
|
739
746
|
call_offset,
|
|
740
747
|
[](void*, void* call_data, void* channel_data,
|
|
741
|
-
T value) -> Poll<ResultOr<T>> {
|
|
748
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
742
749
|
auto r =
|
|
743
750
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
744
|
-
std::
|
|
751
|
+
std::forward<T>(value),
|
|
752
|
+
static_cast<FilterType*>(channel_data));
|
|
745
753
|
if (IsStatusOk(r)) return ResultOr<T>{std::move(*r), nullptr};
|
|
746
754
|
return ResultOr<T>{
|
|
747
755
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
@@ -766,11 +774,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
766
774
|
Operator<T>{
|
|
767
775
|
channel_data,
|
|
768
776
|
call_offset,
|
|
769
|
-
[](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
|
|
777
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
770
778
|
auto r =
|
|
771
779
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
772
780
|
*value);
|
|
773
|
-
if (r == nullptr)
|
|
781
|
+
if (r == nullptr) {
|
|
782
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
783
|
+
}
|
|
774
784
|
return ResultOr<T>{
|
|
775
785
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
776
786
|
},
|
|
@@ -794,11 +804,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
794
804
|
Operator<T>{
|
|
795
805
|
channel_data,
|
|
796
806
|
call_offset,
|
|
797
|
-
[](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
|
|
807
|
+
[](void*, void* call_data, void*, T&& value) -> Poll<ResultOr<T>> {
|
|
798
808
|
auto r =
|
|
799
809
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
800
810
|
*value);
|
|
801
|
-
if (r == nullptr)
|
|
811
|
+
if (r == nullptr) {
|
|
812
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
813
|
+
}
|
|
802
814
|
return ResultOr<T>{
|
|
803
815
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
804
816
|
},
|
|
@@ -823,11 +835,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
823
835
|
channel_data,
|
|
824
836
|
call_offset,
|
|
825
837
|
[](void*, void* call_data, void* channel_data,
|
|
826
|
-
T value) -> Poll<ResultOr<T>> {
|
|
838
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
827
839
|
auto r =
|
|
828
840
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
829
841
|
*value, static_cast<FilterType*>(channel_data));
|
|
830
|
-
if (r == nullptr)
|
|
842
|
+
if (r == nullptr) {
|
|
843
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
844
|
+
}
|
|
831
845
|
return ResultOr<T>{
|
|
832
846
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
833
847
|
},
|
|
@@ -852,11 +866,13 @@ struct AddOpImpl<FilterType, T,
|
|
|
852
866
|
channel_data,
|
|
853
867
|
call_offset,
|
|
854
868
|
[](void*, void* call_data, void* channel_data,
|
|
855
|
-
T value) -> Poll<ResultOr<T>> {
|
|
869
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
856
870
|
auto r =
|
|
857
871
|
(static_cast<typename FilterType::Call*>(call_data)->*impl)(
|
|
858
872
|
*value, static_cast<FilterType*>(channel_data));
|
|
859
|
-
if (r == nullptr)
|
|
873
|
+
if (r == nullptr) {
|
|
874
|
+
return ResultOr<T>{std::forward<T>(value), nullptr};
|
|
875
|
+
}
|
|
860
876
|
return ResultOr<T>{
|
|
861
877
|
nullptr, StatusCast<ServerMetadataHandle>(std::move(r))};
|
|
862
878
|
},
|
|
@@ -875,8 +891,9 @@ struct AddOpImpl<
|
|
|
875
891
|
static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
|
|
876
892
|
class Promise {
|
|
877
893
|
public:
|
|
878
|
-
Promise(T value, typename FilterType::Call* call_data, FilterType*)
|
|
879
|
-
: value_(std::
|
|
894
|
+
Promise(T&& value, typename FilterType::Call* call_data, FilterType*)
|
|
895
|
+
: value_(std::forward<T>(value)),
|
|
896
|
+
impl_((call_data->*impl)(*value_)) {}
|
|
880
897
|
|
|
881
898
|
Poll<ResultOr<T>> PollOnce() {
|
|
882
899
|
auto p = impl_();
|
|
@@ -899,9 +916,9 @@ struct AddOpImpl<
|
|
|
899
916
|
channel_data,
|
|
900
917
|
call_offset,
|
|
901
918
|
[](void* promise_data, void* call_data, void* channel_data,
|
|
902
|
-
T value) -> Poll<ResultOr<T>> {
|
|
919
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
903
920
|
auto* promise = new (promise_data)
|
|
904
|
-
Promise(std::
|
|
921
|
+
Promise(std::forward<T>(value),
|
|
905
922
|
static_cast<typename FilterType::Call*>(call_data),
|
|
906
923
|
static_cast<FilterType*>(channel_data));
|
|
907
924
|
return promise->PollOnce();
|
|
@@ -927,9 +944,9 @@ struct AddOpImpl<
|
|
|
927
944
|
static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
|
|
928
945
|
class Promise {
|
|
929
946
|
public:
|
|
930
|
-
Promise(T value, typename FilterType::Call* call_data,
|
|
947
|
+
Promise(T&& value, typename FilterType::Call* call_data,
|
|
931
948
|
FilterType* channel_data)
|
|
932
|
-
: value_(std::
|
|
949
|
+
: value_(std::forward<T>(value)),
|
|
933
950
|
impl_((call_data->*impl)(*value_, channel_data)) {}
|
|
934
951
|
|
|
935
952
|
Poll<ResultOr<T>> PollOnce() {
|
|
@@ -953,9 +970,9 @@ struct AddOpImpl<
|
|
|
953
970
|
channel_data,
|
|
954
971
|
call_offset,
|
|
955
972
|
[](void* promise_data, void* call_data, void* channel_data,
|
|
956
|
-
T value) -> Poll<ResultOr<T>> {
|
|
973
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
957
974
|
auto* promise = new (promise_data)
|
|
958
|
-
Promise(std::
|
|
975
|
+
Promise(std::forward<T>(value),
|
|
959
976
|
static_cast<typename FilterType::Call*>(call_data),
|
|
960
977
|
static_cast<FilterType*>(channel_data));
|
|
961
978
|
return promise->PollOnce();
|
|
@@ -1004,9 +1021,9 @@ struct AddOpImpl<FilterType, T, R (FilterType::Call::*)(T, FilterType*), impl,
|
|
|
1004
1021
|
#else
|
|
1005
1022
|
class Promise {
|
|
1006
1023
|
public:
|
|
1007
|
-
Promise(T value, typename FilterType::Call* call_data,
|
|
1024
|
+
Promise(T&& value, typename FilterType::Call* call_data,
|
|
1008
1025
|
FilterType* channel_data)
|
|
1009
|
-
: impl_((call_data->*impl)(std::
|
|
1026
|
+
: impl_((call_data->*impl)(std::forward<T>(value), channel_data)) {}
|
|
1010
1027
|
|
|
1011
1028
|
Poll<ResultOr<T>> PollOnce() {
|
|
1012
1029
|
auto p = impl_();
|
|
@@ -1027,9 +1044,9 @@ struct AddOpImpl<FilterType, T, R (FilterType::Call::*)(T, FilterType*), impl,
|
|
|
1027
1044
|
channel_data,
|
|
1028
1045
|
call_offset,
|
|
1029
1046
|
[](void* promise_data, void* call_data, void* channel_data,
|
|
1030
|
-
T value) -> Poll<ResultOr<T>> {
|
|
1047
|
+
T&& value) -> Poll<ResultOr<T>> {
|
|
1031
1048
|
auto* promise = new (promise_data)
|
|
1032
|
-
Promise(std::
|
|
1049
|
+
Promise(std::forward<T>(value),
|
|
1033
1050
|
static_cast<typename FilterType::Call*>(call_data),
|
|
1034
1051
|
static_cast<FilterType*>(channel_data));
|
|
1035
1052
|
return promise->PollOnce();
|
|
@@ -1437,7 +1454,7 @@ class OperationExecutor {
|
|
|
1437
1454
|
// Start executing a layout. May allocate space to store the relevant promise.
|
|
1438
1455
|
// Returns the result of the first poll.
|
|
1439
1456
|
// If the promise finishes, also destroy the promise data.
|
|
1440
|
-
Poll<ResultOr<T>> Start(const Layout<T>* layout, T input, void* call_data);
|
|
1457
|
+
Poll<ResultOr<T>> Start(const Layout<T>* layout, T&& input, void* call_data);
|
|
1441
1458
|
// Continue executing a layout. Returns the result of the next poll.
|
|
1442
1459
|
// If the promise finishes, also destroy the promise data.
|
|
1443
1460
|
Poll<ResultOr<T>> Step(void* call_data);
|
|
@@ -1450,7 +1467,7 @@ class OperationExecutor {
|
|
|
1450
1467
|
// If this op finishes immediately then we iterative move to the next step.
|
|
1451
1468
|
// If we reach the end up the ops, we return the overall poll result,
|
|
1452
1469
|
// otherwise we return Pending.
|
|
1453
|
-
Poll<ResultOr<T>> InitStep(T input, void* call_data);
|
|
1470
|
+
Poll<ResultOr<T>> InitStep(T&& input, void* call_data);
|
|
1454
1471
|
// Continue polling on the current step of the layout.
|
|
1455
1472
|
// Called on the next poll after InitStep returns pending.
|
|
1456
1473
|
// If the promise is still pending, returns this.
|
|
@@ -1474,31 +1491,32 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline OperationExecutor<
|
|
|
1474
1491
|
|
|
1475
1492
|
template <typename T>
|
|
1476
1493
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
|
|
1477
|
-
OperationExecutor<T>::Start(const Layout<T>* layout, T input,
|
|
1494
|
+
OperationExecutor<T>::Start(const Layout<T>* layout, T&& input,
|
|
1495
|
+
void* call_data) {
|
|
1478
1496
|
ops_ = layout->ops.data();
|
|
1479
1497
|
end_ops_ = ops_ + layout->ops.size();
|
|
1480
1498
|
if (layout->promise_size == 0) {
|
|
1481
1499
|
// No call state ==> instantaneously ready
|
|
1482
|
-
auto r = InitStep(std::
|
|
1500
|
+
auto r = InitStep(std::forward<T>(input), call_data);
|
|
1483
1501
|
GRPC_CHECK(r.ready());
|
|
1484
1502
|
return r;
|
|
1485
1503
|
}
|
|
1486
1504
|
promise_data_ =
|
|
1487
1505
|
gpr_malloc_aligned(layout->promise_size, layout->promise_alignment);
|
|
1488
|
-
return InitStep(std::
|
|
1506
|
+
return InitStep(std::forward<T>(input), call_data);
|
|
1489
1507
|
}
|
|
1490
1508
|
|
|
1491
1509
|
template <typename T>
|
|
1492
1510
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
|
|
1493
|
-
OperationExecutor<T>::InitStep(T input, void* call_data) {
|
|
1511
|
+
OperationExecutor<T>::InitStep(T&& input, void* call_data) {
|
|
1494
1512
|
GRPC_CHECK(input != nullptr);
|
|
1495
1513
|
while (true) {
|
|
1496
1514
|
if (ops_ == end_ops_) {
|
|
1497
|
-
return ResultOr<T>{std::
|
|
1515
|
+
return ResultOr<T>{std::forward<T>(input), nullptr};
|
|
1498
1516
|
}
|
|
1499
1517
|
auto p =
|
|
1500
1518
|
ops_->promise_init(promise_data_, Offset(call_data, ops_->call_offset),
|
|
1501
|
-
ops_->channel_data, std::
|
|
1519
|
+
ops_->channel_data, std::forward<T>(input));
|
|
1502
1520
|
if (auto* r = p.value_if_ready()) {
|
|
1503
1521
|
if (r->ok == nullptr) {
|
|
1504
1522
|
ops_ = end_ops_;
|
|
@@ -1556,7 +1574,8 @@ class ServerTrailingMetadataInterceptor {
|
|
|
1556
1574
|
}
|
|
1557
1575
|
};
|
|
1558
1576
|
|
|
1559
|
-
explicit ServerTrailingMetadataInterceptor(Fn fn)
|
|
1577
|
+
explicit ServerTrailingMetadataInterceptor(Fn&& fn)
|
|
1578
|
+
: fn_(std::forward<Fn>(fn)) {}
|
|
1560
1579
|
|
|
1561
1580
|
private:
|
|
1562
1581
|
GPR_NO_UNIQUE_ADDRESS Fn fn_;
|
|
@@ -1583,7 +1602,8 @@ class ClientInitialMetadataInterceptor {
|
|
|
1583
1602
|
}
|
|
1584
1603
|
};
|
|
1585
1604
|
|
|
1586
|
-
explicit ClientInitialMetadataInterceptor(Fn fn)
|
|
1605
|
+
explicit ClientInitialMetadataInterceptor(Fn&& fn)
|
|
1606
|
+
: fn_(std::forward<Fn>(fn)) {}
|
|
1587
1607
|
|
|
1588
1608
|
private:
|
|
1589
1609
|
GPR_NO_UNIQUE_ADDRESS Fn fn_;
|
|
@@ -1683,9 +1703,9 @@ struct TrySeqTraitsWithSfinae<filters_detail::NextMessage<on_progress>> {
|
|
|
1683
1703
|
}
|
|
1684
1704
|
template <typename Result, typename RunNext>
|
|
1685
1705
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
|
|
1686
|
-
CheckResultAndRunNext(WrappedType prior, RunNext run_next) {
|
|
1706
|
+
CheckResultAndRunNext(WrappedType&& prior, RunNext run_next) {
|
|
1687
1707
|
if (!prior.ok()) return WrappedType(prior.status());
|
|
1688
|
-
return run_next(std::
|
|
1708
|
+
return run_next(std::forward<WrappedType>(prior));
|
|
1689
1709
|
}
|
|
1690
1710
|
};
|
|
1691
1711
|
} // namespace promise_detail
|
|
@@ -1715,7 +1735,8 @@ class CallFilters {
|
|
|
1715
1735
|
friend class CallFilters;
|
|
1716
1736
|
friend class StackBuilder;
|
|
1717
1737
|
friend class StackTestSpouse;
|
|
1718
|
-
explicit Stack(filters_detail::StackData data)
|
|
1738
|
+
explicit Stack(filters_detail::StackData&& data)
|
|
1739
|
+
: data_(std::forward<filters_detail::StackData>(data)) {}
|
|
1719
1740
|
const filters_detail::StackData data_;
|
|
1720
1741
|
};
|
|
1721
1742
|
|
|
@@ -1754,17 +1775,19 @@ class CallFilters {
|
|
|
1754
1775
|
}
|
|
1755
1776
|
|
|
1756
1777
|
template <typename Fn>
|
|
1757
|
-
void AddOnClientInitialMetadata(Fn fn) {
|
|
1778
|
+
void AddOnClientInitialMetadata(Fn&& fn) {
|
|
1758
1779
|
auto filter = std::make_unique<
|
|
1759
|
-
filters_detail::ClientInitialMetadataInterceptor<
|
|
1780
|
+
filters_detail::ClientInitialMetadataInterceptor<std::decay_t<Fn>>>(
|
|
1781
|
+
std::forward<Fn>(fn));
|
|
1760
1782
|
Add(filter.get());
|
|
1761
1783
|
AddOwnedObject(std::move(filter));
|
|
1762
1784
|
}
|
|
1763
1785
|
|
|
1764
1786
|
template <typename Fn>
|
|
1765
|
-
void AddOnServerTrailingMetadata(Fn fn) {
|
|
1787
|
+
void AddOnServerTrailingMetadata(Fn&& fn) {
|
|
1766
1788
|
auto filter = std::make_unique<
|
|
1767
|
-
filters_detail::ServerTrailingMetadataInterceptor<
|
|
1789
|
+
filters_detail::ServerTrailingMetadataInterceptor<std::decay_t<Fn>>>(
|
|
1790
|
+
std::forward<Fn>(fn));
|
|
1768
1791
|
Add(filter.get());
|
|
1769
1792
|
AddOwnedObject(std::move(filter));
|
|
1770
1793
|
}
|