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
|
@@ -73,6 +73,7 @@ size_t EncodedSizeOfKey(Key, const typename Key::ValueType& value) {
|
|
|
73
73
|
// to name this in MetadataMap, but ultimately once the transition is done we
|
|
74
74
|
// should not need to.
|
|
75
75
|
struct GrpcTimeoutMetadata {
|
|
76
|
+
static constexpr bool kPublishToApp = false;
|
|
76
77
|
static constexpr bool kRepeatable = false;
|
|
77
78
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
78
79
|
using ValueType = Timestamp;
|
|
@@ -90,6 +91,7 @@ struct GrpcTimeoutMetadata {
|
|
|
90
91
|
|
|
91
92
|
// TE metadata trait.
|
|
92
93
|
struct TeMetadata {
|
|
94
|
+
static constexpr bool kPublishToApp = false;
|
|
93
95
|
static constexpr bool kRepeatable = false;
|
|
94
96
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
95
97
|
// HTTP2 says that TE can either be empty or "trailers".
|
|
@@ -120,6 +122,7 @@ inline size_t EncodedSizeOfKey(TeMetadata, TeMetadata::ValueType x) {
|
|
|
120
122
|
|
|
121
123
|
// content-type metadata trait.
|
|
122
124
|
struct ContentTypeMetadata {
|
|
125
|
+
static constexpr bool kPublishToApp = false;
|
|
123
126
|
static constexpr bool kRepeatable = false;
|
|
124
127
|
static constexpr bool kTransferOnTrailersOnly = true;
|
|
125
128
|
// gRPC says that content-type can be application/grpc[;something]
|
|
@@ -149,6 +152,7 @@ struct ContentTypeMetadata {
|
|
|
149
152
|
|
|
150
153
|
// scheme metadata trait.
|
|
151
154
|
struct HttpSchemeMetadata {
|
|
155
|
+
static constexpr bool kPublishToApp = false;
|
|
152
156
|
static constexpr bool kRepeatable = false;
|
|
153
157
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
154
158
|
enum ValueType : uint8_t {
|
|
@@ -179,6 +183,7 @@ size_t EncodedSizeOfKey(HttpSchemeMetadata, HttpSchemeMetadata::ValueType x);
|
|
|
179
183
|
|
|
180
184
|
// method metadata trait.
|
|
181
185
|
struct HttpMethodMetadata {
|
|
186
|
+
static constexpr bool kPublishToApp = false;
|
|
182
187
|
static constexpr bool kRepeatable = false;
|
|
183
188
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
184
189
|
enum ValueType : uint8_t {
|
|
@@ -228,6 +233,7 @@ struct CompressionAlgorithmBasedMetadata {
|
|
|
228
233
|
|
|
229
234
|
// grpc-encoding metadata trait.
|
|
230
235
|
struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata {
|
|
236
|
+
static constexpr bool kPublishToApp = false;
|
|
231
237
|
static constexpr bool kRepeatable = false;
|
|
232
238
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
233
239
|
using CompressionTraits =
|
|
@@ -237,6 +243,7 @@ struct GrpcEncodingMetadata : public CompressionAlgorithmBasedMetadata {
|
|
|
237
243
|
|
|
238
244
|
// grpc-internal-encoding-request metadata trait.
|
|
239
245
|
struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata {
|
|
246
|
+
static constexpr bool kPublishToApp = false;
|
|
240
247
|
static constexpr bool kRepeatable = false;
|
|
241
248
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
242
249
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -245,6 +252,7 @@ struct GrpcInternalEncodingRequest : public CompressionAlgorithmBasedMetadata {
|
|
|
245
252
|
|
|
246
253
|
// grpc-accept-encoding metadata trait.
|
|
247
254
|
struct GrpcAcceptEncodingMetadata {
|
|
255
|
+
static constexpr bool kPublishToApp = false;
|
|
248
256
|
static constexpr bool kRepeatable = false;
|
|
249
257
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
250
258
|
static absl::string_view key() { return "grpc-accept-encoding"; }
|
|
@@ -264,6 +272,7 @@ struct GrpcAcceptEncodingMetadata {
|
|
|
264
272
|
|
|
265
273
|
// user-agent metadata trait.
|
|
266
274
|
struct UserAgentMetadata : public SimpleSliceBasedMetadata {
|
|
275
|
+
static constexpr bool kPublishToApp = true;
|
|
267
276
|
static constexpr bool kRepeatable = false;
|
|
268
277
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
269
278
|
using CompressionTraits = StableValueCompressor;
|
|
@@ -272,6 +281,7 @@ struct UserAgentMetadata : public SimpleSliceBasedMetadata {
|
|
|
272
281
|
|
|
273
282
|
// grpc-message metadata trait.
|
|
274
283
|
struct GrpcMessageMetadata : public SimpleSliceBasedMetadata {
|
|
284
|
+
static constexpr bool kPublishToApp = false;
|
|
275
285
|
static constexpr bool kRepeatable = false;
|
|
276
286
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
277
287
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -280,6 +290,7 @@ struct GrpcMessageMetadata : public SimpleSliceBasedMetadata {
|
|
|
280
290
|
|
|
281
291
|
// host metadata trait.
|
|
282
292
|
struct HostMetadata : public SimpleSliceBasedMetadata {
|
|
293
|
+
static constexpr bool kPublishToApp = true;
|
|
283
294
|
static constexpr bool kRepeatable = false;
|
|
284
295
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
285
296
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -288,6 +299,7 @@ struct HostMetadata : public SimpleSliceBasedMetadata {
|
|
|
288
299
|
|
|
289
300
|
// endpoint-load-metrics-bin metadata trait.
|
|
290
301
|
struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
|
|
302
|
+
static constexpr bool kPublishToApp = false;
|
|
291
303
|
static constexpr bool kRepeatable = false;
|
|
292
304
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
293
305
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -296,6 +308,7 @@ struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
|
|
|
296
308
|
|
|
297
309
|
// grpc-server-stats-bin metadata trait.
|
|
298
310
|
struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata {
|
|
311
|
+
static constexpr bool kPublishToApp = false;
|
|
299
312
|
static constexpr bool kRepeatable = false;
|
|
300
313
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
301
314
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -304,6 +317,7 @@ struct GrpcServerStatsBinMetadata : public SimpleSliceBasedMetadata {
|
|
|
304
317
|
|
|
305
318
|
// grpc-trace-bin metadata trait.
|
|
306
319
|
struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata {
|
|
320
|
+
static constexpr bool kPublishToApp = false;
|
|
307
321
|
static constexpr bool kRepeatable = false;
|
|
308
322
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
309
323
|
using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
|
|
@@ -312,6 +326,7 @@ struct GrpcTraceBinMetadata : public SimpleSliceBasedMetadata {
|
|
|
312
326
|
|
|
313
327
|
// grpc-tags-bin metadata trait.
|
|
314
328
|
struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata {
|
|
329
|
+
static constexpr bool kPublishToApp = false;
|
|
315
330
|
static constexpr bool kRepeatable = false;
|
|
316
331
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
317
332
|
using CompressionTraits = FrequentKeyWithNoValueCompressionCompressor;
|
|
@@ -320,14 +335,34 @@ struct GrpcTagsBinMetadata : public SimpleSliceBasedMetadata {
|
|
|
320
335
|
|
|
321
336
|
// XEnvoyPeerMetadata
|
|
322
337
|
struct XEnvoyPeerMetadata : public SimpleSliceBasedMetadata {
|
|
338
|
+
static constexpr bool kPublishToApp = false;
|
|
323
339
|
static constexpr bool kRepeatable = false;
|
|
324
340
|
static constexpr bool kTransferOnTrailersOnly = true;
|
|
325
341
|
using CompressionTraits = StableValueCompressor;
|
|
326
342
|
static absl::string_view key() { return "x-envoy-peer-metadata"; }
|
|
327
343
|
};
|
|
328
344
|
|
|
345
|
+
// x-forwarded-for metadata trait for HTTP connect.
|
|
346
|
+
struct XForwardedForMetadata : public SimpleSliceBasedMetadata {
|
|
347
|
+
static constexpr bool kPublishToApp = true;
|
|
348
|
+
static constexpr bool kRepeatable = false;
|
|
349
|
+
static constexpr bool kTransferOnTrailersOnly = false;
|
|
350
|
+
using CompressionTraits = StableValueCompressor;
|
|
351
|
+
static absl::string_view key() { return "x-forwarded-for"; }
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
// x-forwarded-host metadata trait for HTTP connect.
|
|
355
|
+
struct XForwardedHostMetadata : public SimpleSliceBasedMetadata {
|
|
356
|
+
static constexpr bool kPublishToApp = true;
|
|
357
|
+
static constexpr bool kRepeatable = false;
|
|
358
|
+
static constexpr bool kTransferOnTrailersOnly = false;
|
|
359
|
+
using CompressionTraits = StableValueCompressor;
|
|
360
|
+
static absl::string_view key() { return "x-forwarded-host"; }
|
|
361
|
+
};
|
|
362
|
+
|
|
329
363
|
// :authority metadata trait.
|
|
330
364
|
struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata {
|
|
365
|
+
static constexpr bool kPublishToApp = false;
|
|
331
366
|
static constexpr bool kRepeatable = false;
|
|
332
367
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
333
368
|
using CompressionTraits = SmallSetOfValuesCompressor;
|
|
@@ -336,6 +371,7 @@ struct HttpAuthorityMetadata : public SimpleSliceBasedMetadata {
|
|
|
336
371
|
|
|
337
372
|
// :path metadata trait.
|
|
338
373
|
struct HttpPathMetadata : public SimpleSliceBasedMetadata {
|
|
374
|
+
static constexpr bool kPublishToApp = false;
|
|
339
375
|
static constexpr bool kRepeatable = false;
|
|
340
376
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
341
377
|
using CompressionTraits = SmallSetOfValuesCompressor;
|
|
@@ -415,6 +451,7 @@ struct GrpcStatusMetadata {
|
|
|
415
451
|
}
|
|
416
452
|
}
|
|
417
453
|
static auto DisplayMemento(MementoType x) { return DisplayValue(x); }
|
|
454
|
+
static constexpr bool kPublishToApp = false;
|
|
418
455
|
static constexpr bool kRepeatable = false;
|
|
419
456
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
420
457
|
using CompressionTraits = SmallIntegralValuesCompressor<16>;
|
|
@@ -441,6 +478,7 @@ struct GrpcStatusMetadata {
|
|
|
441
478
|
// grpc-previous-rpc-attempts metadata trait.
|
|
442
479
|
struct GrpcPreviousRpcAttemptsMetadata
|
|
443
480
|
: public SimpleIntBasedMetadata<uint32_t, 0> {
|
|
481
|
+
static constexpr bool kPublishToApp = true;
|
|
444
482
|
static constexpr bool kRepeatable = false;
|
|
445
483
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
446
484
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -449,6 +487,7 @@ struct GrpcPreviousRpcAttemptsMetadata
|
|
|
449
487
|
|
|
450
488
|
// grpc-retry-pushback-ms metadata trait.
|
|
451
489
|
struct GrpcRetryPushbackMsMetadata {
|
|
490
|
+
static constexpr bool kPublishToApp = true;
|
|
452
491
|
static constexpr bool kRepeatable = false;
|
|
453
492
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
454
493
|
static absl::string_view key() { return "grpc-retry-pushback-ms"; }
|
|
@@ -467,6 +506,7 @@ struct GrpcRetryPushbackMsMetadata {
|
|
|
467
506
|
// :status metadata trait.
|
|
468
507
|
// TODO(ctiller): consider moving to uint16_t
|
|
469
508
|
struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
|
|
509
|
+
static constexpr bool kPublishToApp = false;
|
|
470
510
|
static constexpr bool kRepeatable = false;
|
|
471
511
|
static constexpr bool kTransferOnTrailersOnly = true;
|
|
472
512
|
using CompressionTraits = HttpStatusCompressor;
|
|
@@ -478,6 +518,7 @@ struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
|
|
|
478
518
|
class GrpcLbClientStats;
|
|
479
519
|
|
|
480
520
|
struct GrpcLbClientStatsMetadata {
|
|
521
|
+
static constexpr bool kPublishToApp = false;
|
|
481
522
|
static constexpr bool kRepeatable = false;
|
|
482
523
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
483
524
|
static absl::string_view key() { return "grpclb_client_stats"; }
|
|
@@ -503,6 +544,7 @@ inline size_t EncodedSizeOfKey(GrpcLbClientStatsMetadata,
|
|
|
503
544
|
|
|
504
545
|
// lb-token metadata
|
|
505
546
|
struct LbTokenMetadata : public SimpleSliceBasedMetadata {
|
|
547
|
+
static constexpr bool kPublishToApp = true;
|
|
506
548
|
static constexpr bool kRepeatable = false;
|
|
507
549
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
508
550
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -511,6 +553,7 @@ struct LbTokenMetadata : public SimpleSliceBasedMetadata {
|
|
|
511
553
|
|
|
512
554
|
// lb-cost-bin metadata
|
|
513
555
|
struct LbCostBinMetadata {
|
|
556
|
+
static constexpr bool kPublishToApp = false;
|
|
514
557
|
static constexpr bool kRepeatable = true;
|
|
515
558
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
516
559
|
static absl::string_view key() { return "lb-cost-bin"; }
|
|
@@ -531,6 +574,7 @@ struct LbCostBinMetadata {
|
|
|
531
574
|
|
|
532
575
|
// traceparent metadata
|
|
533
576
|
struct W3CTraceParentMetadata : public SimpleSliceBasedMetadata {
|
|
577
|
+
static constexpr bool kPublishToApp = true;
|
|
534
578
|
static constexpr bool kRepeatable = false;
|
|
535
579
|
static constexpr bool kTransferOnTrailersOnly = false;
|
|
536
580
|
using CompressionTraits = NoCompressionCompressor;
|
|
@@ -1278,6 +1322,8 @@ MetadataValueAsSlice(typename Which::ValueType value) {
|
|
|
1278
1322
|
// Encodable traits have the following signature:
|
|
1279
1323
|
// // Traits for the "grpc-xyz" metadata field:
|
|
1280
1324
|
// struct GrpcXyzMetadata {
|
|
1325
|
+
// // Should this metadata be published to the application?
|
|
1326
|
+
// static constexpr bool kPublishToApp = ...;
|
|
1281
1327
|
// // Can this metadata field be repeated?
|
|
1282
1328
|
// static constexpr bool kRepeatable = ...;
|
|
1283
1329
|
// // Should this metadata be transferred from server headers to trailers on
|
|
@@ -1652,7 +1698,8 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
|
|
|
1652
1698
|
grpc_core::GrpcServerStatsBinMetadata, grpc_core::GrpcTraceBinMetadata,
|
|
1653
1699
|
grpc_core::GrpcTagsBinMetadata, grpc_core::GrpcLbClientStatsMetadata,
|
|
1654
1700
|
grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata,
|
|
1655
|
-
grpc_core::XEnvoyPeerMetadata, grpc_core::
|
|
1701
|
+
grpc_core::XEnvoyPeerMetadata, grpc_core::XForwardedForMetadata,
|
|
1702
|
+
grpc_core::XForwardedHostMetadata, grpc_core::W3CTraceParentMetadata,
|
|
1656
1703
|
// Non-encodable things
|
|
1657
1704
|
grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
|
|
1658
1705
|
grpc_core::GrpcStatusContext, grpc_core::GrpcStatusFromWire,
|
|
@@ -17,13 +17,40 @@
|
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
|
18
18
|
|
|
19
19
|
#include <cstddef>
|
|
20
|
+
#include <cstdint>
|
|
20
21
|
#include <string>
|
|
21
22
|
|
|
22
23
|
#include "src/core/lib/slice/slice.h"
|
|
24
|
+
#include "absl/functional/function_ref.h"
|
|
23
25
|
#include "absl/strings/str_cat.h"
|
|
26
|
+
#include "absl/strings/string_view.h"
|
|
24
27
|
|
|
25
28
|
namespace grpc_core {
|
|
26
29
|
|
|
30
|
+
namespace {
|
|
31
|
+
class KeyValueEmitEncoder {
|
|
32
|
+
public:
|
|
33
|
+
explicit KeyValueEmitEncoder(
|
|
34
|
+
absl::FunctionRef<void(absl::string_view,
|
|
35
|
+
MetadataSizesAnnotation::ValueType)>
|
|
36
|
+
f)
|
|
37
|
+
: f_(f) {}
|
|
38
|
+
|
|
39
|
+
void Encode(const Slice& key, const Slice& value) {
|
|
40
|
+
f_(key.as_string_view(), static_cast<int64_t>(value.size()));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
template <typename Key, typename Value>
|
|
44
|
+
void Encode(Key, const Value& value) {
|
|
45
|
+
f_(Key::key(), static_cast<int64_t>(EncodedSizeOfKey(Key(), value)));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private:
|
|
49
|
+
absl::FunctionRef<void(absl::string_view, MetadataSizesAnnotation::ValueType)>
|
|
50
|
+
f_;
|
|
51
|
+
};
|
|
52
|
+
} // namespace
|
|
53
|
+
|
|
27
54
|
class MetadataSizesAnnotation::MetadataSizeEncoder {
|
|
28
55
|
public:
|
|
29
56
|
explicit MetadataSizeEncoder(std::string& summary, uint64_t soft_limit,
|
|
@@ -70,4 +97,12 @@ std::string MetadataSizesAnnotation::ToString() const {
|
|
|
70
97
|
return metadata_annotation;
|
|
71
98
|
}
|
|
72
99
|
|
|
100
|
+
void MetadataSizesAnnotation::ForEachKeyValue(
|
|
101
|
+
absl::FunctionRef<void(absl::string_view, ValueType)> f) const {
|
|
102
|
+
f("soft_limit", static_cast<int64_t>(soft_limit_));
|
|
103
|
+
f("hard_limit", static_cast<int64_t>(hard_limit_));
|
|
104
|
+
KeyValueEmitEncoder encoder(f);
|
|
105
|
+
metadata_buffer_->Encode(&encoder);
|
|
106
|
+
}
|
|
107
|
+
|
|
73
108
|
} // namespace grpc_core
|
|
@@ -25,7 +25,8 @@ namespace grpc_core {
|
|
|
25
25
|
|
|
26
26
|
// Models grpc metadata (as per the rules for MetadataMap) for a metadata
|
|
27
27
|
// element that consists of a Slice.
|
|
28
|
-
// Use by deriving from this class and adding `kRepeatable` and
|
|
28
|
+
// Use by deriving from this class and adding `kPublishToApp`, `kRepeatable` and
|
|
29
|
+
// `key()`.
|
|
29
30
|
struct SimpleSliceBasedMetadata {
|
|
30
31
|
using ValueType = Slice;
|
|
31
32
|
using MementoType = Slice;
|
|
@@ -63,14 +63,17 @@ namespace channelz {
|
|
|
63
63
|
void DataSinkImplementation::AddData(absl::string_view name,
|
|
64
64
|
std::unique_ptr<Data> data) {
|
|
65
65
|
MutexLock lock(&mu_);
|
|
66
|
-
additional_info_.
|
|
66
|
+
additional_info_.emplace_back(Element{std::string(name), std::move(data)});
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
Json::
|
|
69
|
+
Json::Array DataSinkImplementation::Finalize(bool) {
|
|
70
70
|
MutexLock lock(&mu_);
|
|
71
|
-
Json::
|
|
71
|
+
Json::Array out;
|
|
72
72
|
for (auto& [name, additional_info] : additional_info_) {
|
|
73
|
-
|
|
73
|
+
Json::Object obj;
|
|
74
|
+
obj["name"] = Json::FromString(name);
|
|
75
|
+
obj["value"] = Json::FromObject(additional_info->ToJson());
|
|
76
|
+
out.push_back(Json::FromObject(std::move(obj)));
|
|
74
77
|
}
|
|
75
78
|
return out;
|
|
76
79
|
}
|
|
@@ -119,10 +122,10 @@ std::string BaseNode::RenderJsonString() {
|
|
|
119
122
|
void BaseNode::PopulateJsonFromDataSources(Json::Object& json) {
|
|
120
123
|
auto info = AdditionalInfo();
|
|
121
124
|
if (info.empty()) return;
|
|
122
|
-
json["additionalInfo"] = Json::
|
|
125
|
+
json["additionalInfo"] = Json::FromArray(std::move(info));
|
|
123
126
|
}
|
|
124
127
|
|
|
125
|
-
Json::
|
|
128
|
+
Json::Array BaseNode::AdditionalInfo() {
|
|
126
129
|
auto done = std::make_shared<Notification>();
|
|
127
130
|
auto sink_impl = std::make_shared<DataSinkImplementation>();
|
|
128
131
|
{
|
|
@@ -253,7 +253,7 @@ class BaseNode : public DualRefCounted<BaseNode> {
|
|
|
253
253
|
std::shared_ptr<grpc_event_engine::experimental::EventEngine>
|
|
254
254
|
event_engine,
|
|
255
255
|
ZTrace::Callback callback);
|
|
256
|
-
Json::
|
|
256
|
+
Json::Array AdditionalInfo();
|
|
257
257
|
|
|
258
258
|
const ChannelTrace& trace() const { return trace_; }
|
|
259
259
|
template <typename... Args>
|
|
@@ -331,14 +331,17 @@ class DataSinkImplementation {
|
|
|
331
331
|
};
|
|
332
332
|
|
|
333
333
|
void AddData(absl::string_view name, std::unique_ptr<Data> data);
|
|
334
|
-
Json::
|
|
334
|
+
Json::Array Finalize(bool timed_out);
|
|
335
335
|
void Finalize(bool timed_out, grpc_channelz_v2_Entity* entity,
|
|
336
336
|
upb_Arena* arena);
|
|
337
337
|
|
|
338
338
|
private:
|
|
339
339
|
Mutex mu_;
|
|
340
|
-
|
|
341
|
-
|
|
340
|
+
struct Element {
|
|
341
|
+
std::string name;
|
|
342
|
+
std::unique_ptr<Data> data;
|
|
343
|
+
};
|
|
344
|
+
std::vector<Element> additional_info_ ABSL_GUARDED_BY(mu_);
|
|
342
345
|
};
|
|
343
346
|
|
|
344
347
|
// Wrapper around absl::AnyInvocable<void()> that is used to notify when the
|
|
@@ -146,6 +146,11 @@ class PropertyList final : public OtherPropertyValue {
|
|
|
146
146
|
void FillUpbProto(grpc_channelz_v2_PropertyList* proto, upb_Arena* arena);
|
|
147
147
|
void FillAny(google_protobuf_Any* any, upb_Arena* arena) override;
|
|
148
148
|
|
|
149
|
+
const std::vector<std::pair<std::string, PropertyValue>>& property_list()
|
|
150
|
+
const {
|
|
151
|
+
return property_list_;
|
|
152
|
+
}
|
|
153
|
+
|
|
149
154
|
private:
|
|
150
155
|
void SetInternal(absl::string_view key, std::optional<PropertyValue> value);
|
|
151
156
|
|
|
@@ -673,7 +673,7 @@ absl::StatusOr<std::string> ConvertListenSocket(
|
|
|
673
673
|
v1_ref, CopyStdStringToUpbString(*name, arena.ptr()));
|
|
674
674
|
}
|
|
675
675
|
}
|
|
676
|
-
if (auto socket_props = GetPropertyList(entity, "
|
|
676
|
+
if (auto socket_props = GetPropertyList(entity, "listen_socket", arena.ptr());
|
|
677
677
|
socket_props != nullptr) {
|
|
678
678
|
if (auto local = StringFromPropertyList(socket_props, "local");
|
|
679
679
|
local.has_value()) {
|