grpc 1.48.0 → 1.49.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +104 -41
- data/include/grpc/event_engine/event_engine.h +19 -16
- data/include/grpc/impl/codegen/grpc_types.h +3 -8
- data/include/grpc/impl/codegen/port_platform.h +0 -8
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +125 -200
- data/src/core/ext/filters/client_channel/client_channel.h +15 -8
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +12 -4
- data/src/core/ext/filters/client_channel/connector.h +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
- data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -131
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +63 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
- data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +38 -17
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
- data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
- data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
- data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
- data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
- data/src/core/ext/filters/client_channel/subchannel.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
- data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/client_authority_filter.h +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
- data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
- data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
- data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
- data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
- data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
- data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
- data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
- data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
- data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
- data/src/core/ext/xds/upb_utils.h +0 -21
- data/src/core/ext/xds/xds_api.cc +53 -86
- data/src/core/ext/xds/xds_api.h +19 -28
- data/src/core/ext/xds/xds_bootstrap.cc +39 -52
- data/src/core/ext/xds/xds_bootstrap.h +28 -8
- data/src/core/ext/xds/xds_certificate_provider.h +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
- data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
- data/src/core/ext/xds/xds_client.cc +555 -1214
- data/src/core/ext/xds/xds_client.h +16 -44
- data/src/core/ext/xds/xds_client_grpc.cc +291 -0
- data/src/core/ext/xds/xds_client_grpc.h +102 -0
- data/src/core/ext/xds/xds_cluster.cc +92 -103
- data/src/core/ext/xds/xds_cluster.h +6 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
- data/src/core/ext/xds/xds_common_types.cc +134 -110
- data/src/core/ext/xds/xds_common_types.h +6 -7
- data/src/core/ext/xds/xds_endpoint.cc +80 -80
- data/src/core/ext/xds/xds_endpoint.h +4 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
- data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
- data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
- data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
- data/src/core/ext/xds/xds_listener.cc +329 -299
- data/src/core/ext/xds/xds_listener.h +4 -4
- data/src/core/ext/xds/xds_resource_type.h +13 -2
- data/src/core/ext/xds/xds_route_config.cc +180 -177
- data/src/core/ext/xds/xds_route_config.h +31 -17
- data/src/core/ext/xds/xds_routing.cc +3 -6
- data/src/core/ext/xds/xds_routing.h +7 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
- data/src/core/ext/xds/xds_transport.h +86 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
- data/src/core/ext/xds/xds_transport_grpc.h +135 -0
- data/src/core/lib/address_utils/parse_address.cc +19 -17
- data/src/core/lib/address_utils/parse_address.h +8 -5
- data/src/core/lib/avl/avl.h +47 -25
- data/src/core/lib/channel/call_tracer.h +1 -1
- data/src/core/lib/channel/channel_args.cc +88 -19
- data/src/core/lib/channel/channel_args.h +113 -62
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_stack_builder.h +2 -2
- data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
- data/src/core/lib/channel/channelz.cc +27 -37
- data/src/core/lib/channel/channelz.h +9 -0
- data/src/core/lib/channel/promise_based_filter.h +0 -1
- data/src/core/lib/config/core_configuration.h +48 -35
- data/src/core/lib/debug/stats.cc +12 -15
- data/src/core/lib/debug/stats.h +11 -3
- data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
- data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
- data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
- data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/executor/executor.h +38 -0
- data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
- data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
- data/src/core/lib/event_engine/forkable.cc +101 -0
- data/src/core/lib/event_engine/forkable.h +61 -0
- data/src/core/lib/event_engine/poller.h +54 -0
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
- data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
- data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
- data/src/core/lib/event_engine/promise.h +11 -2
- data/src/core/lib/event_engine/socket_notifier.h +55 -0
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
- data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
- data/src/core/lib/event_engine/utils.cc +49 -0
- data/src/core/lib/event_engine/utils.h +40 -0
- data/src/core/lib/event_engine/windows/iocp.cc +149 -0
- data/src/core/lib/event_engine/windows/iocp.h +68 -0
- data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
- data/src/core/lib/event_engine/windows/win_socket.h +120 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
- data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
- data/src/core/lib/gpr/time.cc +11 -9
- data/src/core/lib/gpr/useful.h +29 -0
- data/src/core/lib/gprpp/bitset.h +3 -13
- data/src/core/lib/gprpp/debug_location.h +39 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -1
- data/src/core/lib/gprpp/no_destruct.h +94 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +1 -0
- data/src/core/lib/gprpp/table.h +0 -1
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
- data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
- data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
- data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
- data/src/core/lib/http/httpcli.cc +12 -24
- data/src/core/lib/http/httpcli_security_connector.cc +11 -11
- data/src/core/lib/iomgr/call_combiner.cc +0 -26
- data/src/core/lib/iomgr/closure.h +0 -9
- data/src/core/lib/iomgr/combiner.cc +0 -20
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +0 -773
- data/src/core/lib/iomgr/error.h +0 -145
- data/src/core/lib/iomgr/error_cfstream.cc +0 -5
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
- data/src/core/lib/iomgr/exec_ctx.cc +0 -12
- data/src/core/lib/iomgr/executor.cc +0 -10
- data/src/core/lib/iomgr/executor.h +0 -3
- data/src/core/lib/iomgr/lockfree_event.cc +0 -17
- data/src/core/lib/iomgr/port.h +3 -0
- data/src/core/lib/iomgr/resolve_address.h +29 -6
- data/src/core/lib/iomgr/resolve_address_posix.cc +42 -8
- data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
- data/src/core/lib/iomgr/resolve_address_windows.cc +44 -10
- data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
- data/src/core/lib/iomgr/socket_windows.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +118 -6
- data/src/core/lib/iomgr/timer_generic.cc +6 -8
- data/src/core/lib/json/json.h +19 -22
- data/src/core/lib/json/json_args.h +34 -0
- data/src/core/lib/json/json_object_loader.cc +233 -0
- data/src/core/lib/json/json_object_loader.h +618 -0
- data/src/core/lib/json/json_reader.cc +86 -62
- data/src/core/lib/json/json_util.cc +8 -36
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
- data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
- data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
- data/src/core/lib/promise/activity.h +56 -8
- data/src/core/lib/promise/arena_promise.h +84 -81
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/basic_seq.h +43 -23
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/map.h +0 -1
- data/src/core/lib/promise/seq.h +25 -4
- data/src/core/lib/promise/sleep.cc +38 -42
- data/src/core/lib/promise/sleep.h +27 -24
- data/src/core/lib/promise/try_seq.h +26 -6
- data/src/core/lib/resolver/resolver.cc +0 -47
- data/src/core/lib/resolver/resolver.h +2 -12
- data/src/core/lib/resolver/resolver_factory.h +2 -3
- data/src/core/lib/resolver/resolver_registry.cc +1 -1
- data/src/core/lib/resolver/resolver_registry.h +2 -3
- data/src/core/lib/resolver/server_address.cc +11 -15
- data/src/core/lib/resolver/server_address.h +4 -8
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +21 -1
- data/src/core/lib/resource_quota/arena.h +24 -2
- data/src/core/lib/resource_quota/memory_quota.cc +157 -17
- data/src/core/lib/resource_quota/memory_quota.h +98 -17
- data/src/core/lib/resource_quota/periodic_update.cc +79 -0
- data/src/core/lib/resource_quota/periodic_update.h +71 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.cc +13 -10
- data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
- data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
- data/src/core/lib/security/credentials/credentials.h +16 -12
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
- data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
- data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
- data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/security_connector.h +5 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
- data/src/core/lib/security/transport/auth_filters.h +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
- data/src/core/lib/security/transport/security_handshaker.cc +32 -44
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/service_config/service_config.h +11 -0
- data/src/core/lib/service_config/service_config_impl.cc +98 -97
- data/src/core/lib/service_config/service_config_impl.h +11 -13
- data/src/core/lib/service_config/service_config_parser.cc +26 -27
- data/src/core/lib/service_config/service_config_parser.h +10 -22
- data/src/core/lib/slice/percent_encoding.cc +4 -13
- data/src/core/lib/slice/slice.cc +10 -4
- data/src/core/lib/surface/call.cc +8 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/completion_queue.cc +0 -2
- data/src/core/lib/surface/completion_queue.h +0 -3
- data/src/core/lib/surface/init.cc +2 -6
- data/src/core/lib/surface/lame_client.cc +2 -3
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +7 -12
- data/src/core/lib/surface/server.h +7 -7
- data/src/core/lib/surface/validate_metadata.cc +4 -14
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/connectivity_state.cc +0 -1
- data/src/core/lib/transport/connectivity_state.h +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -36
- data/src/core/lib/transport/handshaker.cc +7 -9
- data/src/core/lib/transport/handshaker.h +4 -5
- data/src/core/lib/transport/handshaker_factory.h +2 -3
- data/src/core/lib/transport/handshaker_registry.cc +2 -1
- data/src/core/lib/transport/handshaker_registry.h +2 -4
- data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +52 -7
- data/src/core/lib/transport/parsed_metadata.h +0 -1
- data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
- data/src/core/lib/transport/transport.h +0 -7
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
- data/src/core/tsi/fake_transport_security.cc +53 -30
- data/src/core/tsi/local_transport_security.cc +9 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
- data/src/core/tsi/ssl_transport_security.cc +47 -23
- data/src/core/tsi/transport_security.cc +18 -6
- data/src/core/tsi/transport_security.h +2 -1
- data/src/core/tsi/transport_security_interface.h +17 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_loader.c +6 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
- data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
- data/third_party/upb/upb/arena.c +277 -0
- data/third_party/upb/upb/arena.h +225 -0
- data/third_party/upb/upb/array.c +114 -0
- data/third_party/upb/upb/array.h +83 -0
- data/third_party/upb/upb/collections.h +36 -0
- data/third_party/upb/upb/decode.c +161 -65
- data/third_party/upb/upb/decode.h +1 -0
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/def.c +10 -2
- data/third_party/upb/upb/def.h +8 -1
- data/third_party/upb/upb/def.hpp +7 -4
- data/third_party/upb/upb/encode.c +29 -20
- data/third_party/upb/upb/encode.h +16 -6
- data/third_party/upb/upb/extension_registry.c +93 -0
- data/third_party/upb/upb/extension_registry.h +84 -0
- data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
- data/third_party/upb/upb/internal/table.h +385 -0
- data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
- data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
- data/third_party/upb/upb/json_decode.c +1512 -0
- data/third_party/upb/upb/json_decode.h +47 -0
- data/third_party/upb/upb/json_encode.c +7 -3
- data/third_party/upb/upb/json_encode.h +6 -3
- data/third_party/upb/upb/map.c +108 -0
- data/third_party/upb/upb/map.h +117 -0
- data/third_party/upb/upb/message_value.h +66 -0
- data/third_party/upb/upb/mini_table.c +1147 -0
- data/third_party/upb/upb/mini_table.h +189 -0
- data/third_party/upb/upb/mini_table.hpp +112 -0
- data/third_party/upb/upb/msg.c +2 -62
- data/third_party/upb/upb/msg.h +2 -45
- data/third_party/upb/upb/msg_internal.h +28 -22
- data/third_party/upb/upb/port_def.inc +2 -1
- data/third_party/upb/upb/port_undef.inc +1 -0
- data/third_party/upb/upb/reflection.c +2 -159
- data/third_party/upb/upb/reflection.h +2 -112
- data/third_party/upb/upb/status.c +86 -0
- data/third_party/upb/upb/status.h +66 -0
- data/third_party/upb/upb/table.c +2 -2
- data/third_party/upb/upb/table_internal.h +3 -352
- data/third_party/upb/upb/text_encode.c +3 -2
- data/third_party/upb/upb/upb.c +4 -290
- data/third_party/upb/upb/upb.h +7 -196
- metadata +88 -36
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
- data/src/core/lib/iomgr/error_internal.h +0 -66
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
- data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
- data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
- data/src/core/lib/iomgr/executor/threadpool.h +0 -150
- data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
- data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -40,6 +40,7 @@
|
|
40
40
|
#include "absl/types/variant.h"
|
41
41
|
|
42
42
|
#include <grpc/impl/codegen/connectivity_state.h>
|
43
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
43
44
|
#include <grpc/slice_buffer.h>
|
44
45
|
#include <grpc/status.h>
|
45
46
|
#include <grpc/support/alloc.h>
|
@@ -75,7 +76,6 @@
|
|
75
76
|
#include "src/core/lib/iomgr/timer.h"
|
76
77
|
#include "src/core/lib/profiling/timers.h"
|
77
78
|
#include "src/core/lib/promise/poll.h"
|
78
|
-
#include "src/core/lib/resource_quota/api.h"
|
79
79
|
#include "src/core/lib/resource_quota/arena.h"
|
80
80
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
81
81
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
@@ -286,147 +286,126 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
|
|
286
286
|
static const grpc_transport_vtable* get_vtable(void);
|
287
287
|
|
288
288
|
static void read_channel_args(grpc_chttp2_transport* t,
|
289
|
-
const
|
289
|
+
const grpc_core::ChannelArgs& channel_args,
|
290
290
|
bool is_client) {
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
const grpc_integer_options options = {-1, 0, INT_MAX};
|
299
|
-
const int value =
|
300
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
301
|
-
if (value >= 0) {
|
302
|
-
if ((t->next_stream_id & 1) != (value & 1)) {
|
303
|
-
gpr_log(GPR_ERROR, "%s: low bit must be %d on %s",
|
304
|
-
GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER, t->next_stream_id & 1,
|
305
|
-
is_client ? "client" : "server");
|
306
|
-
} else {
|
307
|
-
t->next_stream_id = static_cast<uint32_t>(value);
|
308
|
-
}
|
309
|
-
}
|
310
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
311
|
-
GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER)) {
|
312
|
-
const grpc_integer_options options = {-1, 0, INT_MAX};
|
313
|
-
const int value =
|
314
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], options);
|
315
|
-
if (value >= 0) {
|
316
|
-
t->hpack_compressor.SetMaxUsableSize(value);
|
317
|
-
}
|
318
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
319
|
-
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
|
320
|
-
t->ping_policy.max_pings_without_data = grpc_channel_arg_get_integer(
|
321
|
-
&channel_args->args[i],
|
322
|
-
{g_default_max_pings_without_data, 0, INT_MAX});
|
323
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
324
|
-
GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
|
325
|
-
t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
|
326
|
-
&channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
|
327
|
-
} else if (0 ==
|
328
|
-
strcmp(channel_args->args[i].key,
|
329
|
-
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
|
330
|
-
t->ping_policy.min_recv_ping_interval_without_data =
|
331
|
-
grpc_core::Duration::Milliseconds(grpc_channel_arg_get_integer(
|
332
|
-
&channel_args->args[i],
|
333
|
-
grpc_integer_options{
|
334
|
-
g_default_min_recv_ping_interval_without_data_ms, 0,
|
335
|
-
INT_MAX}));
|
336
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
337
|
-
GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
|
338
|
-
t->write_buffer_size = static_cast<uint32_t>(grpc_channel_arg_get_integer(
|
339
|
-
&channel_args->args[i], {0, 0, MAX_WRITE_BUFFER_SIZE}));
|
340
|
-
} else if (0 ==
|
341
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
|
342
|
-
const int value = grpc_channel_arg_get_integer(
|
343
|
-
&channel_args->args[i],
|
344
|
-
grpc_integer_options{t->is_client
|
345
|
-
? g_default_client_keepalive_time_ms
|
346
|
-
: g_default_server_keepalive_time_ms,
|
347
|
-
1, INT_MAX});
|
348
|
-
t->keepalive_time = value == INT_MAX
|
349
|
-
? grpc_core::Duration::Infinity()
|
350
|
-
: grpc_core::Duration::Milliseconds(value);
|
351
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
352
|
-
GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
|
353
|
-
const int value = grpc_channel_arg_get_integer(
|
354
|
-
&channel_args->args[i],
|
355
|
-
grpc_integer_options{t->is_client
|
356
|
-
? g_default_client_keepalive_timeout_ms
|
357
|
-
: g_default_server_keepalive_timeout_ms,
|
358
|
-
0, INT_MAX});
|
359
|
-
t->keepalive_timeout = value == INT_MAX
|
360
|
-
? grpc_core::Duration::Infinity()
|
361
|
-
: grpc_core::Duration::Milliseconds(value);
|
362
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
363
|
-
GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
|
364
|
-
t->keepalive_permit_without_calls = static_cast<uint32_t>(
|
365
|
-
grpc_channel_arg_get_integer(&channel_args->args[i], {0, 0, 1}));
|
366
|
-
} else if (0 == strcmp(channel_args->args[i].key,
|
367
|
-
GRPC_ARG_OPTIMIZATION_TARGET)) {
|
368
|
-
gpr_log(GPR_INFO, "GRPC_ARG_OPTIMIZATION_TARGET is deprecated");
|
369
|
-
} else if (0 ==
|
370
|
-
strcmp(channel_args->args[i].key, GRPC_ARG_ENABLE_CHANNELZ)) {
|
371
|
-
channelz_enabled = grpc_channel_arg_get_bool(
|
372
|
-
&channel_args->args[i], GRPC_ENABLE_CHANNELZ_DEFAULT);
|
291
|
+
const int initial_sequence_number =
|
292
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER).value_or(-1);
|
293
|
+
if (initial_sequence_number > 0) {
|
294
|
+
if ((t->next_stream_id & 1) != (initial_sequence_number & 1)) {
|
295
|
+
gpr_log(GPR_ERROR, "%s: low bit must be %d on %s",
|
296
|
+
GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER, t->next_stream_id & 1,
|
297
|
+
is_client ? "client" : "server");
|
373
298
|
} else {
|
374
|
-
|
375
|
-
const char* channel_arg_name;
|
376
|
-
grpc_chttp2_setting_id setting_id;
|
377
|
-
grpc_integer_options integer_options;
|
378
|
-
bool availability[2] /* server, client */;
|
379
|
-
} settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
|
380
|
-
GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
|
381
|
-
{-1, 0, INT32_MAX},
|
382
|
-
{true, false}},
|
383
|
-
{GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
|
384
|
-
GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
|
385
|
-
{-1, 0, INT32_MAX},
|
386
|
-
{true, true}},
|
387
|
-
{GRPC_ARG_MAX_METADATA_SIZE,
|
388
|
-
GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
|
389
|
-
{-1, 0, INT32_MAX},
|
390
|
-
{true, true}},
|
391
|
-
{GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
|
392
|
-
GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
|
393
|
-
{-1, 16384, 16777215},
|
394
|
-
{true, true}},
|
395
|
-
{GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
|
396
|
-
GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
|
397
|
-
{1, 0, 1},
|
398
|
-
{true, true}},
|
399
|
-
{GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
|
400
|
-
GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
|
401
|
-
{-1, 5, INT32_MAX},
|
402
|
-
{true, true}}};
|
403
|
-
for (j = 0; j < static_cast<int> GPR_ARRAY_SIZE(settings_map); j++) {
|
404
|
-
if (0 == strcmp(channel_args->args[i].key,
|
405
|
-
settings_map[j].channel_arg_name)) {
|
406
|
-
if (!settings_map[j].availability[is_client]) {
|
407
|
-
gpr_log(GPR_DEBUG, "%s is not available on %s",
|
408
|
-
settings_map[j].channel_arg_name,
|
409
|
-
is_client ? "clients" : "servers");
|
410
|
-
} else {
|
411
|
-
int value = grpc_channel_arg_get_integer(
|
412
|
-
&channel_args->args[i], settings_map[j].integer_options);
|
413
|
-
if (value >= 0) {
|
414
|
-
queue_setting_update(t, settings_map[j].setting_id,
|
415
|
-
static_cast<uint32_t>(value));
|
416
|
-
}
|
417
|
-
}
|
418
|
-
break;
|
419
|
-
}
|
420
|
-
}
|
299
|
+
t->next_stream_id = static_cast<uint32_t>(initial_sequence_number);
|
421
300
|
}
|
422
301
|
}
|
423
|
-
|
302
|
+
|
303
|
+
const int max_hpack_table_size =
|
304
|
+
channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER).value_or(-1);
|
305
|
+
if (max_hpack_table_size >= 0) {
|
306
|
+
t->hpack_compressor.SetMaxUsableSize(max_hpack_table_size);
|
307
|
+
}
|
308
|
+
|
309
|
+
t->ping_policy.max_pings_without_data =
|
310
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
|
311
|
+
.value_or(g_default_max_pings_without_data));
|
312
|
+
t->ping_policy.max_ping_strikes =
|
313
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PING_STRIKES)
|
314
|
+
.value_or(g_default_max_ping_strikes));
|
315
|
+
t->ping_policy.min_recv_ping_interval_without_data =
|
316
|
+
std::max(grpc_core::Duration::Zero(),
|
317
|
+
channel_args
|
318
|
+
.GetDurationFromIntMillis(
|
319
|
+
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)
|
320
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
321
|
+
g_default_min_recv_ping_interval_without_data_ms)));
|
322
|
+
t->write_buffer_size =
|
323
|
+
std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)
|
324
|
+
.value_or(grpc_core::chttp2::kDefaultWindow));
|
325
|
+
t->keepalive_time =
|
326
|
+
std::max(grpc_core::Duration::Milliseconds(1),
|
327
|
+
channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
|
328
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
329
|
+
t->is_client ? g_default_client_keepalive_time_ms
|
330
|
+
: g_default_server_keepalive_time_ms)));
|
331
|
+
t->keepalive_timeout = std::max(
|
332
|
+
grpc_core::Duration::Zero(),
|
333
|
+
channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
|
334
|
+
.value_or(grpc_core::Duration::Milliseconds(
|
335
|
+
t->is_client ? g_default_client_keepalive_timeout_ms
|
336
|
+
: g_default_server_keepalive_timeout_ms)));
|
337
|
+
t->keepalive_permit_without_calls =
|
338
|
+
channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
|
339
|
+
.value_or(false);
|
340
|
+
|
341
|
+
if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
|
342
|
+
.value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
|
424
343
|
t->channelz_socket =
|
425
344
|
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
|
426
345
|
std::string(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
|
427
346
|
absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
|
428
|
-
|
429
|
-
|
347
|
+
channel_args
|
348
|
+
.GetObjectRef<grpc_core::channelz::SocketNode::Security>());
|
349
|
+
}
|
350
|
+
|
351
|
+
static const struct {
|
352
|
+
absl::string_view channel_arg_name;
|
353
|
+
grpc_chttp2_setting_id setting_id;
|
354
|
+
int default_value;
|
355
|
+
int min;
|
356
|
+
int max;
|
357
|
+
bool availability[2] /* server, client */;
|
358
|
+
} settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
|
359
|
+
GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
|
360
|
+
-1,
|
361
|
+
0,
|
362
|
+
INT32_MAX,
|
363
|
+
{true, false}},
|
364
|
+
{GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
|
365
|
+
GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
|
366
|
+
-1,
|
367
|
+
0,
|
368
|
+
INT32_MAX,
|
369
|
+
{true, true}},
|
370
|
+
{GRPC_ARG_MAX_METADATA_SIZE,
|
371
|
+
GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
|
372
|
+
-1,
|
373
|
+
0,
|
374
|
+
INT32_MAX,
|
375
|
+
{true, true}},
|
376
|
+
{GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
|
377
|
+
GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
|
378
|
+
-1,
|
379
|
+
16384,
|
380
|
+
16777215,
|
381
|
+
{true, true}},
|
382
|
+
{GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
|
383
|
+
GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
|
384
|
+
1,
|
385
|
+
0,
|
386
|
+
1,
|
387
|
+
{true, true}},
|
388
|
+
{GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
|
389
|
+
GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
|
390
|
+
-1,
|
391
|
+
5,
|
392
|
+
INT32_MAX,
|
393
|
+
{true, true}}};
|
394
|
+
|
395
|
+
for (size_t i = 0; i < GPR_ARRAY_SIZE(settings_map); i++) {
|
396
|
+
const auto& setting = settings_map[i];
|
397
|
+
if (setting.availability[is_client]) {
|
398
|
+
const int value = channel_args.GetInt(setting.channel_arg_name)
|
399
|
+
.value_or(setting.default_value);
|
400
|
+
if (value >= 0) {
|
401
|
+
queue_setting_update(t, setting.setting_id,
|
402
|
+
grpc_core::Clamp(value, setting.min, setting.max));
|
403
|
+
}
|
404
|
+
} else if (channel_args.Contains(setting.channel_arg_name)) {
|
405
|
+
gpr_log(GPR_DEBUG, "%s is not available on %s",
|
406
|
+
std::string(setting.channel_arg_name).c_str(),
|
407
|
+
is_client ? "clients" : "servers");
|
408
|
+
}
|
430
409
|
}
|
431
410
|
}
|
432
411
|
|
@@ -481,13 +460,14 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
|
|
481
460
|
}
|
482
461
|
|
483
462
|
grpc_chttp2_transport::grpc_chttp2_transport(
|
484
|
-
const
|
463
|
+
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
464
|
+
bool is_client)
|
485
465
|
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
|
486
466
|
? "chttp2_refcount"
|
487
467
|
: nullptr),
|
488
468
|
ep(ep),
|
489
469
|
peer_string(grpc_endpoint_get_peer(ep)),
|
490
|
-
memory_owner(grpc_core::
|
470
|
+
memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
|
491
471
|
->memory_quota()
|
492
472
|
->CreateMemoryOwner(absl::StrCat(
|
493
473
|
grpc_endpoint_get_peer(ep), ":client_transport"))),
|
@@ -498,10 +478,10 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
498
478
|
GRPC_CHANNEL_READY),
|
499
479
|
is_client(is_client),
|
500
480
|
next_stream_id(is_client ? 1 : 2),
|
501
|
-
flow_control(
|
502
|
-
|
503
|
-
|
504
|
-
|
481
|
+
flow_control(
|
482
|
+
peer_string.c_str(),
|
483
|
+
channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
|
484
|
+
&memory_owner),
|
505
485
|
deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0) {
|
506
486
|
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
|
507
487
|
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
|
@@ -543,9 +523,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
|
|
543
523
|
configure_transport_ping_policy(this);
|
544
524
|
init_transport_keepalive_settings(this);
|
545
525
|
|
546
|
-
|
547
|
-
read_channel_args(this, channel_args, is_client);
|
548
|
-
}
|
526
|
+
read_channel_args(this, channel_args, is_client);
|
549
527
|
|
550
528
|
// No pings allowed before receiving a header or data frame.
|
551
529
|
ping_state.pings_before_data_required = 0;
|
@@ -1150,14 +1128,14 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
|
|
1150
1128
|
gpr_log(GPR_ERROR,
|
1151
1129
|
"Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
|
1152
1130
|
"data equal to \"too_many_pings\"");
|
1153
|
-
constexpr
|
1154
|
-
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER
|
1155
|
-
|
1156
|
-
t->keepalive_time >
|
1157
|
-
?
|
1158
|
-
: t->keepalive_time * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1131
|
+
constexpr int max_keepalive_time_millis =
|
1132
|
+
INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1133
|
+
int throttled_keepalive_time =
|
1134
|
+
t->keepalive_time.millis() > max_keepalive_time_millis
|
1135
|
+
? INT_MAX
|
1136
|
+
: t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
|
1159
1137
|
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
|
1160
|
-
absl::Cord(std::to_string(
|
1138
|
+
absl::Cord(std::to_string(throttled_keepalive_time)));
|
1161
1139
|
}
|
1162
1140
|
// lie: use transient failure from the transport to indicate goaway has been
|
1163
1141
|
// received.
|
@@ -1270,13 +1248,8 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1270
1248
|
write_state_name(t->write_state));
|
1271
1249
|
}
|
1272
1250
|
if (!GRPC_ERROR_IS_NONE(error)) {
|
1273
|
-
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1274
1251
|
grpc_error_handle cl_err =
|
1275
1252
|
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1276
|
-
#else
|
1277
|
-
grpc_error_handle cl_err =
|
1278
|
-
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
1279
|
-
#endif
|
1280
1253
|
if (GRPC_ERROR_IS_NONE(cl_err)) {
|
1281
1254
|
cl_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1282
1255
|
"Error in HTTP transport completing operation");
|
@@ -1284,24 +1257,15 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1284
1257
|
t->peer_string);
|
1285
1258
|
}
|
1286
1259
|
cl_err = grpc_error_add_child(cl_err, error);
|
1287
|
-
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1288
1260
|
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
|
1289
|
-
#else
|
1290
|
-
closure->error_data.error = reinterpret_cast<intptr_t>(cl_err);
|
1291
|
-
#endif
|
1292
1261
|
}
|
1293
1262
|
if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
|
1294
1263
|
if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
|
1295
1264
|
!(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
|
1296
1265
|
// Using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN to avoid running
|
1297
1266
|
// closures earlier than when it is safe to do so.
|
1298
|
-
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
1299
1267
|
grpc_error_handle run_error =
|
1300
1268
|
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
|
1301
|
-
#else
|
1302
|
-
grpc_error_handle run_error =
|
1303
|
-
reinterpret_cast<grpc_error_handle>(closure->error_data.error);
|
1304
|
-
#endif
|
1305
1269
|
closure->error_data.error = 0;
|
1306
1270
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, run_error);
|
1307
1271
|
} else {
|
@@ -3120,7 +3084,8 @@ grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
|
|
3120
3084
|
}
|
3121
3085
|
|
3122
3086
|
grpc_transport* grpc_create_chttp2_transport(
|
3123
|
-
const
|
3087
|
+
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
3088
|
+
bool is_client) {
|
3124
3089
|
auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
|
3125
3090
|
return &t->base;
|
3126
3091
|
}
|
@@ -21,9 +21,9 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
25
24
|
#include <grpc/slice.h>
|
26
25
|
|
26
|
+
#include "src/core/lib/channel/channel_args.h"
|
27
27
|
#include "src/core/lib/channel/channelz.h"
|
28
28
|
#include "src/core/lib/debug/trace.h"
|
29
29
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
@@ -41,7 +41,8 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser;
|
|
41
41
|
/// from the caller; if the caller still needs the resource_user after creating
|
42
42
|
/// a transport, the caller must take another ref.
|
43
43
|
grpc_transport* grpc_create_chttp2_transport(
|
44
|
-
const
|
44
|
+
const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
|
45
|
+
bool is_client);
|
45
46
|
|
46
47
|
grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode>
|
47
48
|
grpc_chttp2_transport_get_socket_node(grpc_transport* transport);
|
@@ -36,11 +36,17 @@
|
|
36
36
|
#include <grpc/support/log.h>
|
37
37
|
|
38
38
|
#include "src/core/lib/gpr/useful.h"
|
39
|
+
#include "src/core/lib/gprpp/global_config_env.h"
|
39
40
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
40
41
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
41
42
|
|
42
43
|
grpc_core::TraceFlag grpc_flowctl_trace(false, "flowctl");
|
43
44
|
|
45
|
+
GPR_GLOBAL_CONFIG_DEFINE_BOOL(
|
46
|
+
grpc_experimental_broad_flow_control_range, false,
|
47
|
+
"Use an enlarged memory pressure range for scaling flow control when using "
|
48
|
+
"a resource quota.");
|
49
|
+
|
44
50
|
namespace grpc_core {
|
45
51
|
namespace chttp2 {
|
46
52
|
|
@@ -198,7 +204,9 @@ static double AdjustForMemoryPressure(double memory_pressure, double target) {
|
|
198
204
|
|
199
205
|
double TransportFlowControl::TargetLogBdp() {
|
200
206
|
return AdjustForMemoryPressure(
|
201
|
-
memory_owner_->is_valid()
|
207
|
+
memory_owner_->is_valid()
|
208
|
+
? memory_owner_->GetPressureInfo().pressure_control_value
|
209
|
+
: 0.0,
|
202
210
|
1 + log2(bdp_estimator_.EstimateBdp()));
|
203
211
|
}
|
204
212
|
|
@@ -212,6 +220,59 @@ double TransportFlowControl::SmoothLogBdp(double value) {
|
|
212
220
|
return pid_controller_.Update(bdp_error, dt > kMaxDt ? kMaxDt : dt);
|
213
221
|
}
|
214
222
|
|
223
|
+
double
|
224
|
+
TransportFlowControl::TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
|
225
|
+
const {
|
226
|
+
const double bdp = bdp_estimator_.EstimateBdp() * 2.0;
|
227
|
+
const double memory_pressure =
|
228
|
+
memory_owner_->GetPressureInfo().pressure_control_value;
|
229
|
+
// Linear interpolation between two values.
|
230
|
+
// Given a line segment between the two points (t_min, a), and (t_max, b),
|
231
|
+
// and a value t such that t_min <= t <= t_max, return the value on the line
|
232
|
+
// segment at t.
|
233
|
+
auto lerp = [](double t, double t_min, double t_max, double a, double b) {
|
234
|
+
return a + (b - a) * (t - t_min) / (t_max - t_min);
|
235
|
+
};
|
236
|
+
// We split memory pressure into three broad regions:
|
237
|
+
// 1. Low memory pressure, the "anything goes" case - we assume no memory
|
238
|
+
// pressure concerns and advertise a huge window to keep things flowing.
|
239
|
+
// 2. Moderate memory pressure, the "adjust to BDP" case - we linearly ramp
|
240
|
+
// down window size to 2*BDP - which should still allow bytes to flow, but
|
241
|
+
// is arguably more considered.
|
242
|
+
// 3. High memory pressure - past 50% we linearly ramp down window size from
|
243
|
+
// BDP to 0 - at which point senders effectively must request to send bytes
|
244
|
+
// to us.
|
245
|
+
//
|
246
|
+
// ▲
|
247
|
+
// │
|
248
|
+
// 16mb ────┤---------x----
|
249
|
+
// │ -----
|
250
|
+
// BDP ────┤ ----x---
|
251
|
+
// │ ----
|
252
|
+
// │ -----
|
253
|
+
// │ ----
|
254
|
+
// │ -----
|
255
|
+
// │ ---x
|
256
|
+
// ├─────────┬─────────────┬────────────────────────┬─────►
|
257
|
+
// │Anything │Adjust to │Drop to zero │
|
258
|
+
// │Goes │BDP │ │
|
259
|
+
// 0% 20% 50% 100% memory
|
260
|
+
// pressure
|
261
|
+
const double kAnythingGoesPressure = 0.2;
|
262
|
+
const double kAdjustedToBdpPressure = 0.5;
|
263
|
+
const double kAnythingGoesWindow = std::max(double(1 << 24), bdp);
|
264
|
+
if (memory_pressure < kAnythingGoesPressure) {
|
265
|
+
return kAnythingGoesWindow;
|
266
|
+
} else if (memory_pressure < kAdjustedToBdpPressure) {
|
267
|
+
return lerp(memory_pressure, kAnythingGoesPressure, kAdjustedToBdpPressure,
|
268
|
+
kAnythingGoesWindow, bdp);
|
269
|
+
} else if (memory_pressure < 1.0) {
|
270
|
+
return lerp(memory_pressure, kAdjustedToBdpPressure, 1.0, bdp, 0);
|
271
|
+
} else {
|
272
|
+
return 0;
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
215
276
|
void TransportFlowControl::UpdateSetting(
|
216
277
|
int64_t* desired_value, int64_t new_desired_value,
|
217
278
|
FlowControlAction* action,
|
@@ -227,13 +288,17 @@ void TransportFlowControl::UpdateSetting(
|
|
227
288
|
}
|
228
289
|
|
229
290
|
FlowControlAction TransportFlowControl::PeriodicUpdate() {
|
291
|
+
static const bool kSmoothMemoryPressure =
|
292
|
+
GPR_GLOBAL_CONFIG_GET(grpc_experimental_smooth_memory_presure);
|
230
293
|
FlowControlAction action;
|
231
294
|
if (enable_bdp_probe_) {
|
232
295
|
// get bdp estimate and update initial_window accordingly.
|
233
296
|
// target might change based on how much memory pressure we are under
|
234
297
|
// TODO(ncteisen): experiment with setting target to be huge under low
|
235
298
|
// memory pressure.
|
236
|
-
double target =
|
299
|
+
double target = kSmoothMemoryPressure
|
300
|
+
? TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
|
301
|
+
: pow(2, SmoothLogBdp(TargetLogBdp()));
|
237
302
|
if (g_test_only_transport_target_window_estimates_mocker != nullptr) {
|
238
303
|
// Hook for simulating unusual flow control situations in tests.
|
239
304
|
target = g_test_only_transport_target_window_estimates_mocker
|
@@ -252,6 +252,7 @@ class TransportFlowControl final {
|
|
252
252
|
private:
|
253
253
|
double TargetLogBdp();
|
254
254
|
double SmoothLogBdp(double value);
|
255
|
+
double TargetInitialWindowSizeBasedOnMemoryPressureAndBdp() const;
|
255
256
|
static void UpdateSetting(int64_t* desired_value, int64_t new_desired_value,
|
256
257
|
FlowControlAction* action,
|
257
258
|
FlowControlAction& (FlowControlAction::*set)(
|
@@ -17,7 +17,8 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
-
#include <
|
20
|
+
#include <cstddef>
|
21
|
+
#include <cstdint>
|
21
22
|
|
22
23
|
namespace grpc_core {
|
23
24
|
namespace hpack_constants {
|
@@ -33,6 +34,11 @@ static constexpr uint32_t EntriesForBytes(uint32_t bytes) noexcept {
|
|
33
34
|
return (bytes + kEntryOverhead - 1) / kEntryOverhead;
|
34
35
|
}
|
35
36
|
|
37
|
+
static constexpr size_t SizeForEntry(size_t key_length,
|
38
|
+
size_t value_length) noexcept {
|
39
|
+
return key_length + value_length + kEntryOverhead;
|
40
|
+
}
|
41
|
+
|
36
42
|
static constexpr uint32_t kInitialTableEntries =
|
37
43
|
EntriesForBytes(kInitialTableSize);
|
38
44
|
} // namespace hpack_constants
|
@@ -431,13 +431,15 @@ void HPackCompressor::Framer::Encode(HttpSchemeMetadata,
|
|
431
431
|
}
|
432
432
|
|
433
433
|
void HPackCompressor::Framer::Encode(GrpcTraceBinMetadata, const Slice& slice) {
|
434
|
-
|
435
|
-
|
434
|
+
EncodeRepeatingSliceValue(GrpcTraceBinMetadata::key(), slice,
|
435
|
+
&compressor_->grpc_trace_bin_index_,
|
436
|
+
HPackEncoderTable::MaxEntrySize());
|
436
437
|
}
|
437
438
|
|
438
439
|
void HPackCompressor::Framer::Encode(GrpcTagsBinMetadata, const Slice& slice) {
|
439
|
-
|
440
|
-
|
440
|
+
EncodeRepeatingSliceValue(GrpcTagsBinMetadata::key(), slice,
|
441
|
+
&compressor_->grpc_tags_bin_index_,
|
442
|
+
HPackEncoderTable::MaxEntrySize());
|
441
443
|
}
|
442
444
|
|
443
445
|
void HPackCompressor::Framer::Encode(HttpStatusMetadata, uint32_t status) {
|
@@ -521,6 +523,18 @@ void HPackCompressor::Framer::EncodeIndexedKeyWithBinaryValue(
|
|
521
523
|
}
|
522
524
|
}
|
523
525
|
|
526
|
+
void HPackCompressor::Framer::EncodeRepeatingSliceValue(
|
527
|
+
const absl::string_view& key, const Slice& slice, uint32_t* index,
|
528
|
+
size_t max_compression_size) {
|
529
|
+
if (hpack_constants::SizeForEntry(key.size(), slice.size()) >
|
530
|
+
max_compression_size) {
|
531
|
+
EmitLitHdrWithBinaryStringKeyNotIdx(Slice::FromStaticString(key),
|
532
|
+
slice.Ref());
|
533
|
+
} else {
|
534
|
+
EncodeIndexedKeyWithBinaryValue(index, key, slice.Ref());
|
535
|
+
}
|
536
|
+
}
|
537
|
+
|
524
538
|
void HPackCompressor::Framer::Encode(GrpcTimeoutMetadata, Timestamp deadline) {
|
525
539
|
Timeout timeout = Timeout::FromDuration(deadline - ExecCtx::Get()->Now());
|
526
540
|
for (auto it = compressor_->previous_timeouts_.begin();
|
@@ -553,7 +567,9 @@ void HPackCompressor::Framer::Encode(GrpcTimeoutMetadata, Timestamp deadline) {
|
|
553
567
|
}
|
554
568
|
|
555
569
|
void HPackCompressor::Framer::Encode(UserAgentMetadata, const Slice& slice) {
|
556
|
-
if (
|
570
|
+
if (hpack_constants::SizeForEntry(UserAgentMetadata::key().size(),
|
571
|
+
slice.size()) >
|
572
|
+
HPackEncoderTable::MaxEntrySize()) {
|
557
573
|
EmitLitHdrWithNonBinaryStringKeyNotIdx(
|
558
574
|
Slice::FromStaticString(UserAgentMetadata::key()), slice.Ref());
|
559
575
|
return;
|
@@ -562,9 +578,10 @@ void HPackCompressor::Framer::Encode(UserAgentMetadata, const Slice& slice) {
|
|
562
578
|
compressor_->user_agent_ = slice.Ref();
|
563
579
|
compressor_->user_agent_index_ = 0;
|
564
580
|
}
|
565
|
-
EncodeAlwaysIndexed(
|
566
|
-
|
567
|
-
|
581
|
+
EncodeAlwaysIndexed(&compressor_->user_agent_index_, UserAgentMetadata::key(),
|
582
|
+
slice.Ref(),
|
583
|
+
hpack_constants::SizeForEntry(
|
584
|
+
UserAgentMetadata::key().size(), slice.size()));
|
568
585
|
}
|
569
586
|
|
570
587
|
void HPackCompressor::Framer::Encode(GrpcStatusMetadata,
|
@@ -154,6 +154,10 @@ class HPackCompressor {
|
|
154
154
|
void EncodeIndexedKeyWithBinaryValue(uint32_t* index, absl::string_view key,
|
155
155
|
Slice value);
|
156
156
|
|
157
|
+
void EncodeRepeatingSliceValue(const absl::string_view& key,
|
158
|
+
const Slice& slice, uint32_t* index,
|
159
|
+
size_t max_compression_size);
|
160
|
+
|
157
161
|
size_t CurrentFrameSize() const;
|
158
162
|
void Add(Slice slice);
|
159
163
|
uint8_t* AddTiny(size_t len);
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#include <stddef.h>
|
21
21
|
#include <stdint.h>
|
22
22
|
|
23
|
+
#include <limits>
|
24
|
+
|
23
25
|
#include "absl/container/inlined_vector.h"
|
24
26
|
|
25
27
|
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
|
@@ -30,9 +32,13 @@ namespace grpc_core {
|
|
30
32
|
// sizes.
|
31
33
|
class HPackEncoderTable {
|
32
34
|
public:
|
35
|
+
using EntrySize = uint16_t;
|
36
|
+
|
33
37
|
HPackEncoderTable() : elem_size_(hpack_constants::kInitialTableEntries) {}
|
34
38
|
|
35
|
-
static constexpr size_t MaxEntrySize() {
|
39
|
+
static constexpr size_t MaxEntrySize() {
|
40
|
+
return std::numeric_limits<EntrySize>::max();
|
41
|
+
}
|
36
42
|
|
37
43
|
// Reserve space in table for the new element, evict entries if needed.
|
38
44
|
// Return the new index of the element. Return 0 to indicate not adding to
|
@@ -65,7 +71,7 @@ class HPackEncoderTable {
|
|
65
71
|
uint32_t table_elems_ = 0;
|
66
72
|
uint32_t table_size_ = 0;
|
67
73
|
// The size of each element in the HPACK table.
|
68
|
-
absl::InlinedVector<
|
74
|
+
absl::InlinedVector<EntrySize, hpack_constants::kInitialTableEntries>
|
69
75
|
elem_size_;
|
70
76
|
};
|
71
77
|
|