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
@@ -31,6 +31,8 @@
|
|
31
31
|
#include "absl/debugging/symbolize_win32.inc"
|
32
32
|
#elif defined(__APPLE__)
|
33
33
|
#include "absl/debugging/symbolize_darwin.inc"
|
34
|
+
#elif defined(__EMSCRIPTEN__)
|
35
|
+
#include "absl/debugging/symbolize_emscripten.inc"
|
34
36
|
#else
|
35
37
|
#include "absl/debugging/symbolize_unimplemented.inc"
|
36
38
|
#endif
|
@@ -77,6 +77,10 @@
|
|
77
77
|
#include "absl/debugging/internal/vdso_support.h"
|
78
78
|
#include "absl/strings/string_view.h"
|
79
79
|
|
80
|
+
#if defined(__FreeBSD__) && !defined(ElfW)
|
81
|
+
#define ElfW(x) __ElfN(x)
|
82
|
+
#endif
|
83
|
+
|
80
84
|
namespace absl {
|
81
85
|
ABSL_NAMESPACE_BEGIN
|
82
86
|
|
@@ -701,6 +705,16 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol(
|
|
701
705
|
const char *start_address =
|
702
706
|
ComputeOffset(original_start_address, relocation);
|
703
707
|
|
708
|
+
#ifdef __arm__
|
709
|
+
// ARM functions are always aligned to multiples of two bytes; the
|
710
|
+
// lowest-order bit in start_address is ignored by the CPU and indicates
|
711
|
+
// whether the function contains ARM (0) or Thumb (1) code. We don't care
|
712
|
+
// about what encoding is being used; we just want the real start address
|
713
|
+
// of the function.
|
714
|
+
start_address = reinterpret_cast<const char *>(
|
715
|
+
reinterpret_cast<uintptr_t>(start_address) & ~1);
|
716
|
+
#endif
|
717
|
+
|
704
718
|
if (deref_function_descriptor_pointer &&
|
705
719
|
InSection(original_start_address, opd)) {
|
706
720
|
// The opd section is mapped into memory. Just dereference
|
@@ -0,0 +1,72 @@
|
|
1
|
+
// Copyright 2020 The Abseil Authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include <cxxabi.h>
|
16
|
+
#include <emscripten.h>
|
17
|
+
|
18
|
+
#include <algorithm>
|
19
|
+
#include <cstring>
|
20
|
+
|
21
|
+
#include "absl/base/internal/raw_logging.h"
|
22
|
+
#include "absl/debugging/internal/demangle.h"
|
23
|
+
#include "absl/strings/numbers.h"
|
24
|
+
#include "absl/strings/str_cat.h"
|
25
|
+
#include "absl/strings/string_view.h"
|
26
|
+
|
27
|
+
extern "C" {
|
28
|
+
const char* emscripten_pc_get_function(const void* pc);
|
29
|
+
}
|
30
|
+
|
31
|
+
// clang-format off
|
32
|
+
EM_JS(bool, HaveOffsetConverter, (),
|
33
|
+
{ return typeof wasmOffsetConverter !== 'undefined'; });
|
34
|
+
// clang-format on
|
35
|
+
|
36
|
+
namespace absl {
|
37
|
+
ABSL_NAMESPACE_BEGIN
|
38
|
+
|
39
|
+
void InitializeSymbolizer(const char*) {
|
40
|
+
if (!HaveOffsetConverter()) {
|
41
|
+
ABSL_RAW_LOG(INFO,
|
42
|
+
"Symbolization unavailable. Rebuild with -sWASM=1 "
|
43
|
+
"and -sUSE_OFFSET_CONVERTER=1.");
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
bool Symbolize(const void* pc, char* out, int out_size) {
|
48
|
+
// Check if we have the offset converter necessary for pc_get_function.
|
49
|
+
// Without it, the program will abort().
|
50
|
+
if (!HaveOffsetConverter()) {
|
51
|
+
return false;
|
52
|
+
}
|
53
|
+
const char* func_name = emscripten_pc_get_function(pc);
|
54
|
+
if (func_name == nullptr) {
|
55
|
+
return false;
|
56
|
+
}
|
57
|
+
|
58
|
+
strncpy(out, func_name, out_size);
|
59
|
+
|
60
|
+
if (out[out_size - 1] != '\0') {
|
61
|
+
// strncpy() does not '\0' terminate when it truncates.
|
62
|
+
static constexpr char kEllipsis[] = "...";
|
63
|
+
int ellipsis_size = std::min<int>(sizeof(kEllipsis) - 1, out_size - 1);
|
64
|
+
memcpy(out + out_size - ellipsis_size - 1, kEllipsis, ellipsis_size);
|
65
|
+
out[out_size - 1] = '\0';
|
66
|
+
}
|
67
|
+
|
68
|
+
return true;
|
69
|
+
}
|
70
|
+
|
71
|
+
ABSL_NAMESPACE_END
|
72
|
+
} // namespace absl
|
@@ -50,6 +50,7 @@
|
|
50
50
|
#include <functional>
|
51
51
|
#include <type_traits>
|
52
52
|
|
53
|
+
#include "absl/base/attributes.h"
|
53
54
|
#include "absl/functional/internal/function_ref.h"
|
54
55
|
#include "absl/meta/type_traits.h"
|
55
56
|
|
@@ -98,7 +99,8 @@ class FunctionRef<R(Args...)> {
|
|
98
99
|
public:
|
99
100
|
// Constructs a FunctionRef from any invokable type.
|
100
101
|
template <typename F, typename = EnableIfCompatible<const F&>>
|
101
|
-
|
102
|
+
// NOLINTNEXTLINE(runtime/explicit)
|
103
|
+
FunctionRef(const F& f ABSL_ATTRIBUTE_LIFETIME_BOUND)
|
102
104
|
: invoker_(&absl::functional_internal::InvokeObject<F, R, Args...>) {
|
103
105
|
absl::functional_internal::AssertNonNull(f);
|
104
106
|
ptr_.obj = &f;
|
@@ -122,6 +124,7 @@ class FunctionRef<R(Args...)> {
|
|
122
124
|
// To help prevent subtle lifetime bugs, FunctionRef is not assignable.
|
123
125
|
// Typically, it should only be used as an argument type.
|
124
126
|
FunctionRef& operator=(const FunctionRef& rhs) = delete;
|
127
|
+
FunctionRef(const FunctionRef& rhs) = default;
|
125
128
|
|
126
129
|
// Call the underlying object.
|
127
130
|
R operator()(Args... args) const {
|
@@ -73,6 +73,8 @@
|
|
73
73
|
#ifndef ABSL_HASH_HASH_H_
|
74
74
|
#define ABSL_HASH_HASH_H_
|
75
75
|
|
76
|
+
#include <tuple>
|
77
|
+
|
76
78
|
#include "absl/hash/internal/hash.h"
|
77
79
|
|
78
80
|
namespace absl {
|
@@ -214,6 +216,26 @@ ABSL_NAMESPACE_BEGIN
|
|
214
216
|
template <typename T>
|
215
217
|
using Hash = absl::hash_internal::Hash<T>;
|
216
218
|
|
219
|
+
// HashOf
|
220
|
+
//
|
221
|
+
// absl::HashOf() is a helper that generates a hash from the values of its
|
222
|
+
// arguments. It dispatches to absl::Hash directly, as follows:
|
223
|
+
// * HashOf(t) == absl::Hash<T>{}(t)
|
224
|
+
// * HashOf(a, b, c) == HashOf(std::make_tuple(a, b, c))
|
225
|
+
//
|
226
|
+
// HashOf(a1, a2, ...) == HashOf(b1, b2, ...) is guaranteed when
|
227
|
+
// * The argument lists have pairwise identical C++ types
|
228
|
+
// * a1 == b1 && a2 == b2 && ...
|
229
|
+
//
|
230
|
+
// The requirement that the arguments match in both type and value is critical.
|
231
|
+
// It means that `a == b` does not necessarily imply `HashOf(a) == HashOf(b)` if
|
232
|
+
// `a` and `b` have different types. For example, `HashOf(2) != HashOf(2.0)`.
|
233
|
+
template <int&... ExplicitArgumentBarrier, typename... Types>
|
234
|
+
size_t HashOf(const Types&... values) {
|
235
|
+
auto tuple = std::tie(values...);
|
236
|
+
return absl::Hash<decltype(tuple)>{}(tuple);
|
237
|
+
}
|
238
|
+
|
217
239
|
// HashState
|
218
240
|
//
|
219
241
|
// A type erased version of the hash state concept, for use in user-defined
|
@@ -18,13 +18,12 @@ namespace absl {
|
|
18
18
|
ABSL_NAMESPACE_BEGIN
|
19
19
|
namespace hash_internal {
|
20
20
|
|
21
|
-
uint64_t
|
22
|
-
|
23
|
-
size_t len) {
|
21
|
+
uint64_t MixingHashState::CombineLargeContiguousImpl32(
|
22
|
+
uint64_t state, const unsigned char* first, size_t len) {
|
24
23
|
while (len >= PiecewiseChunkSize()) {
|
25
|
-
state =
|
26
|
-
|
27
|
-
|
24
|
+
state = Mix(state,
|
25
|
+
hash_internal::CityHash32(reinterpret_cast<const char*>(first),
|
26
|
+
PiecewiseChunkSize()));
|
28
27
|
len -= PiecewiseChunkSize();
|
29
28
|
first += PiecewiseChunkSize();
|
30
29
|
}
|
@@ -33,9 +32,8 @@ uint64_t HashState::CombineLargeContiguousImpl32(uint64_t state,
|
|
33
32
|
std::integral_constant<int, 4>{});
|
34
33
|
}
|
35
34
|
|
36
|
-
uint64_t
|
37
|
-
|
38
|
-
size_t len) {
|
35
|
+
uint64_t MixingHashState::CombineLargeContiguousImpl64(
|
36
|
+
uint64_t state, const unsigned char* first, size_t len) {
|
39
37
|
while (len >= PiecewiseChunkSize()) {
|
40
38
|
state = Mix(state, Hash64(first, PiecewiseChunkSize()));
|
41
39
|
len -= PiecewiseChunkSize();
|
@@ -46,23 +44,24 @@ uint64_t HashState::CombineLargeContiguousImpl64(uint64_t state,
|
|
46
44
|
std::integral_constant<int, 8>{});
|
47
45
|
}
|
48
46
|
|
49
|
-
ABSL_CONST_INIT const void* const
|
47
|
+
ABSL_CONST_INIT const void* const MixingHashState::kSeed = &kSeed;
|
50
48
|
|
51
|
-
// The salt array used by
|
52
|
-
// absl::Hash non-deterministic between program invocations. See `Seed()`
|
53
|
-
// that mechanism.
|
49
|
+
// The salt array used by LowLevelHash. This array is NOT the mechanism used to
|
50
|
+
// make absl::Hash non-deterministic between program invocations. See `Seed()`
|
51
|
+
// for that mechanism.
|
54
52
|
//
|
55
53
|
// Any random values are fine. These values are just digits from the decimal
|
56
54
|
// part of pi.
|
57
55
|
// https://en.wikipedia.org/wiki/Nothing-up-my-sleeve_number
|
58
|
-
constexpr uint64_t
|
56
|
+
constexpr uint64_t kHashSalt[5] = {
|
59
57
|
uint64_t{0x243F6A8885A308D3}, uint64_t{0x13198A2E03707344},
|
60
58
|
uint64_t{0xA4093822299F31D0}, uint64_t{0x082EFA98EC4E6C89},
|
61
59
|
uint64_t{0x452821E638D01377},
|
62
60
|
};
|
63
61
|
|
64
|
-
uint64_t
|
65
|
-
|
62
|
+
uint64_t MixingHashState::LowLevelHashImpl(const unsigned char* data,
|
63
|
+
size_t len) {
|
64
|
+
return LowLevelHash(data, len, Seed(), kHashSalt);
|
66
65
|
}
|
67
66
|
|
68
67
|
} // namespace hash_internal
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <algorithm>
|
23
23
|
#include <array>
|
24
|
+
#include <bitset>
|
24
25
|
#include <cmath>
|
25
26
|
#include <cstring>
|
26
27
|
#include <deque>
|
@@ -42,14 +43,14 @@
|
|
42
43
|
#include "absl/base/internal/unaligned_access.h"
|
43
44
|
#include "absl/base/port.h"
|
44
45
|
#include "absl/container/fixed_array.h"
|
45
|
-
#include "absl/hash/internal/
|
46
|
+
#include "absl/hash/internal/city.h"
|
47
|
+
#include "absl/hash/internal/low_level_hash.h"
|
46
48
|
#include "absl/meta/type_traits.h"
|
47
49
|
#include "absl/numeric/int128.h"
|
48
50
|
#include "absl/strings/string_view.h"
|
49
51
|
#include "absl/types/optional.h"
|
50
52
|
#include "absl/types/variant.h"
|
51
53
|
#include "absl/utility/utility.h"
|
52
|
-
#include "absl/hash/internal/city.h"
|
53
54
|
|
54
55
|
namespace absl {
|
55
56
|
ABSL_NAMESPACE_BEGIN
|
@@ -379,7 +380,7 @@ template <typename H, typename... Ts>
|
|
379
380
|
// This SFINAE gets MSVC confused under some conditions. Let's just disable it
|
380
381
|
// for now.
|
381
382
|
H
|
382
|
-
#else
|
383
|
+
#else // _MSC_VER
|
383
384
|
typename std::enable_if<absl::conjunction<is_hashable<Ts>...>::value, H>::type
|
384
385
|
#endif // _MSC_VER
|
385
386
|
AbslHashValue(H hash_state, const std::tuple<Ts...>& t) {
|
@@ -489,8 +490,9 @@ typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
|
|
489
490
|
|
490
491
|
// AbslHashValue for hashing std::vector
|
491
492
|
//
|
492
|
-
// Do not use this for vector<bool
|
493
|
-
//
|
493
|
+
// Do not use this for vector<bool> on platforms that have a working
|
494
|
+
// implementation of std::hash. It does not have a .data(), and a fallback for
|
495
|
+
// std::hash<> is most likely faster.
|
494
496
|
template <typename H, typename T, typename Allocator>
|
495
497
|
typename std::enable_if<is_hashable<T>::value && !std::is_same<T, bool>::value,
|
496
498
|
H>::type
|
@@ -500,6 +502,27 @@ AbslHashValue(H hash_state, const std::vector<T, Allocator>& vector) {
|
|
500
502
|
vector.size());
|
501
503
|
}
|
502
504
|
|
505
|
+
#if defined(ABSL_IS_BIG_ENDIAN) && \
|
506
|
+
(defined(__GLIBCXX__) || defined(__GLIBCPP__))
|
507
|
+
// AbslHashValue for hashing std::vector<bool>
|
508
|
+
//
|
509
|
+
// std::hash in libstdc++ does not work correctly with vector<bool> on Big
|
510
|
+
// Endian platforms therefore we need to implement a custom AbslHashValue for
|
511
|
+
// it. More details on the bug:
|
512
|
+
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531
|
513
|
+
template <typename H, typename T, typename Allocator>
|
514
|
+
typename std::enable_if<is_hashable<T>::value && std::is_same<T, bool>::value,
|
515
|
+
H>::type
|
516
|
+
AbslHashValue(H hash_state, const std::vector<T, Allocator>& vector) {
|
517
|
+
typename H::AbslInternalPiecewiseCombiner combiner;
|
518
|
+
for (const auto& i : vector) {
|
519
|
+
unsigned char c = static_cast<unsigned char>(i);
|
520
|
+
hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c));
|
521
|
+
}
|
522
|
+
return H::combine(combiner.finalize(std::move(hash_state)), vector.size());
|
523
|
+
}
|
524
|
+
#endif
|
525
|
+
|
503
526
|
// -----------------------------------------------------------------------------
|
504
527
|
// AbslHashValue for Ordered Associative Containers
|
505
528
|
// -----------------------------------------------------------------------------
|
@@ -592,9 +615,28 @@ AbslHashValue(H hash_state, const absl::variant<T...>& v) {
|
|
592
615
|
// AbslHashValue for Other Types
|
593
616
|
// -----------------------------------------------------------------------------
|
594
617
|
|
595
|
-
// AbslHashValue for hashing std::bitset is not defined
|
596
|
-
// for vector<bool> (see std::vector above):
|
597
|
-
// and a fallback to std::hash<> is most
|
618
|
+
// AbslHashValue for hashing std::bitset is not defined on Little Endian
|
619
|
+
// platforms, for the same reason as for vector<bool> (see std::vector above):
|
620
|
+
// It does not expose the raw bytes, and a fallback to std::hash<> is most
|
621
|
+
// likely faster.
|
622
|
+
|
623
|
+
#if defined(ABSL_IS_BIG_ENDIAN) && \
|
624
|
+
(defined(__GLIBCXX__) || defined(__GLIBCPP__))
|
625
|
+
// AbslHashValue for hashing std::bitset
|
626
|
+
//
|
627
|
+
// std::hash in libstdc++ does not work correctly with std::bitset on Big Endian
|
628
|
+
// platforms therefore we need to implement a custom AbslHashValue for it. More
|
629
|
+
// details on the bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531
|
630
|
+
template <typename H, size_t N>
|
631
|
+
H AbslHashValue(H hash_state, const std::bitset<N>& set) {
|
632
|
+
typename H::AbslInternalPiecewiseCombiner combiner;
|
633
|
+
for (int i = 0; i < N; i++) {
|
634
|
+
unsigned char c = static_cast<unsigned char>(set[i]);
|
635
|
+
hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c));
|
636
|
+
}
|
637
|
+
return H::combine(combiner.finalize(std::move(hash_state)), N);
|
638
|
+
}
|
639
|
+
#endif
|
598
640
|
|
599
641
|
// -----------------------------------------------------------------------------
|
600
642
|
|
@@ -714,8 +756,8 @@ template <typename T>
|
|
714
756
|
struct is_hashable
|
715
757
|
: std::integral_constant<bool, HashSelect::template Apply<T>::value> {};
|
716
758
|
|
717
|
-
//
|
718
|
-
class ABSL_DLL
|
759
|
+
// MixingHashState
|
760
|
+
class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
|
719
761
|
// absl::uint128 is not an alias or a thin wrapper around the intrinsic.
|
720
762
|
// We use the intrinsic when available to improve performance.
|
721
763
|
#ifdef ABSL_HAVE_INTRINSIC_INT128
|
@@ -734,22 +776,23 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
734
776
|
|
735
777
|
public:
|
736
778
|
// Move only
|
737
|
-
|
738
|
-
|
779
|
+
MixingHashState(MixingHashState&&) = default;
|
780
|
+
MixingHashState& operator=(MixingHashState&&) = default;
|
739
781
|
|
740
|
-
//
|
782
|
+
// MixingHashState::combine_contiguous()
|
741
783
|
//
|
742
784
|
// Fundamental base case for hash recursion: mixes the given range of bytes
|
743
785
|
// into the hash state.
|
744
|
-
static
|
745
|
-
|
746
|
-
|
786
|
+
static MixingHashState combine_contiguous(MixingHashState hash_state,
|
787
|
+
const unsigned char* first,
|
788
|
+
size_t size) {
|
789
|
+
return MixingHashState(
|
747
790
|
CombineContiguousImpl(hash_state.state_, first, size,
|
748
791
|
std::integral_constant<int, sizeof(size_t)>{}));
|
749
792
|
}
|
750
|
-
using
|
793
|
+
using MixingHashState::HashStateBase::combine_contiguous;
|
751
794
|
|
752
|
-
//
|
795
|
+
// MixingHashState::hash()
|
753
796
|
//
|
754
797
|
// For performance reasons in non-opt mode, we specialize this for
|
755
798
|
// integral types.
|
@@ -761,24 +804,24 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
761
804
|
return static_cast<size_t>(Mix(Seed(), static_cast<uint64_t>(value)));
|
762
805
|
}
|
763
806
|
|
764
|
-
// Overload of
|
807
|
+
// Overload of MixingHashState::hash()
|
765
808
|
template <typename T, absl::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
|
766
809
|
static size_t hash(const T& value) {
|
767
|
-
return static_cast<size_t>(combine(
|
810
|
+
return static_cast<size_t>(combine(MixingHashState{}, value).state_);
|
768
811
|
}
|
769
812
|
|
770
813
|
private:
|
771
814
|
// Invoked only once for a given argument; that plus the fact that this is
|
772
815
|
// move-only ensures that there is only one non-moved-from object.
|
773
|
-
|
816
|
+
MixingHashState() : state_(Seed()) {}
|
774
817
|
|
775
818
|
// Workaround for MSVC bug.
|
776
819
|
// We make the type copyable to fix the calling convention, even though we
|
777
820
|
// never actually copy it. Keep it private to not affect the public API of the
|
778
821
|
// type.
|
779
|
-
|
822
|
+
MixingHashState(const MixingHashState&) = default;
|
780
823
|
|
781
|
-
explicit
|
824
|
+
explicit MixingHashState(uint64_t state) : state_(state) {}
|
782
825
|
|
783
826
|
// Implementation of the base case for combine_contiguous where we actually
|
784
827
|
// mix the bytes into the state.
|
@@ -793,7 +836,6 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
793
836
|
std::integral_constant<int, 8>
|
794
837
|
/* sizeof_size_t */);
|
795
838
|
|
796
|
-
|
797
839
|
// Slow dispatch path for calls to CombineContiguousImpl with a size argument
|
798
840
|
// larger than PiecewiseChunkSize(). Has the same effect as calling
|
799
841
|
// CombineContiguousImpl() repeatedly with the chunk stride size.
|
@@ -856,8 +898,15 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
856
898
|
}
|
857
899
|
|
858
900
|
ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Mix(uint64_t state, uint64_t v) {
|
901
|
+
#if defined(__aarch64__)
|
902
|
+
// On AArch64, calculating a 128-bit product is inefficient, because it
|
903
|
+
// requires a sequence of two instructions to calculate the upper and lower
|
904
|
+
// halves of the result.
|
905
|
+
using MultType = uint64_t;
|
906
|
+
#else
|
859
907
|
using MultType =
|
860
908
|
absl::conditional_t<sizeof(size_t) == 4, uint64_t, uint128>;
|
909
|
+
#endif
|
861
910
|
// We do the addition in 64-bit space to make sure the 128-bit
|
862
911
|
// multiplication is fast. If we were to do it as MultType the compiler has
|
863
912
|
// to assume that the high word is non-zero and needs to perform 2
|
@@ -867,16 +916,16 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
867
916
|
return static_cast<uint64_t>(m ^ (m >> (sizeof(m) * 8 / 2)));
|
868
917
|
}
|
869
918
|
|
870
|
-
// An extern to avoid bloat on a direct call to
|
871
|
-
// both the seed and salt parameters.
|
872
|
-
static uint64_t
|
919
|
+
// An extern to avoid bloat on a direct call to LowLevelHash() with fixed
|
920
|
+
// values for both the seed and salt parameters.
|
921
|
+
static uint64_t LowLevelHashImpl(const unsigned char* data, size_t len);
|
873
922
|
|
874
923
|
ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Hash64(const unsigned char* data,
|
875
924
|
size_t len) {
|
876
925
|
#ifdef ABSL_HAVE_INTRINSIC_INT128
|
877
|
-
return
|
926
|
+
return LowLevelHashImpl(data, len);
|
878
927
|
#else
|
879
|
-
return
|
928
|
+
return hash_internal::CityHash64(reinterpret_cast<const char*>(data), len);
|
880
929
|
#endif
|
881
930
|
}
|
882
931
|
|
@@ -911,8 +960,8 @@ class ABSL_DLL HashState : public HashStateBase<HashState> {
|
|
911
960
|
uint64_t state_;
|
912
961
|
};
|
913
962
|
|
914
|
-
//
|
915
|
-
inline uint64_t
|
963
|
+
// MixingHashState::CombineContiguousImpl()
|
964
|
+
inline uint64_t MixingHashState::CombineContiguousImpl(
|
916
965
|
uint64_t state, const unsigned char* first, size_t len,
|
917
966
|
std::integral_constant<int, 4> /* sizeof_size_t */) {
|
918
967
|
// For large values we use CityHash, for small ones we just use a
|
@@ -922,7 +971,7 @@ inline uint64_t HashState::CombineContiguousImpl(
|
|
922
971
|
if (ABSL_PREDICT_FALSE(len > PiecewiseChunkSize())) {
|
923
972
|
return CombineLargeContiguousImpl32(state, first, len);
|
924
973
|
}
|
925
|
-
v =
|
974
|
+
v = hash_internal::CityHash32(reinterpret_cast<const char*>(first), len);
|
926
975
|
} else if (len >= 4) {
|
927
976
|
v = Read4To8(first, len);
|
928
977
|
} else if (len > 0) {
|
@@ -934,12 +983,12 @@ inline uint64_t HashState::CombineContiguousImpl(
|
|
934
983
|
return Mix(state, v);
|
935
984
|
}
|
936
985
|
|
937
|
-
// Overload of
|
938
|
-
inline uint64_t
|
986
|
+
// Overload of MixingHashState::CombineContiguousImpl()
|
987
|
+
inline uint64_t MixingHashState::CombineContiguousImpl(
|
939
988
|
uint64_t state, const unsigned char* first, size_t len,
|
940
989
|
std::integral_constant<int, 8> /* sizeof_size_t */) {
|
941
|
-
// For large values we use
|
942
|
-
// small ones we just use a multiplicative hash.
|
990
|
+
// For large values we use LowLevelHash or CityHash depending on the platform,
|
991
|
+
// for small ones we just use a multiplicative hash.
|
943
992
|
uint64_t v;
|
944
993
|
if (len > 16) {
|
945
994
|
if (ABSL_PREDICT_FALSE(len > PiecewiseChunkSize())) {
|
@@ -976,7 +1025,9 @@ struct PoisonedHash : private AggregateBarrier {
|
|
976
1025
|
|
977
1026
|
template <typename T>
|
978
1027
|
struct HashImpl {
|
979
|
-
size_t operator()(const T& value) const {
|
1028
|
+
size_t operator()(const T& value) const {
|
1029
|
+
return MixingHashState::hash(value);
|
1030
|
+
}
|
980
1031
|
};
|
981
1032
|
|
982
1033
|
template <typename T>
|
@@ -12,23 +12,35 @@
|
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
14
|
|
15
|
-
#include "absl/hash/internal/
|
15
|
+
#include "absl/hash/internal/low_level_hash.h"
|
16
16
|
|
17
17
|
#include "absl/base/internal/unaligned_access.h"
|
18
|
+
#include "absl/numeric/bits.h"
|
18
19
|
#include "absl/numeric/int128.h"
|
19
20
|
|
20
21
|
namespace absl {
|
21
22
|
ABSL_NAMESPACE_BEGIN
|
22
23
|
namespace hash_internal {
|
23
24
|
|
24
|
-
static uint64_t
|
25
|
+
static uint64_t Mix(uint64_t v0, uint64_t v1) {
|
26
|
+
#if !defined(__aarch64__)
|
27
|
+
// The default bit-mixer uses 64x64->128-bit multiplication.
|
25
28
|
absl::uint128 p = v0;
|
26
29
|
p *= v1;
|
27
30
|
return absl::Uint128Low64(p) ^ absl::Uint128High64(p);
|
31
|
+
#else
|
32
|
+
// The default bit-mixer above would perform poorly on some ARM microarchs,
|
33
|
+
// where calculating a 128-bit product requires a sequence of two
|
34
|
+
// instructions with a high combined latency and poor throughput.
|
35
|
+
// Instead, we mix bits using only 64-bit arithmetic, which is faster.
|
36
|
+
uint64_t p = v0 ^ absl::rotl(v1, 40);
|
37
|
+
p *= v1 ^ absl::rotl(v0, 39);
|
38
|
+
return p ^ (p >> 11);
|
39
|
+
#endif
|
28
40
|
}
|
29
41
|
|
30
|
-
uint64_t
|
31
|
-
|
42
|
+
uint64_t LowLevelHash(const void* data, size_t len, uint64_t seed,
|
43
|
+
const uint64_t salt[]) {
|
32
44
|
const uint8_t* ptr = static_cast<const uint8_t*>(data);
|
33
45
|
uint64_t starting_length = static_cast<uint64_t>(len);
|
34
46
|
uint64_t current_state = seed ^ salt[0];
|
@@ -49,12 +61,12 @@ uint64_t Wyhash(const void* data, size_t len, uint64_t seed,
|
|
49
61
|
uint64_t g = absl::base_internal::UnalignedLoad64(ptr + 48);
|
50
62
|
uint64_t h = absl::base_internal::UnalignedLoad64(ptr + 56);
|
51
63
|
|
52
|
-
uint64_t cs0 =
|
53
|
-
uint64_t cs1 =
|
64
|
+
uint64_t cs0 = Mix(a ^ salt[1], b ^ current_state);
|
65
|
+
uint64_t cs1 = Mix(c ^ salt[2], d ^ current_state);
|
54
66
|
current_state = (cs0 ^ cs1);
|
55
67
|
|
56
|
-
uint64_t ds0 =
|
57
|
-
uint64_t ds1 =
|
68
|
+
uint64_t ds0 = Mix(e ^ salt[3], f ^ duplicated_state);
|
69
|
+
uint64_t ds1 = Mix(g ^ salt[4], h ^ duplicated_state);
|
58
70
|
duplicated_state = (ds0 ^ ds1);
|
59
71
|
|
60
72
|
ptr += 64;
|
@@ -70,7 +82,7 @@ uint64_t Wyhash(const void* data, size_t len, uint64_t seed,
|
|
70
82
|
uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
|
71
83
|
uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
|
72
84
|
|
73
|
-
current_state =
|
85
|
+
current_state = Mix(a ^ salt[1], b ^ current_state);
|
74
86
|
|
75
87
|
ptr += 16;
|
76
88
|
len -= 16;
|
@@ -101,9 +113,9 @@ uint64_t Wyhash(const void* data, size_t len, uint64_t seed,
|
|
101
113
|
b = 0;
|
102
114
|
}
|
103
115
|
|
104
|
-
uint64_t w =
|
116
|
+
uint64_t w = Mix(a ^ salt[1], b ^ current_state);
|
105
117
|
uint64_t z = salt[1] ^ starting_length;
|
106
|
-
return
|
118
|
+
return Mix(w, z);
|
107
119
|
}
|
108
120
|
|
109
121
|
} // namespace hash_internal
|
@@ -12,16 +12,18 @@
|
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
14
|
//
|
15
|
-
// This file provides the Google-internal implementation of
|
16
|
-
// algorithm.
|
15
|
+
// This file provides the Google-internal implementation of LowLevelHash.
|
17
16
|
//
|
18
|
-
//
|
19
|
-
// (late 2020) found that passes the SMHasher tests. The algorithm
|
20
|
-
// intrinsic 128-bit multiplication for speed. This is not meant to be
|
21
|
-
// just fast.
|
17
|
+
// LowLevelHash is a fast hash function for hash tables, the fastest we've
|
18
|
+
// currently (late 2020) found that passes the SMHasher tests. The algorithm
|
19
|
+
// relies on intrinsic 128-bit multiplication for speed. This is not meant to be
|
20
|
+
// secure - just fast.
|
21
|
+
//
|
22
|
+
// It is closely based on a version of wyhash, but does not maintain or
|
23
|
+
// guarantee future compatibility with it.
|
22
24
|
|
23
|
-
#ifndef
|
24
|
-
#define
|
25
|
+
#ifndef ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
|
26
|
+
#define ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
|
25
27
|
|
26
28
|
#include <stdint.h>
|
27
29
|
#include <stdlib.h>
|
@@ -36,13 +38,13 @@ namespace hash_internal {
|
|
36
38
|
// integers are hashed into the result.
|
37
39
|
//
|
38
40
|
// To allow all hashable types (including string_view and Span) to depend on
|
39
|
-
// this
|
41
|
+
// this algorithm, we keep the API low-level, with as few dependencies as
|
40
42
|
// possible.
|
41
|
-
uint64_t
|
42
|
-
|
43
|
+
uint64_t LowLevelHash(const void* data, size_t len, uint64_t seed,
|
44
|
+
const uint64_t salt[5]);
|
43
45
|
|
44
46
|
} // namespace hash_internal
|
45
47
|
ABSL_NAMESPACE_END
|
46
48
|
} // namespace absl
|
47
49
|
|
48
|
-
#endif //
|
50
|
+
#endif // ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
|
@@ -420,7 +420,7 @@ struct pointer_traits<T*> {
|
|
420
420
|
//
|
421
421
|
// A C++11 compatible implementation of C++17's std::allocator_traits.
|
422
422
|
//
|
423
|
-
#if __cplusplus >= 201703L
|
423
|
+
#if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
|
424
424
|
using std::allocator_traits;
|
425
425
|
#else // __cplusplus >= 201703L
|
426
426
|
template <typename Alloc>
|