grpc 1.42.0 → 1.43.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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -72,37 +72,43 @@ class InlinedVector {
|
|
72
72
|
|
73
73
|
using Storage = inlined_vector_internal::Storage<T, N, A>;
|
74
74
|
|
75
|
-
|
76
|
-
using
|
77
|
-
|
78
|
-
using
|
79
|
-
|
80
|
-
|
75
|
+
template <typename TheA>
|
76
|
+
using AllocatorTraits = inlined_vector_internal::AllocatorTraits<TheA>;
|
77
|
+
template <typename TheA>
|
78
|
+
using MoveIterator = inlined_vector_internal::MoveIterator<TheA>;
|
79
|
+
template <typename TheA>
|
80
|
+
using IsMemcpyOk = inlined_vector_internal::IsMemcpyOk<TheA>;
|
81
|
+
|
82
|
+
template <typename TheA, typename Iterator>
|
81
83
|
using IteratorValueAdapter =
|
82
|
-
|
83
|
-
|
84
|
-
using
|
84
|
+
inlined_vector_internal::IteratorValueAdapter<TheA, Iterator>;
|
85
|
+
template <typename TheA>
|
86
|
+
using CopyValueAdapter = inlined_vector_internal::CopyValueAdapter<TheA>;
|
87
|
+
template <typename TheA>
|
88
|
+
using DefaultValueAdapter =
|
89
|
+
inlined_vector_internal::DefaultValueAdapter<TheA>;
|
85
90
|
|
86
91
|
template <typename Iterator>
|
87
92
|
using EnableIfAtLeastForwardIterator = absl::enable_if_t<
|
88
|
-
inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value>;
|
93
|
+
inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value, int>;
|
89
94
|
template <typename Iterator>
|
90
95
|
using DisableIfAtLeastForwardIterator = absl::enable_if_t<
|
91
|
-
!inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value>;
|
96
|
+
!inlined_vector_internal::IsAtLeastForwardIterator<Iterator>::value, int>;
|
92
97
|
|
93
98
|
public:
|
94
|
-
using allocator_type =
|
95
|
-
using value_type =
|
96
|
-
using pointer =
|
97
|
-
using const_pointer =
|
98
|
-
using size_type =
|
99
|
-
using difference_type =
|
100
|
-
using reference =
|
101
|
-
using const_reference =
|
102
|
-
using iterator =
|
103
|
-
using const_iterator =
|
104
|
-
using reverse_iterator =
|
105
|
-
using const_reverse_iterator =
|
99
|
+
using allocator_type = A;
|
100
|
+
using value_type = inlined_vector_internal::ValueType<A>;
|
101
|
+
using pointer = inlined_vector_internal::Pointer<A>;
|
102
|
+
using const_pointer = inlined_vector_internal::ConstPointer<A>;
|
103
|
+
using size_type = inlined_vector_internal::SizeType<A>;
|
104
|
+
using difference_type = inlined_vector_internal::DifferenceType<A>;
|
105
|
+
using reference = inlined_vector_internal::Reference<A>;
|
106
|
+
using const_reference = inlined_vector_internal::ConstReference<A>;
|
107
|
+
using iterator = inlined_vector_internal::Iterator<A>;
|
108
|
+
using const_iterator = inlined_vector_internal::ConstIterator<A>;
|
109
|
+
using reverse_iterator = inlined_vector_internal::ReverseIterator<A>;
|
110
|
+
using const_reverse_iterator =
|
111
|
+
inlined_vector_internal::ConstReverseIterator<A>;
|
106
112
|
|
107
113
|
// ---------------------------------------------------------------------------
|
108
114
|
// InlinedVector Constructors and Destructor
|
@@ -111,28 +117,28 @@ class InlinedVector {
|
|
111
117
|
// Creates an empty inlined vector with a value-initialized allocator.
|
112
118
|
InlinedVector() noexcept(noexcept(allocator_type())) : storage_() {}
|
113
119
|
|
114
|
-
// Creates an empty inlined vector with a copy of `
|
115
|
-
explicit InlinedVector(const allocator_type&
|
116
|
-
: storage_(
|
120
|
+
// Creates an empty inlined vector with a copy of `allocator`.
|
121
|
+
explicit InlinedVector(const allocator_type& allocator) noexcept
|
122
|
+
: storage_(allocator) {}
|
117
123
|
|
118
124
|
// Creates an inlined vector with `n` copies of `value_type()`.
|
119
125
|
explicit InlinedVector(size_type n,
|
120
|
-
const allocator_type&
|
121
|
-
: storage_(
|
122
|
-
storage_.Initialize(DefaultValueAdapter(), n);
|
126
|
+
const allocator_type& allocator = allocator_type())
|
127
|
+
: storage_(allocator) {
|
128
|
+
storage_.Initialize(DefaultValueAdapter<A>(), n);
|
123
129
|
}
|
124
130
|
|
125
131
|
// Creates an inlined vector with `n` copies of `v`.
|
126
132
|
InlinedVector(size_type n, const_reference v,
|
127
|
-
const allocator_type&
|
128
|
-
: storage_(
|
129
|
-
storage_.Initialize(CopyValueAdapter(v), n);
|
133
|
+
const allocator_type& allocator = allocator_type())
|
134
|
+
: storage_(allocator) {
|
135
|
+
storage_.Initialize(CopyValueAdapter<A>(std::addressof(v)), n);
|
130
136
|
}
|
131
137
|
|
132
138
|
// Creates an inlined vector with copies of the elements of `list`.
|
133
139
|
InlinedVector(std::initializer_list<value_type> list,
|
134
|
-
const allocator_type&
|
135
|
-
: InlinedVector(list.begin(), list.end(),
|
140
|
+
const allocator_type& allocator = allocator_type())
|
141
|
+
: InlinedVector(list.begin(), list.end(), allocator) {}
|
136
142
|
|
137
143
|
// Creates an inlined vector with elements constructed from the provided
|
138
144
|
// forward iterator range [`first`, `last`).
|
@@ -141,35 +147,36 @@ class InlinedVector {
|
|
141
147
|
// this constructor with two integral arguments and a call to the above
|
142
148
|
// `InlinedVector(size_type, const_reference)` constructor.
|
143
149
|
template <typename ForwardIterator,
|
144
|
-
EnableIfAtLeastForwardIterator<ForwardIterator
|
150
|
+
EnableIfAtLeastForwardIterator<ForwardIterator> = 0>
|
145
151
|
InlinedVector(ForwardIterator first, ForwardIterator last,
|
146
|
-
const allocator_type&
|
147
|
-
: storage_(
|
148
|
-
storage_.Initialize(IteratorValueAdapter<ForwardIterator>(first),
|
152
|
+
const allocator_type& allocator = allocator_type())
|
153
|
+
: storage_(allocator) {
|
154
|
+
storage_.Initialize(IteratorValueAdapter<A, ForwardIterator>(first),
|
149
155
|
std::distance(first, last));
|
150
156
|
}
|
151
157
|
|
152
158
|
// Creates an inlined vector with elements constructed from the provided input
|
153
159
|
// iterator range [`first`, `last`).
|
154
160
|
template <typename InputIterator,
|
155
|
-
DisableIfAtLeastForwardIterator<InputIterator
|
161
|
+
DisableIfAtLeastForwardIterator<InputIterator> = 0>
|
156
162
|
InlinedVector(InputIterator first, InputIterator last,
|
157
|
-
const allocator_type&
|
158
|
-
: storage_(
|
163
|
+
const allocator_type& allocator = allocator_type())
|
164
|
+
: storage_(allocator) {
|
159
165
|
std::copy(first, last, std::back_inserter(*this));
|
160
166
|
}
|
161
167
|
|
162
168
|
// Creates an inlined vector by copying the contents of `other` using
|
163
169
|
// `other`'s allocator.
|
164
170
|
InlinedVector(const InlinedVector& other)
|
165
|
-
: InlinedVector(other,
|
171
|
+
: InlinedVector(other, other.storage_.GetAllocator()) {}
|
166
172
|
|
167
|
-
// Creates an inlined vector by copying the contents of `other` using
|
168
|
-
|
169
|
-
|
173
|
+
// Creates an inlined vector by copying the contents of `other` using the
|
174
|
+
// provided `allocator`.
|
175
|
+
InlinedVector(const InlinedVector& other, const allocator_type& allocator)
|
176
|
+
: storage_(allocator) {
|
170
177
|
if (other.empty()) {
|
171
178
|
// Empty; nothing to do.
|
172
|
-
} else if (IsMemcpyOk
|
179
|
+
} else if (IsMemcpyOk<A>::value && !other.storage_.GetIsAllocated()) {
|
173
180
|
// Memcpy-able and do not need allocation.
|
174
181
|
storage_.MemcpyFrom(other.storage_);
|
175
182
|
} else {
|
@@ -194,23 +201,23 @@ class InlinedVector {
|
|
194
201
|
InlinedVector(InlinedVector&& other) noexcept(
|
195
202
|
absl::allocator_is_nothrow<allocator_type>::value ||
|
196
203
|
std::is_nothrow_move_constructible<value_type>::value)
|
197
|
-
: storage_(
|
198
|
-
if (IsMemcpyOk
|
204
|
+
: storage_(other.storage_.GetAllocator()) {
|
205
|
+
if (IsMemcpyOk<A>::value) {
|
199
206
|
storage_.MemcpyFrom(other.storage_);
|
200
207
|
|
201
208
|
other.storage_.SetInlinedSize(0);
|
202
209
|
} else if (other.storage_.GetIsAllocated()) {
|
203
|
-
storage_.
|
204
|
-
|
210
|
+
storage_.SetAllocation({other.storage_.GetAllocatedData(),
|
211
|
+
other.storage_.GetAllocatedCapacity()});
|
205
212
|
storage_.SetAllocatedSize(other.storage_.GetSize());
|
206
213
|
|
207
214
|
other.storage_.SetInlinedSize(0);
|
208
215
|
} else {
|
209
|
-
IteratorValueAdapter<MoveIterator
|
210
|
-
MoveIterator(other.storage_.GetInlinedData()));
|
216
|
+
IteratorValueAdapter<A, MoveIterator<A>> other_values(
|
217
|
+
MoveIterator<A>(other.storage_.GetInlinedData()));
|
211
218
|
|
212
|
-
inlined_vector_internal::ConstructElements(
|
213
|
-
storage_.
|
219
|
+
inlined_vector_internal::ConstructElements<A>(
|
220
|
+
storage_.GetAllocator(), storage_.GetInlinedData(), other_values,
|
214
221
|
other.storage_.GetSize());
|
215
222
|
|
216
223
|
storage_.SetInlinedSize(other.storage_.GetSize());
|
@@ -218,30 +225,32 @@ class InlinedVector {
|
|
218
225
|
}
|
219
226
|
|
220
227
|
// Creates an inlined vector by moving in the contents of `other` with a copy
|
221
|
-
// of `
|
228
|
+
// of `allocator`.
|
222
229
|
//
|
223
|
-
// NOTE: if `other`'s allocator is not equal to `
|
230
|
+
// NOTE: if `other`'s allocator is not equal to `allocator`, even if `other`
|
224
231
|
// contains allocated memory, this move constructor will still allocate. Since
|
225
232
|
// allocation is performed, this constructor can only be `noexcept` if the
|
226
233
|
// specified allocator is also `noexcept`.
|
227
|
-
InlinedVector(
|
228
|
-
|
229
|
-
|
230
|
-
|
234
|
+
InlinedVector(
|
235
|
+
InlinedVector&& other,
|
236
|
+
const allocator_type& allocator)
|
237
|
+
noexcept(absl::allocator_is_nothrow<allocator_type>::value)
|
238
|
+
: storage_(allocator) {
|
239
|
+
if (IsMemcpyOk<A>::value) {
|
231
240
|
storage_.MemcpyFrom(other.storage_);
|
232
241
|
|
233
242
|
other.storage_.SetInlinedSize(0);
|
234
|
-
} else if ((
|
243
|
+
} else if ((storage_.GetAllocator() == other.storage_.GetAllocator()) &&
|
235
244
|
other.storage_.GetIsAllocated()) {
|
236
|
-
storage_.
|
237
|
-
|
245
|
+
storage_.SetAllocation({other.storage_.GetAllocatedData(),
|
246
|
+
other.storage_.GetAllocatedCapacity()});
|
238
247
|
storage_.SetAllocatedSize(other.storage_.GetSize());
|
239
248
|
|
240
249
|
other.storage_.SetInlinedSize(0);
|
241
250
|
} else {
|
242
|
-
storage_.Initialize(
|
243
|
-
|
244
|
-
|
251
|
+
storage_.Initialize(IteratorValueAdapter<A, MoveIterator<A>>(
|
252
|
+
MoveIterator<A>(other.data())),
|
253
|
+
other.size());
|
245
254
|
}
|
246
255
|
}
|
247
256
|
|
@@ -442,7 +451,7 @@ class InlinedVector {
|
|
442
451
|
// `InlinedVector::get_allocator()`
|
443
452
|
//
|
444
453
|
// Returns a copy of the inlined vector's allocator.
|
445
|
-
allocator_type get_allocator() const { return
|
454
|
+
allocator_type get_allocator() const { return storage_.GetAllocator(); }
|
446
455
|
|
447
456
|
// ---------------------------------------------------------------------------
|
448
457
|
// InlinedVector Member Mutators
|
@@ -476,16 +485,16 @@ class InlinedVector {
|
|
476
485
|
// unspecified state.
|
477
486
|
InlinedVector& operator=(InlinedVector&& other) {
|
478
487
|
if (ABSL_PREDICT_TRUE(this != std::addressof(other))) {
|
479
|
-
if (IsMemcpyOk
|
480
|
-
inlined_vector_internal::DestroyElements(storage_.
|
481
|
-
|
488
|
+
if (IsMemcpyOk<A>::value || other.storage_.GetIsAllocated()) {
|
489
|
+
inlined_vector_internal::DestroyElements<A>(storage_.GetAllocator(),
|
490
|
+
data(), size());
|
482
491
|
storage_.DeallocateIfAllocated();
|
483
492
|
storage_.MemcpyFrom(other.storage_);
|
484
493
|
|
485
494
|
other.storage_.SetInlinedSize(0);
|
486
495
|
} else {
|
487
|
-
storage_.Assign(IteratorValueAdapter<MoveIterator
|
488
|
-
MoveIterator(other.storage_.GetInlinedData())),
|
496
|
+
storage_.Assign(IteratorValueAdapter<A, MoveIterator<A>>(
|
497
|
+
MoveIterator<A>(other.storage_.GetInlinedData())),
|
489
498
|
other.size());
|
490
499
|
}
|
491
500
|
}
|
@@ -497,7 +506,7 @@ class InlinedVector {
|
|
497
506
|
//
|
498
507
|
// Replaces the contents of the inlined vector with `n` copies of `v`.
|
499
508
|
void assign(size_type n, const_reference v) {
|
500
|
-
storage_.Assign(CopyValueAdapter(v), n);
|
509
|
+
storage_.Assign(CopyValueAdapter<A>(std::addressof(v)), n);
|
501
510
|
}
|
502
511
|
|
503
512
|
// Overload of `InlinedVector::assign(...)` that replaces the contents of the
|
@@ -511,9 +520,9 @@ class InlinedVector {
|
|
511
520
|
//
|
512
521
|
// NOTE: this overload is for iterators that are "forward" category or better.
|
513
522
|
template <typename ForwardIterator,
|
514
|
-
EnableIfAtLeastForwardIterator<ForwardIterator
|
523
|
+
EnableIfAtLeastForwardIterator<ForwardIterator> = 0>
|
515
524
|
void assign(ForwardIterator first, ForwardIterator last) {
|
516
|
-
storage_.Assign(IteratorValueAdapter<ForwardIterator>(first),
|
525
|
+
storage_.Assign(IteratorValueAdapter<A, ForwardIterator>(first),
|
517
526
|
std::distance(first, last));
|
518
527
|
}
|
519
528
|
|
@@ -522,7 +531,7 @@ class InlinedVector {
|
|
522
531
|
//
|
523
532
|
// NOTE: this overload is for iterators that are "input" category.
|
524
533
|
template <typename InputIterator,
|
525
|
-
DisableIfAtLeastForwardIterator<InputIterator
|
534
|
+
DisableIfAtLeastForwardIterator<InputIterator> = 0>
|
526
535
|
void assign(InputIterator first, InputIterator last) {
|
527
536
|
size_type i = 0;
|
528
537
|
for (; i < size() && first != last; ++i, static_cast<void>(++first)) {
|
@@ -541,7 +550,7 @@ class InlinedVector {
|
|
541
550
|
// is larger than `size()`, new elements are value-initialized.
|
542
551
|
void resize(size_type n) {
|
543
552
|
ABSL_HARDENING_ASSERT(n <= max_size());
|
544
|
-
storage_.Resize(DefaultValueAdapter(), n);
|
553
|
+
storage_.Resize(DefaultValueAdapter<A>(), n);
|
545
554
|
}
|
546
555
|
|
547
556
|
// Overload of `InlinedVector::resize(...)` that resizes the inlined vector to
|
@@ -551,7 +560,7 @@ class InlinedVector {
|
|
551
560
|
// is larger than `size()`, new elements are copied-constructed from `v`.
|
552
561
|
void resize(size_type n, const_reference v) {
|
553
562
|
ABSL_HARDENING_ASSERT(n <= max_size());
|
554
|
-
storage_.Resize(CopyValueAdapter(v), n);
|
563
|
+
storage_.Resize(CopyValueAdapter<A>(std::addressof(v)), n);
|
555
564
|
}
|
556
565
|
|
557
566
|
// `InlinedVector::insert(...)`
|
@@ -564,7 +573,7 @@ class InlinedVector {
|
|
564
573
|
|
565
574
|
// Overload of `InlinedVector::insert(...)` that inserts `v` at `pos` using
|
566
575
|
// move semantics, returning an `iterator` to the newly inserted element.
|
567
|
-
iterator insert(const_iterator pos,
|
576
|
+
iterator insert(const_iterator pos, value_type&& v) {
|
568
577
|
return emplace(pos, std::move(v));
|
569
578
|
}
|
570
579
|
|
@@ -577,7 +586,8 @@ class InlinedVector {
|
|
577
586
|
|
578
587
|
if (ABSL_PREDICT_TRUE(n != 0)) {
|
579
588
|
value_type dealias = v;
|
580
|
-
return storage_.Insert(pos, CopyValueAdapter(dealias),
|
589
|
+
return storage_.Insert(pos, CopyValueAdapter<A>(std::addressof(dealias)),
|
590
|
+
n);
|
581
591
|
} else {
|
582
592
|
return const_cast<iterator>(pos);
|
583
593
|
}
|
@@ -596,14 +606,15 @@ class InlinedVector {
|
|
596
606
|
//
|
597
607
|
// NOTE: this overload is for iterators that are "forward" category or better.
|
598
608
|
template <typename ForwardIterator,
|
599
|
-
EnableIfAtLeastForwardIterator<ForwardIterator
|
609
|
+
EnableIfAtLeastForwardIterator<ForwardIterator> = 0>
|
600
610
|
iterator insert(const_iterator pos, ForwardIterator first,
|
601
611
|
ForwardIterator last) {
|
602
612
|
ABSL_HARDENING_ASSERT(pos >= begin());
|
603
613
|
ABSL_HARDENING_ASSERT(pos <= end());
|
604
614
|
|
605
615
|
if (ABSL_PREDICT_TRUE(first != last)) {
|
606
|
-
return storage_.Insert(pos,
|
616
|
+
return storage_.Insert(pos,
|
617
|
+
IteratorValueAdapter<A, ForwardIterator>(first),
|
607
618
|
std::distance(first, last));
|
608
619
|
} else {
|
609
620
|
return const_cast<iterator>(pos);
|
@@ -616,7 +627,7 @@ class InlinedVector {
|
|
616
627
|
//
|
617
628
|
// NOTE: this overload is for iterators that are "input" category.
|
618
629
|
template <typename InputIterator,
|
619
|
-
DisableIfAtLeastForwardIterator<InputIterator
|
630
|
+
DisableIfAtLeastForwardIterator<InputIterator> = 0>
|
620
631
|
iterator insert(const_iterator pos, InputIterator first, InputIterator last) {
|
621
632
|
ABSL_HARDENING_ASSERT(pos >= begin());
|
622
633
|
ABSL_HARDENING_ASSERT(pos <= end());
|
@@ -640,8 +651,8 @@ class InlinedVector {
|
|
640
651
|
|
641
652
|
value_type dealias(std::forward<Args>(args)...);
|
642
653
|
return storage_.Insert(pos,
|
643
|
-
IteratorValueAdapter<MoveIterator
|
644
|
-
MoveIterator(std::addressof(dealias))),
|
654
|
+
IteratorValueAdapter<A, MoveIterator<A>>(
|
655
|
+
MoveIterator<A>(std::addressof(dealias))),
|
645
656
|
1);
|
646
657
|
}
|
647
658
|
|
@@ -661,7 +672,7 @@ class InlinedVector {
|
|
661
672
|
|
662
673
|
// Overload of `InlinedVector::push_back(...)` for inserting `v` at `end()`
|
663
674
|
// using move semantics.
|
664
|
-
void push_back(
|
675
|
+
void push_back(value_type&& v) {
|
665
676
|
static_cast<void>(emplace_back(std::move(v)));
|
666
677
|
}
|
667
678
|
|
@@ -671,7 +682,7 @@ class InlinedVector {
|
|
671
682
|
void pop_back() noexcept {
|
672
683
|
ABSL_HARDENING_ASSERT(!empty());
|
673
684
|
|
674
|
-
AllocatorTraits
|
685
|
+
AllocatorTraits<A>::destroy(storage_.GetAllocator(), data() + (size() - 1));
|
675
686
|
storage_.SubtractSize(1);
|
676
687
|
}
|
677
688
|
|
@@ -710,8 +721,8 @@ class InlinedVector {
|
|
710
721
|
// Destroys all elements in the inlined vector, setting the size to `0` and
|
711
722
|
// deallocating any held memory.
|
712
723
|
void clear() noexcept {
|
713
|
-
inlined_vector_internal::DestroyElements(storage_.
|
714
|
-
|
724
|
+
inlined_vector_internal::DestroyElements<A>(storage_.GetAllocator(), data(),
|
725
|
+
size());
|
715
726
|
storage_.DeallocateIfAllocated();
|
716
727
|
|
717
728
|
storage_.SetInlinedSize(0);
|
@@ -724,15 +735,12 @@ class InlinedVector {
|
|
724
735
|
|
725
736
|
// `InlinedVector::shrink_to_fit()`
|
726
737
|
//
|
727
|
-
//
|
728
|
-
//
|
729
|
-
//
|
730
|
-
// If `size() <= N` and the inlined vector contains allocated memory, the
|
731
|
-
// elements will all be moved to the inlined space and the allocated memory
|
732
|
-
// will be deallocated.
|
738
|
+
// Attempts to reduce memory usage by moving elements to (or keeping elements
|
739
|
+
// in) the smallest available buffer sufficient for containing `size()`
|
740
|
+
// elements.
|
733
741
|
//
|
734
|
-
// If `size()
|
735
|
-
//
|
742
|
+
// If `size()` is sufficiently small, the elements will be moved into (or kept
|
743
|
+
// in) the inlined space.
|
736
744
|
void shrink_to_fit() {
|
737
745
|
if (storage_.GetIsAllocated()) {
|
738
746
|
storage_.ShrinkToFit();
|
@@ -78,24 +78,26 @@ struct StringHash {
|
|
78
78
|
}
|
79
79
|
};
|
80
80
|
|
81
|
+
struct StringEq {
|
82
|
+
using is_transparent = void;
|
83
|
+
bool operator()(absl::string_view lhs, absl::string_view rhs) const {
|
84
|
+
return lhs == rhs;
|
85
|
+
}
|
86
|
+
bool operator()(const absl::Cord& lhs, const absl::Cord& rhs) const {
|
87
|
+
return lhs == rhs;
|
88
|
+
}
|
89
|
+
bool operator()(const absl::Cord& lhs, absl::string_view rhs) const {
|
90
|
+
return lhs == rhs;
|
91
|
+
}
|
92
|
+
bool operator()(absl::string_view lhs, const absl::Cord& rhs) const {
|
93
|
+
return lhs == rhs;
|
94
|
+
}
|
95
|
+
};
|
96
|
+
|
81
97
|
// Supports heterogeneous lookup for string-like elements.
|
82
98
|
struct StringHashEq {
|
83
99
|
using Hash = StringHash;
|
84
|
-
|
85
|
-
using is_transparent = void;
|
86
|
-
bool operator()(absl::string_view lhs, absl::string_view rhs) const {
|
87
|
-
return lhs == rhs;
|
88
|
-
}
|
89
|
-
bool operator()(const absl::Cord& lhs, const absl::Cord& rhs) const {
|
90
|
-
return lhs == rhs;
|
91
|
-
}
|
92
|
-
bool operator()(const absl::Cord& lhs, absl::string_view rhs) const {
|
93
|
-
return lhs == rhs;
|
94
|
-
}
|
95
|
-
bool operator()(absl::string_view lhs, const absl::Cord& rhs) const {
|
96
|
-
return lhs == rhs;
|
97
|
-
}
|
98
|
-
};
|
100
|
+
using Eq = StringEq;
|
99
101
|
};
|
100
102
|
|
101
103
|
template <>
|
@@ -21,10 +21,11 @@
|
|
21
21
|
#include <limits>
|
22
22
|
|
23
23
|
#include "absl/base/attributes.h"
|
24
|
-
#include "absl/base/internal/exponential_biased.h"
|
25
24
|
#include "absl/container/internal/have_sse.h"
|
26
25
|
#include "absl/debugging/stacktrace.h"
|
27
26
|
#include "absl/memory/memory.h"
|
27
|
+
#include "absl/profiling/internal/exponential_biased.h"
|
28
|
+
#include "absl/profiling/internal/sample_recorder.h"
|
28
29
|
#include "absl/synchronization/mutex.h"
|
29
30
|
|
30
31
|
namespace absl {
|
@@ -37,10 +38,9 @@ ABSL_CONST_INIT std::atomic<bool> g_hashtablez_enabled{
|
|
37
38
|
false
|
38
39
|
};
|
39
40
|
ABSL_CONST_INIT std::atomic<int32_t> g_hashtablez_sample_parameter{1 << 10};
|
40
|
-
ABSL_CONST_INIT std::atomic<int32_t> g_hashtablez_max_samples{1 << 20};
|
41
41
|
|
42
42
|
#if defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
|
43
|
-
ABSL_PER_THREAD_TLS_KEYWORD absl::
|
43
|
+
ABSL_PER_THREAD_TLS_KEYWORD absl::profiling_internal::ExponentialBiased
|
44
44
|
g_exponential_biased_generator;
|
45
45
|
#endif
|
46
46
|
|
@@ -50,16 +50,14 @@ ABSL_PER_THREAD_TLS_KEYWORD absl::base_internal::ExponentialBiased
|
|
50
50
|
ABSL_PER_THREAD_TLS_KEYWORD int64_t global_next_sample = 0;
|
51
51
|
#endif // defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
|
52
52
|
|
53
|
-
HashtablezSampler&
|
53
|
+
HashtablezSampler& GlobalHashtablezSampler() {
|
54
54
|
static auto* sampler = new HashtablezSampler();
|
55
55
|
return *sampler;
|
56
56
|
}
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
}
|
62
|
-
|
58
|
+
// TODO(bradleybear): The comments at this constructors declaration say that the
|
59
|
+
// fields are not initialized, but this definition does initialize the fields.
|
60
|
+
// Something needs to be cleaned up.
|
63
61
|
HashtablezInfo::HashtablezInfo() { PrepareForSampling(); }
|
64
62
|
HashtablezInfo::~HashtablezInfo() = default;
|
65
63
|
|
@@ -73,6 +71,7 @@ void HashtablezInfo::PrepareForSampling() {
|
|
73
71
|
hashes_bitwise_or.store(0, std::memory_order_relaxed);
|
74
72
|
hashes_bitwise_and.store(~size_t{}, std::memory_order_relaxed);
|
75
73
|
hashes_bitwise_xor.store(0, std::memory_order_relaxed);
|
74
|
+
max_reserve.store(0, std::memory_order_relaxed);
|
76
75
|
|
77
76
|
create_time = absl::Now();
|
78
77
|
// The inliner makes hardcoded skip_count difficult (especially when combined
|
@@ -80,93 +79,6 @@ void HashtablezInfo::PrepareForSampling() {
|
|
80
79
|
// instead.
|
81
80
|
depth = absl::GetStackTrace(stack, HashtablezInfo::kMaxStackDepth,
|
82
81
|
/* skip_count= */ 0);
|
83
|
-
dead = nullptr;
|
84
|
-
}
|
85
|
-
|
86
|
-
HashtablezSampler::HashtablezSampler()
|
87
|
-
: dropped_samples_(0), size_estimate_(0), all_(nullptr), dispose_(nullptr) {
|
88
|
-
absl::MutexLock l(&graveyard_.init_mu);
|
89
|
-
graveyard_.dead = &graveyard_;
|
90
|
-
}
|
91
|
-
|
92
|
-
HashtablezSampler::~HashtablezSampler() {
|
93
|
-
HashtablezInfo* s = all_.load(std::memory_order_acquire);
|
94
|
-
while (s != nullptr) {
|
95
|
-
HashtablezInfo* next = s->next;
|
96
|
-
delete s;
|
97
|
-
s = next;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
void HashtablezSampler::PushNew(HashtablezInfo* sample) {
|
102
|
-
sample->next = all_.load(std::memory_order_relaxed);
|
103
|
-
while (!all_.compare_exchange_weak(sample->next, sample,
|
104
|
-
std::memory_order_release,
|
105
|
-
std::memory_order_relaxed)) {
|
106
|
-
}
|
107
|
-
}
|
108
|
-
|
109
|
-
void HashtablezSampler::PushDead(HashtablezInfo* sample) {
|
110
|
-
if (auto* dispose = dispose_.load(std::memory_order_relaxed)) {
|
111
|
-
dispose(*sample);
|
112
|
-
}
|
113
|
-
|
114
|
-
absl::MutexLock graveyard_lock(&graveyard_.init_mu);
|
115
|
-
absl::MutexLock sample_lock(&sample->init_mu);
|
116
|
-
sample->dead = graveyard_.dead;
|
117
|
-
graveyard_.dead = sample;
|
118
|
-
}
|
119
|
-
|
120
|
-
HashtablezInfo* HashtablezSampler::PopDead() {
|
121
|
-
absl::MutexLock graveyard_lock(&graveyard_.init_mu);
|
122
|
-
|
123
|
-
// The list is circular, so eventually it collapses down to
|
124
|
-
// graveyard_.dead == &graveyard_
|
125
|
-
// when it is empty.
|
126
|
-
HashtablezInfo* sample = graveyard_.dead;
|
127
|
-
if (sample == &graveyard_) return nullptr;
|
128
|
-
|
129
|
-
absl::MutexLock sample_lock(&sample->init_mu);
|
130
|
-
graveyard_.dead = sample->dead;
|
131
|
-
sample->PrepareForSampling();
|
132
|
-
return sample;
|
133
|
-
}
|
134
|
-
|
135
|
-
HashtablezInfo* HashtablezSampler::Register() {
|
136
|
-
int64_t size = size_estimate_.fetch_add(1, std::memory_order_relaxed);
|
137
|
-
if (size > g_hashtablez_max_samples.load(std::memory_order_relaxed)) {
|
138
|
-
size_estimate_.fetch_sub(1, std::memory_order_relaxed);
|
139
|
-
dropped_samples_.fetch_add(1, std::memory_order_relaxed);
|
140
|
-
return nullptr;
|
141
|
-
}
|
142
|
-
|
143
|
-
HashtablezInfo* sample = PopDead();
|
144
|
-
if (sample == nullptr) {
|
145
|
-
// Resurrection failed. Hire a new warlock.
|
146
|
-
sample = new HashtablezInfo();
|
147
|
-
PushNew(sample);
|
148
|
-
}
|
149
|
-
|
150
|
-
return sample;
|
151
|
-
}
|
152
|
-
|
153
|
-
void HashtablezSampler::Unregister(HashtablezInfo* sample) {
|
154
|
-
PushDead(sample);
|
155
|
-
size_estimate_.fetch_sub(1, std::memory_order_relaxed);
|
156
|
-
}
|
157
|
-
|
158
|
-
int64_t HashtablezSampler::Iterate(
|
159
|
-
const std::function<void(const HashtablezInfo& stack)>& f) {
|
160
|
-
HashtablezInfo* s = all_.load(std::memory_order_acquire);
|
161
|
-
while (s != nullptr) {
|
162
|
-
absl::MutexLock l(&s->init_mu);
|
163
|
-
if (s->dead == nullptr) {
|
164
|
-
f(*s);
|
165
|
-
}
|
166
|
-
s = s->next;
|
167
|
-
}
|
168
|
-
|
169
|
-
return dropped_samples_.load(std::memory_order_relaxed);
|
170
82
|
}
|
171
83
|
|
172
84
|
static bool ShouldForceSampling() {
|
@@ -189,10 +101,12 @@ static bool ShouldForceSampling() {
|
|
189
101
|
return state == kForce;
|
190
102
|
}
|
191
103
|
|
192
|
-
HashtablezInfo* SampleSlow(int64_t* next_sample) {
|
104
|
+
HashtablezInfo* SampleSlow(int64_t* next_sample, size_t inline_element_size) {
|
193
105
|
if (ABSL_PREDICT_FALSE(ShouldForceSampling())) {
|
194
106
|
*next_sample = 1;
|
195
|
-
|
107
|
+
HashtablezInfo* result = GlobalHashtablezSampler().Register();
|
108
|
+
result->inline_element_size = inline_element_size;
|
109
|
+
return result;
|
196
110
|
}
|
197
111
|
|
198
112
|
#if !defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
|
@@ -214,15 +128,17 @@ HashtablezInfo* SampleSlow(int64_t* next_sample) {
|
|
214
128
|
// that case.
|
215
129
|
if (first) {
|
216
130
|
if (ABSL_PREDICT_TRUE(--*next_sample > 0)) return nullptr;
|
217
|
-
return SampleSlow(next_sample);
|
131
|
+
return SampleSlow(next_sample, inline_element_size);
|
218
132
|
}
|
219
133
|
|
220
|
-
|
134
|
+
HashtablezInfo* result = GlobalHashtablezSampler().Register();
|
135
|
+
result->inline_element_size = inline_element_size;
|
136
|
+
return result;
|
221
137
|
#endif
|
222
138
|
}
|
223
139
|
|
224
140
|
void UnsampleSlow(HashtablezInfo* info) {
|
225
|
-
|
141
|
+
GlobalHashtablezSampler().Unregister(info);
|
226
142
|
}
|
227
143
|
|
228
144
|
void RecordInsertSlow(HashtablezInfo* info, size_t hash,
|
@@ -262,7 +178,7 @@ void SetHashtablezSampleParameter(int32_t rate) {
|
|
262
178
|
|
263
179
|
void SetHashtablezMaxSamples(int32_t max) {
|
264
180
|
if (max > 0) {
|
265
|
-
|
181
|
+
GlobalHashtablezSampler().SetMaxSamples(max);
|
266
182
|
} else {
|
267
183
|
ABSL_RAW_LOG(ERROR, "Invalid hashtablez max samples: %lld",
|
268
184
|
static_cast<long long>(max)); // NOLINT(runtime/int)
|