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
@@ -361,43 +361,49 @@ inline void SubstituteAndAppend(
|
|
361
361
|
// This body of functions catches cases where the number of placeholders
|
362
362
|
// doesn't match the number of data arguments.
|
363
363
|
void SubstituteAndAppend(std::string* output, const char* format)
|
364
|
-
ABSL_BAD_CALL_IF(
|
365
|
-
|
366
|
-
|
364
|
+
ABSL_BAD_CALL_IF(
|
365
|
+
substitute_internal::PlaceholderBitmask(format) != 0,
|
366
|
+
"There were no substitution arguments "
|
367
|
+
"but this format string either has a $[0-9] in it or contains "
|
368
|
+
"an unescaped $ character (use $$ instead)");
|
367
369
|
|
368
370
|
void SubstituteAndAppend(std::string* output, const char* format,
|
369
371
|
const substitute_internal::Arg& a0)
|
370
372
|
ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 1,
|
371
373
|
"There was 1 substitution argument given, but "
|
372
|
-
"this format string is
|
373
|
-
"
|
374
|
+
"this format string is missing its $0, contains "
|
375
|
+
"one of $1-$9, or contains an unescaped $ character (use "
|
376
|
+
"$$ instead)");
|
374
377
|
|
375
378
|
void SubstituteAndAppend(std::string* output, const char* format,
|
376
379
|
const substitute_internal::Arg& a0,
|
377
380
|
const substitute_internal::Arg& a1)
|
378
|
-
ABSL_BAD_CALL_IF(
|
379
|
-
|
380
|
-
|
381
|
-
|
381
|
+
ABSL_BAD_CALL_IF(
|
382
|
+
substitute_internal::PlaceholderBitmask(format) != 3,
|
383
|
+
"There were 2 substitution arguments given, but this format string is "
|
384
|
+
"missing its $0/$1, contains one of $2-$9, or contains an "
|
385
|
+
"unescaped $ character (use $$ instead)");
|
382
386
|
|
383
387
|
void SubstituteAndAppend(std::string* output, const char* format,
|
384
388
|
const substitute_internal::Arg& a0,
|
385
389
|
const substitute_internal::Arg& a1,
|
386
390
|
const substitute_internal::Arg& a2)
|
387
|
-
ABSL_BAD_CALL_IF(
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
+
ABSL_BAD_CALL_IF(
|
392
|
+
substitute_internal::PlaceholderBitmask(format) != 7,
|
393
|
+
"There were 3 substitution arguments given, but "
|
394
|
+
"this format string is missing its $0/$1/$2, contains one of "
|
395
|
+
"$3-$9, or contains an unescaped $ character (use $$ instead)");
|
391
396
|
|
392
397
|
void SubstituteAndAppend(std::string* output, const char* format,
|
393
398
|
const substitute_internal::Arg& a0,
|
394
399
|
const substitute_internal::Arg& a1,
|
395
400
|
const substitute_internal::Arg& a2,
|
396
401
|
const substitute_internal::Arg& a3)
|
397
|
-
ABSL_BAD_CALL_IF(
|
398
|
-
|
399
|
-
|
400
|
-
|
402
|
+
ABSL_BAD_CALL_IF(
|
403
|
+
substitute_internal::PlaceholderBitmask(format) != 15,
|
404
|
+
"There were 4 substitution arguments given, but "
|
405
|
+
"this format string is missing its $0-$3, contains one of "
|
406
|
+
"$4-$9, or contains an unescaped $ character (use $$ instead)");
|
401
407
|
|
402
408
|
void SubstituteAndAppend(std::string* output, const char* format,
|
403
409
|
const substitute_internal::Arg& a0,
|
@@ -405,10 +411,11 @@ void SubstituteAndAppend(std::string* output, const char* format,
|
|
405
411
|
const substitute_internal::Arg& a2,
|
406
412
|
const substitute_internal::Arg& a3,
|
407
413
|
const substitute_internal::Arg& a4)
|
408
|
-
ABSL_BAD_CALL_IF(
|
409
|
-
|
410
|
-
|
411
|
-
|
414
|
+
ABSL_BAD_CALL_IF(
|
415
|
+
substitute_internal::PlaceholderBitmask(format) != 31,
|
416
|
+
"There were 5 substitution arguments given, but "
|
417
|
+
"this format string is missing its $0-$4, contains one of "
|
418
|
+
"$5-$9, or contains an unescaped $ character (use $$ instead)");
|
412
419
|
|
413
420
|
void SubstituteAndAppend(std::string* output, const char* format,
|
414
421
|
const substitute_internal::Arg& a0,
|
@@ -417,20 +424,22 @@ void SubstituteAndAppend(std::string* output, const char* format,
|
|
417
424
|
const substitute_internal::Arg& a3,
|
418
425
|
const substitute_internal::Arg& a4,
|
419
426
|
const substitute_internal::Arg& a5)
|
420
|
-
ABSL_BAD_CALL_IF(
|
421
|
-
|
422
|
-
|
423
|
-
|
427
|
+
ABSL_BAD_CALL_IF(
|
428
|
+
substitute_internal::PlaceholderBitmask(format) != 63,
|
429
|
+
"There were 6 substitution arguments given, but "
|
430
|
+
"this format string is missing its $0-$5, contains one of "
|
431
|
+
"$6-$9, or contains an unescaped $ character (use $$ instead)");
|
424
432
|
|
425
433
|
void SubstituteAndAppend(
|
426
434
|
std::string* output, const char* format, const substitute_internal::Arg& a0,
|
427
435
|
const substitute_internal::Arg& a1, const substitute_internal::Arg& a2,
|
428
436
|
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
|
429
437
|
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6)
|
430
|
-
ABSL_BAD_CALL_IF(
|
431
|
-
|
432
|
-
|
433
|
-
|
438
|
+
ABSL_BAD_CALL_IF(
|
439
|
+
substitute_internal::PlaceholderBitmask(format) != 127,
|
440
|
+
"There were 7 substitution arguments given, but "
|
441
|
+
"this format string is missing its $0-$6, contains one of "
|
442
|
+
"$7-$9, or contains an unescaped $ character (use $$ instead)");
|
434
443
|
|
435
444
|
void SubstituteAndAppend(
|
436
445
|
std::string* output, const char* format, const substitute_internal::Arg& a0,
|
@@ -438,10 +447,11 @@ void SubstituteAndAppend(
|
|
438
447
|
const substitute_internal::Arg& a3, const substitute_internal::Arg& a4,
|
439
448
|
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
|
440
449
|
const substitute_internal::Arg& a7)
|
441
|
-
ABSL_BAD_CALL_IF(
|
442
|
-
|
443
|
-
|
444
|
-
|
450
|
+
ABSL_BAD_CALL_IF(
|
451
|
+
substitute_internal::PlaceholderBitmask(format) != 255,
|
452
|
+
"There were 8 substitution arguments given, but "
|
453
|
+
"this format string is missing its $0-$7, contains one of "
|
454
|
+
"$8-$9, or contains an unescaped $ character (use $$ instead)");
|
445
455
|
|
446
456
|
void SubstituteAndAppend(
|
447
457
|
std::string* output, const char* format, const substitute_internal::Arg& a0,
|
@@ -452,7 +462,8 @@ void SubstituteAndAppend(
|
|
452
462
|
ABSL_BAD_CALL_IF(
|
453
463
|
substitute_internal::PlaceholderBitmask(format) != 511,
|
454
464
|
"There were 9 substitution arguments given, but "
|
455
|
-
"this format string is
|
465
|
+
"this format string is missing its $0-$8, contains a $9, or "
|
466
|
+
"contains an unescaped $ character (use $$ instead)");
|
456
467
|
|
457
468
|
void SubstituteAndAppend(
|
458
469
|
std::string* output, const char* format, const substitute_internal::Arg& a0,
|
@@ -461,9 +472,11 @@ void SubstituteAndAppend(
|
|
461
472
|
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
|
462
473
|
const substitute_internal::Arg& a7, const substitute_internal::Arg& a8,
|
463
474
|
const substitute_internal::Arg& a9)
|
464
|
-
ABSL_BAD_CALL_IF(
|
465
|
-
|
466
|
-
|
475
|
+
ABSL_BAD_CALL_IF(
|
476
|
+
substitute_internal::PlaceholderBitmask(format) != 1023,
|
477
|
+
"There were 10 substitution arguments given, but this "
|
478
|
+
"format string either doesn't contain all of $0 through $9 or "
|
479
|
+
"contains an unescaped $ character (use $$ instead)");
|
467
480
|
#endif // ABSL_BAD_CALL_IF
|
468
481
|
|
469
482
|
// Substitute()
|
@@ -589,47 +602,53 @@ ABSL_MUST_USE_RESULT inline std::string Substitute(
|
|
589
602
|
std::string Substitute(const char* format)
|
590
603
|
ABSL_BAD_CALL_IF(substitute_internal::PlaceholderBitmask(format) != 0,
|
591
604
|
"There were no substitution arguments "
|
592
|
-
"but this format string has a $[0-9] in it"
|
605
|
+
"but this format string either has a $[0-9] in it or "
|
606
|
+
"contains an unescaped $ character (use $$ instead)");
|
593
607
|
|
594
608
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0)
|
595
|
-
ABSL_BAD_CALL_IF(
|
596
|
-
|
597
|
-
|
598
|
-
|
609
|
+
ABSL_BAD_CALL_IF(
|
610
|
+
substitute_internal::PlaceholderBitmask(format) != 1,
|
611
|
+
"There was 1 substitution argument given, but "
|
612
|
+
"this format string is missing its $0, contains one of $1-$9, "
|
613
|
+
"or contains an unescaped $ character (use $$ instead)");
|
599
614
|
|
600
615
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
601
616
|
const substitute_internal::Arg& a1)
|
602
|
-
ABSL_BAD_CALL_IF(
|
603
|
-
|
604
|
-
|
605
|
-
|
617
|
+
ABSL_BAD_CALL_IF(
|
618
|
+
substitute_internal::PlaceholderBitmask(format) != 3,
|
619
|
+
"There were 2 substitution arguments given, but "
|
620
|
+
"this format string is missing its $0/$1, contains one of "
|
621
|
+
"$2-$9, or contains an unescaped $ character (use $$ instead)");
|
606
622
|
|
607
623
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
608
624
|
const substitute_internal::Arg& a1,
|
609
625
|
const substitute_internal::Arg& a2)
|
610
|
-
ABSL_BAD_CALL_IF(
|
611
|
-
|
612
|
-
|
613
|
-
|
626
|
+
ABSL_BAD_CALL_IF(
|
627
|
+
substitute_internal::PlaceholderBitmask(format) != 7,
|
628
|
+
"There were 3 substitution arguments given, but "
|
629
|
+
"this format string is missing its $0/$1/$2, contains one of "
|
630
|
+
"$3-$9, or contains an unescaped $ character (use $$ instead)");
|
614
631
|
|
615
632
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
616
633
|
const substitute_internal::Arg& a1,
|
617
634
|
const substitute_internal::Arg& a2,
|
618
635
|
const substitute_internal::Arg& a3)
|
619
|
-
ABSL_BAD_CALL_IF(
|
620
|
-
|
621
|
-
|
622
|
-
|
636
|
+
ABSL_BAD_CALL_IF(
|
637
|
+
substitute_internal::PlaceholderBitmask(format) != 15,
|
638
|
+
"There were 4 substitution arguments given, but "
|
639
|
+
"this format string is missing its $0-$3, contains one of "
|
640
|
+
"$4-$9, or contains an unescaped $ character (use $$ instead)");
|
623
641
|
|
624
642
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
625
643
|
const substitute_internal::Arg& a1,
|
626
644
|
const substitute_internal::Arg& a2,
|
627
645
|
const substitute_internal::Arg& a3,
|
628
646
|
const substitute_internal::Arg& a4)
|
629
|
-
ABSL_BAD_CALL_IF(
|
630
|
-
|
631
|
-
|
632
|
-
|
647
|
+
ABSL_BAD_CALL_IF(
|
648
|
+
substitute_internal::PlaceholderBitmask(format) != 31,
|
649
|
+
"There were 5 substitution arguments given, but "
|
650
|
+
"this format string is missing its $0-$4, contains one of "
|
651
|
+
"$5-$9, or contains an unescaped $ character (use $$ instead)");
|
633
652
|
|
634
653
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
635
654
|
const substitute_internal::Arg& a1,
|
@@ -637,10 +656,11 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
|
637
656
|
const substitute_internal::Arg& a3,
|
638
657
|
const substitute_internal::Arg& a4,
|
639
658
|
const substitute_internal::Arg& a5)
|
640
|
-
ABSL_BAD_CALL_IF(
|
641
|
-
|
642
|
-
|
643
|
-
|
659
|
+
ABSL_BAD_CALL_IF(
|
660
|
+
substitute_internal::PlaceholderBitmask(format) != 63,
|
661
|
+
"There were 6 substitution arguments given, but "
|
662
|
+
"this format string is missing its $0-$5, contains one of "
|
663
|
+
"$6-$9, or contains an unescaped $ character (use $$ instead)");
|
644
664
|
|
645
665
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
646
666
|
const substitute_internal::Arg& a1,
|
@@ -649,10 +669,11 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
|
649
669
|
const substitute_internal::Arg& a4,
|
650
670
|
const substitute_internal::Arg& a5,
|
651
671
|
const substitute_internal::Arg& a6)
|
652
|
-
ABSL_BAD_CALL_IF(
|
653
|
-
|
654
|
-
|
655
|
-
|
672
|
+
ABSL_BAD_CALL_IF(
|
673
|
+
substitute_internal::PlaceholderBitmask(format) != 127,
|
674
|
+
"There were 7 substitution arguments given, but "
|
675
|
+
"this format string is missing its $0-$6, contains one of "
|
676
|
+
"$7-$9, or contains an unescaped $ character (use $$ instead)");
|
656
677
|
|
657
678
|
std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
658
679
|
const substitute_internal::Arg& a1,
|
@@ -662,10 +683,11 @@ std::string Substitute(const char* format, const substitute_internal::Arg& a0,
|
|
662
683
|
const substitute_internal::Arg& a5,
|
663
684
|
const substitute_internal::Arg& a6,
|
664
685
|
const substitute_internal::Arg& a7)
|
665
|
-
ABSL_BAD_CALL_IF(
|
666
|
-
|
667
|
-
|
668
|
-
|
686
|
+
ABSL_BAD_CALL_IF(
|
687
|
+
substitute_internal::PlaceholderBitmask(format) != 255,
|
688
|
+
"There were 8 substitution arguments given, but "
|
689
|
+
"this format string is missing its $0-$7, contains one of "
|
690
|
+
"$8-$9, or contains an unescaped $ character (use $$ instead)");
|
669
691
|
|
670
692
|
std::string Substitute(
|
671
693
|
const char* format, const substitute_internal::Arg& a0,
|
@@ -676,7 +698,8 @@ std::string Substitute(
|
|
676
698
|
ABSL_BAD_CALL_IF(
|
677
699
|
substitute_internal::PlaceholderBitmask(format) != 511,
|
678
700
|
"There were 9 substitution arguments given, but "
|
679
|
-
"this format string is
|
701
|
+
"this format string is missing its $0-$8, contains a $9, or "
|
702
|
+
"contains an unescaped $ character (use $$ instead)");
|
680
703
|
|
681
704
|
std::string Substitute(
|
682
705
|
const char* format, const substitute_internal::Arg& a0,
|
@@ -685,9 +708,11 @@ std::string Substitute(
|
|
685
708
|
const substitute_internal::Arg& a5, const substitute_internal::Arg& a6,
|
686
709
|
const substitute_internal::Arg& a7, const substitute_internal::Arg& a8,
|
687
710
|
const substitute_internal::Arg& a9)
|
688
|
-
ABSL_BAD_CALL_IF(
|
689
|
-
|
690
|
-
|
711
|
+
ABSL_BAD_CALL_IF(
|
712
|
+
substitute_internal::PlaceholderBitmask(format) != 1023,
|
713
|
+
"There were 10 substitution arguments given, but this "
|
714
|
+
"format string either doesn't contain all of $0 through $9 or "
|
715
|
+
"contains an unescaped $ character (use $$ instead)");
|
691
716
|
#endif // ABSL_BAD_CALL_IF
|
692
717
|
|
693
718
|
ABSL_NAMESPACE_END
|
@@ -14,41 +14,51 @@
|
|
14
14
|
|
15
15
|
#include "absl/synchronization/blocking_counter.h"
|
16
16
|
|
17
|
+
#include <atomic>
|
18
|
+
|
17
19
|
#include "absl/base/internal/raw_logging.h"
|
18
20
|
|
19
21
|
namespace absl {
|
20
22
|
ABSL_NAMESPACE_BEGIN
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
namespace {
|
25
|
+
|
26
|
+
// Return whether int *arg is true.
|
27
|
+
bool IsDone(void *arg) { return *reinterpret_cast<bool *>(arg); }
|
28
|
+
|
29
|
+
} // namespace
|
30
|
+
|
31
|
+
BlockingCounter::BlockingCounter(int initial_count)
|
32
|
+
: count_(initial_count),
|
33
|
+
num_waiting_(0),
|
34
|
+
done_{initial_count == 0 ? true : false} {
|
35
|
+
ABSL_RAW_CHECK(initial_count >= 0, "BlockingCounter initial_count negative");
|
25
36
|
}
|
26
37
|
|
27
38
|
bool BlockingCounter::DecrementCount() {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
39
|
+
int count = count_.fetch_sub(1, std::memory_order_acq_rel) - 1;
|
40
|
+
ABSL_RAW_CHECK(count >= 0,
|
41
|
+
"BlockingCounter::DecrementCount() called too many times");
|
42
|
+
if (count == 0) {
|
43
|
+
MutexLock l(&lock_);
|
44
|
+
done_ = true;
|
45
|
+
return true;
|
35
46
|
}
|
36
|
-
return
|
47
|
+
return false;
|
37
48
|
}
|
38
49
|
|
39
50
|
void BlockingCounter::Wait() {
|
40
51
|
MutexLock l(&this->lock_);
|
41
|
-
ABSL_RAW_CHECK(count_ >= 0, "BlockingCounter underflow");
|
42
52
|
|
43
53
|
// only one thread may call Wait(). To support more than one thread,
|
44
54
|
// implement a counter num_to_exit, like in the Barrier class.
|
45
55
|
ABSL_RAW_CHECK(num_waiting_ == 0, "multiple threads called Wait()");
|
46
56
|
num_waiting_++;
|
47
57
|
|
48
|
-
this->lock_.Await(Condition(
|
58
|
+
this->lock_.Await(Condition(IsDone, &this->done_));
|
49
59
|
|
50
|
-
// At this point,
|
51
|
-
//
|
60
|
+
// At this point, we know that all threads executing DecrementCount
|
61
|
+
// will not touch this object again.
|
52
62
|
// Therefore, the thread calling this method is free to delete the object
|
53
63
|
// after we return from this method.
|
54
64
|
}
|
@@ -20,6 +20,8 @@
|
|
20
20
|
#ifndef ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_
|
21
21
|
#define ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_
|
22
22
|
|
23
|
+
#include <atomic>
|
24
|
+
|
23
25
|
#include "absl/base/thread_annotations.h"
|
24
26
|
#include "absl/synchronization/mutex.h"
|
25
27
|
|
@@ -60,8 +62,7 @@ ABSL_NAMESPACE_BEGIN
|
|
60
62
|
//
|
61
63
|
class BlockingCounter {
|
62
64
|
public:
|
63
|
-
explicit BlockingCounter(int initial_count)
|
64
|
-
: count_(initial_count), num_waiting_(0) {}
|
65
|
+
explicit BlockingCounter(int initial_count);
|
65
66
|
|
66
67
|
BlockingCounter(const BlockingCounter&) = delete;
|
67
68
|
BlockingCounter& operator=(const BlockingCounter&) = delete;
|
@@ -89,8 +90,9 @@ class BlockingCounter {
|
|
89
90
|
|
90
91
|
private:
|
91
92
|
Mutex lock_;
|
92
|
-
int count_
|
93
|
+
std::atomic<int> count_;
|
93
94
|
int num_waiting_ ABSL_GUARDED_BY(lock_);
|
95
|
+
bool done_ ABSL_GUARDED_BY(lock_);
|
94
96
|
};
|
95
97
|
|
96
98
|
ABSL_NAMESPACE_END
|
@@ -79,6 +79,7 @@ bool Waiter::Wait(KernelTimeout t) {
|
|
79
79
|
// Note that, since the thread ticker is just reset, we don't need to check
|
80
80
|
// whether the thread is idle on the very first pass of the loop.
|
81
81
|
bool first_pass = true;
|
82
|
+
|
82
83
|
while (true) {
|
83
84
|
int32_t x = futex_.load(std::memory_order_relaxed);
|
84
85
|
while (x != 0) {
|
@@ -90,7 +91,6 @@ bool Waiter::Wait(KernelTimeout t) {
|
|
90
91
|
return true; // Consumed a wakeup, we are done.
|
91
92
|
}
|
92
93
|
|
93
|
-
|
94
94
|
if (!first_pass) MaybeBecomeIdle();
|
95
95
|
const int err = Futex::WaitUntil(&futex_, 0, t);
|
96
96
|
if (err != 0) {
|
@@ -778,9 +778,9 @@ class Condition {
|
|
778
778
|
//
|
779
779
|
// Usage to wake T is:
|
780
780
|
// mu.Lock();
|
781
|
-
//
|
782
|
-
//
|
783
|
-
//
|
781
|
+
// // process data, possibly establishing C
|
782
|
+
// if (C) { cv->Signal(); }
|
783
|
+
// mu.Unlock();
|
784
784
|
//
|
785
785
|
// If C may be useful to more than one waiter, use `SignalAll()` instead of
|
786
786
|
// `Signal()`.
|
@@ -38,9 +38,7 @@ std::string FormatYearAnd(string_view fmt, CivilSecond cs) {
|
|
38
38
|
const CivilSecond ncs(NormalizeYear(cs.year()), cs.month(), cs.day(),
|
39
39
|
cs.hour(), cs.minute(), cs.second());
|
40
40
|
const TimeZone utc = UTCTimeZone();
|
41
|
-
|
42
|
-
return StrCat(cs.year(),
|
43
|
-
FormatTime(std::string(fmt), FromCivil(ncs, utc), utc));
|
41
|
+
return StrCat(cs.year(), FormatTime(fmt, FromCivil(ncs, utc), utc));
|
44
42
|
}
|
45
43
|
|
46
44
|
template <typename CivilT>
|
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
#include <chrono>
|
24
24
|
#include <cstdint>
|
25
|
+
#include <limits>
|
25
26
|
#include <string>
|
26
27
|
#include <utility>
|
27
28
|
|
@@ -41,20 +42,9 @@ using sys_seconds = seconds; // Deprecated. Use cctz::seconds instead.
|
|
41
42
|
|
42
43
|
namespace detail {
|
43
44
|
template <typename D>
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
auto sub = tp - sec;
|
48
|
-
if (sub.count() < 0) {
|
49
|
-
sec -= seconds(1);
|
50
|
-
sub += seconds(1);
|
51
|
-
}
|
52
|
-
return {sec, std::chrono::duration_cast<D>(sub)};
|
53
|
-
}
|
54
|
-
inline std::pair<time_point<seconds>, seconds> split_seconds(
|
55
|
-
const time_point<seconds>& tp) {
|
56
|
-
return {tp, seconds::zero()};
|
57
|
-
}
|
45
|
+
std::pair<time_point<seconds>, D> split_seconds(const time_point<D>& tp);
|
46
|
+
std::pair<time_point<seconds>, seconds> split_seconds(
|
47
|
+
const time_point<seconds>& tp);
|
58
48
|
} // namespace detail
|
59
49
|
|
60
50
|
// cctz::time_zone is an opaque, small, value-type class representing a
|
@@ -279,6 +269,20 @@ std::string format(const std::string&, const time_point<seconds>&,
|
|
279
269
|
const femtoseconds&, const time_zone&);
|
280
270
|
bool parse(const std::string&, const std::string&, const time_zone&,
|
281
271
|
time_point<seconds>*, femtoseconds*, std::string* err = nullptr);
|
272
|
+
template <typename Rep, std::intmax_t Denom>
|
273
|
+
bool join_seconds(
|
274
|
+
const time_point<seconds>& sec, const femtoseconds& fs,
|
275
|
+
time_point<std::chrono::duration<Rep, std::ratio<1, Denom>>>* tpp);
|
276
|
+
template <typename Rep, std::intmax_t Num>
|
277
|
+
bool join_seconds(
|
278
|
+
const time_point<seconds>& sec, const femtoseconds& fs,
|
279
|
+
time_point<std::chrono::duration<Rep, std::ratio<Num, 1>>>* tpp);
|
280
|
+
template <typename Rep>
|
281
|
+
bool join_seconds(
|
282
|
+
const time_point<seconds>& sec, const femtoseconds& fs,
|
283
|
+
time_point<std::chrono::duration<Rep, std::ratio<1, 1>>>* tpp);
|
284
|
+
bool join_seconds(const time_point<seconds>& sec, const femtoseconds&,
|
285
|
+
time_point<seconds>* tpp);
|
282
286
|
} // namespace detail
|
283
287
|
|
284
288
|
// Formats the given time_point in the given cctz::time_zone according to
|
@@ -369,15 +373,84 @@ inline bool parse(const std::string& fmt, const std::string& input,
|
|
369
373
|
const time_zone& tz, time_point<D>* tpp) {
|
370
374
|
time_point<seconds> sec;
|
371
375
|
detail::femtoseconds fs;
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
376
|
+
return detail::parse(fmt, input, tz, &sec, &fs) &&
|
377
|
+
detail::join_seconds(sec, fs, tpp);
|
378
|
+
}
|
379
|
+
|
380
|
+
namespace detail {
|
381
|
+
|
382
|
+
// Split a time_point<D> into a time_point<seconds> and a D subseconds.
|
383
|
+
// Undefined behavior if time_point<seconds> is not of sufficient range.
|
384
|
+
// Note that this means it is UB to call cctz::time_zone::lookup(tp) or
|
385
|
+
// cctz::format(fmt, tp, tz) with a time_point that is outside the range
|
386
|
+
// of a 64-bit std::time_t.
|
387
|
+
template <typename D>
|
388
|
+
std::pair<time_point<seconds>, D> split_seconds(const time_point<D>& tp) {
|
389
|
+
auto sec = std::chrono::time_point_cast<seconds>(tp);
|
390
|
+
auto sub = tp - sec;
|
391
|
+
if (sub.count() < 0) {
|
392
|
+
sec -= seconds(1);
|
393
|
+
sub += seconds(1);
|
377
394
|
}
|
378
|
-
return
|
395
|
+
return {sec, std::chrono::duration_cast<D>(sub)};
|
396
|
+
}
|
397
|
+
|
398
|
+
inline std::pair<time_point<seconds>, seconds> split_seconds(
|
399
|
+
const time_point<seconds>& tp) {
|
400
|
+
return {tp, seconds::zero()};
|
379
401
|
}
|
380
402
|
|
403
|
+
// Join a time_point<seconds> and femto subseconds into a time_point<D>.
|
404
|
+
// Floors to the resolution of time_point<D>. Returns false if time_point<D>
|
405
|
+
// is not of sufficient range.
|
406
|
+
template <typename Rep, std::intmax_t Denom>
|
407
|
+
bool join_seconds(
|
408
|
+
const time_point<seconds>& sec, const femtoseconds& fs,
|
409
|
+
time_point<std::chrono::duration<Rep, std::ratio<1, Denom>>>* tpp) {
|
410
|
+
using D = std::chrono::duration<Rep, std::ratio<1, Denom>>;
|
411
|
+
// TODO(#199): Return false if result unrepresentable as a time_point<D>.
|
412
|
+
*tpp = std::chrono::time_point_cast<D>(sec);
|
413
|
+
*tpp += std::chrono::duration_cast<D>(fs);
|
414
|
+
return true;
|
415
|
+
}
|
416
|
+
|
417
|
+
template <typename Rep, std::intmax_t Num>
|
418
|
+
bool join_seconds(
|
419
|
+
const time_point<seconds>& sec, const femtoseconds&,
|
420
|
+
time_point<std::chrono::duration<Rep, std::ratio<Num, 1>>>* tpp) {
|
421
|
+
using D = std::chrono::duration<Rep, std::ratio<Num, 1>>;
|
422
|
+
auto count = sec.time_since_epoch().count();
|
423
|
+
if (count >= 0 || count % Num == 0) {
|
424
|
+
count /= Num;
|
425
|
+
} else {
|
426
|
+
count /= Num;
|
427
|
+
count -= 1;
|
428
|
+
}
|
429
|
+
if (count > (std::numeric_limits<Rep>::max)()) return false;
|
430
|
+
if (count < (std::numeric_limits<Rep>::min)()) return false;
|
431
|
+
*tpp = time_point<D>() + D{static_cast<Rep>(count)};
|
432
|
+
return true;
|
433
|
+
}
|
434
|
+
|
435
|
+
template <typename Rep>
|
436
|
+
bool join_seconds(
|
437
|
+
const time_point<seconds>& sec, const femtoseconds&,
|
438
|
+
time_point<std::chrono::duration<Rep, std::ratio<1, 1>>>* tpp) {
|
439
|
+
using D = std::chrono::duration<Rep, std::ratio<1, 1>>;
|
440
|
+
auto count = sec.time_since_epoch().count();
|
441
|
+
if (count > (std::numeric_limits<Rep>::max)()) return false;
|
442
|
+
if (count < (std::numeric_limits<Rep>::min)()) return false;
|
443
|
+
*tpp = time_point<D>() + D{static_cast<Rep>(count)};
|
444
|
+
return true;
|
445
|
+
}
|
446
|
+
|
447
|
+
inline bool join_seconds(const time_point<seconds>& sec, const femtoseconds&,
|
448
|
+
time_point<seconds>* tpp) {
|
449
|
+
*tpp = sec;
|
450
|
+
return true;
|
451
|
+
}
|
452
|
+
|
453
|
+
} // namespace detail
|
381
454
|
} // namespace cctz
|
382
455
|
} // namespace time_internal
|
383
456
|
ABSL_NAMESPACE_END
|
@@ -53,7 +53,7 @@ int Parse02d(const char* p) {
|
|
53
53
|
} // namespace
|
54
54
|
|
55
55
|
bool FixedOffsetFromName(const std::string& name, seconds* offset) {
|
56
|
-
if (name
|
56
|
+
if (name == "UTC" || name == "UTC0") {
|
57
57
|
*offset = seconds::zero();
|
58
58
|
return true;
|
59
59
|
}
|
@@ -56,7 +56,8 @@ class TimeZoneIf {
|
|
56
56
|
|
57
57
|
// Convert between time_point<seconds> and a count of seconds since the
|
58
58
|
// Unix epoch. We assume that the std::chrono::system_clock and the
|
59
|
-
// Unix clock are second aligned,
|
59
|
+
// Unix clock are second aligned, and that the results are representable.
|
60
|
+
// (That is, that they share an epoch, which is required since C++20.)
|
60
61
|
inline std::int_fast64_t ToUnixSeconds(const time_point<seconds>& tp) {
|
61
62
|
return (tp - std::chrono::time_point_cast<seconds>(
|
62
63
|
std::chrono::system_clock::from_time_t(0)))
|