grpc 1.33.0.pre1 → 1.34.0
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 +342 -134
- data/include/grpc/grpc.h +1 -2
- data/include/grpc/grpc_security.h +149 -172
- data/include/grpc/impl/codegen/grpc_types.h +9 -2
- data/include/grpc/impl/codegen/port_platform.h +22 -55
- data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
- data/src/core/ext/filters/client_channel/config_selector.h +2 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
- data/src/core/ext/filters/client_channel/resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver.h +4 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
- data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
- data/src/core/ext/filters/client_channel/server_address.h +0 -4
- data/src/core/ext/filters/client_channel/service_config.cc +3 -1
- data/src/core/ext/filters/client_channel/service_config.h +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
- data/src/core/ext/filters/client_channel/subchannel.h +2 -2
- data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/xds/certificate_provider_factory.h +7 -5
- data/src/core/ext/xds/certificate_provider_store.cc +84 -0
- data/src/core/ext/xds/certificate_provider_store.h +65 -8
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
- data/src/core/ext/xds/xds_api.cc +241 -718
- data/src/core/ext/xds/xds_api.h +50 -9
- data/src/core/ext/xds/xds_bootstrap.cc +172 -25
- data/src/core/ext/xds/xds_bootstrap.h +23 -7
- data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
- data/src/core/ext/xds/xds_certificate_provider.h +74 -0
- data/src/core/ext/xds/xds_client.cc +161 -128
- data/src/core/ext/xds/xds_client.h +12 -11
- data/src/core/ext/xds/xds_client_stats.cc +41 -4
- data/src/core/ext/xds/xds_client_stats.h +2 -2
- data/src/core/lib/channel/channel_args.cc +2 -1
- data/src/core/lib/channel/channel_trace.cc +4 -2
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/handshaker.h +2 -2
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_internal.cc +10 -5
- data/src/core/lib/compression/compression_internal.h +2 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log_linux.cc +17 -3
- data/src/core/lib/gpr/log_posix.cc +13 -1
- data/src/core/lib/gpr/log_windows.cc +16 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/string.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +3 -2
- data/src/core/lib/gpr/tls.h +4 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_stdcpp.h +48 -0
- data/src/core/lib/gpr/useful.h +5 -4
- data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
- data/src/core/lib/gprpp/examine_stack.cc +43 -0
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +40 -46
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
- data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +36 -36
- data/src/core/lib/http/parser.cc +46 -25
- data/src/core/lib/iomgr/error.cc +2 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +3 -3
- data/src/core/lib/iomgr/parse_address.cc +84 -6
- data/src/core/lib/iomgr/parse_address.h +20 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/python_util.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
- data/src/core/lib/iomgr/tcp_posix.cc +3 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
- data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +2 -2
- data/src/core/lib/json/json_reader.cc +8 -4
- data/src/core/lib/json/json_util.h +167 -0
- data/src/core/lib/json/json_writer.cc +2 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +3 -3
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
- data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
- data/src/core/lib/security/transport/security_handshaker.cc +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +7 -4
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +2 -2
- data/src/core/lib/surface/call.cc +9 -8
- data/src/core/lib/surface/completion_queue.cc +7 -6
- data/src/core/lib/surface/server.cc +4 -2
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.h +2 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -3
- data/src/core/lib/transport/connectivity_state.h +3 -3
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -3
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +1 -0
- data/src/core/tsi/local_transport_security.cc +5 -1
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
- data/src/core/tsi/ssl_transport_security.cc +14 -7
- data/src/core/tsi/ssl_transport_security.h +3 -0
- data/src/core/tsi/transport_security.cc +4 -2
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
- data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +60 -17
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
- data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/macros.h +36 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
- data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
- data/third_party/abseil-cpp/absl/status/status.cc +4 -6
- data/third_party/abseil-cpp/absl/status/status.h +502 -113
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
- data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
- data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
- data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
- data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
- data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
- data/third_party/abseil-cpp/absl/time/format.cc +43 -36
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
- data/third_party/abseil-cpp/absl/time/time.h +15 -16
- data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +340 -336
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
- data/third_party/upb/upb/def.c +2169 -0
- data/third_party/upb/upb/def.h +330 -0
- data/third_party/upb/upb/def.hpp +525 -0
- data/third_party/upb/upb/reflection.c +391 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/text_encode.c +398 -0
- data/third_party/upb/upb/text_encode.h +35 -0
- metadata +227 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -331,17 +331,16 @@ class ABSL_LOCKABLE Mutex {
|
|
331
331
|
// Mutex::AwaitWithTimeout()
|
332
332
|
// Mutex::AwaitWithDeadline()
|
333
333
|
//
|
334
|
-
//
|
335
|
-
// initially false.
|
336
|
-
//
|
337
|
-
// If `cond` is initially false, unlock this `Mutex` and block until
|
338
|
-
// simultaneously:
|
334
|
+
// Unlocks this `Mutex` and blocks until simultaneously:
|
339
335
|
// - either `cond` is true or the {timeout has expired, deadline has passed}
|
340
336
|
// and
|
341
337
|
// - this `Mutex` can be reacquired,
|
342
338
|
// then reacquire this `Mutex` in the same mode in which it was previously
|
343
339
|
// held, returning `true` iff `cond` is `true` on return.
|
344
340
|
//
|
341
|
+
// If the condition is initially `true`, the implementation *may* skip the
|
342
|
+
// release/re-acquire step and return immediately.
|
343
|
+
//
|
345
344
|
// Deadlines in the past are equivalent to an immediate deadline.
|
346
345
|
// Negative timeouts are equivalent to a zero timeout.
|
347
346
|
//
|
@@ -686,6 +685,11 @@ class Condition {
|
|
686
685
|
// return processed_ >= current;
|
687
686
|
// };
|
688
687
|
// mu_.Await(Condition(&reached));
|
688
|
+
//
|
689
|
+
// NOTE: never use "mu_.AssertHeld()" instead of "mu_.AssertReadHeld()" in the
|
690
|
+
// lambda as it may be called when the mutex is being unlocked from a scope
|
691
|
+
// holding only a reader lock, which will make the assertion not fulfilled and
|
692
|
+
// crash the binary.
|
689
693
|
|
690
694
|
// See class comment for performance advice. In particular, if there
|
691
695
|
// might be more than one waiter for the same condition, make sure
|
@@ -770,6 +774,8 @@ class Condition {
|
|
770
774
|
//
|
771
775
|
class CondVar {
|
772
776
|
public:
|
777
|
+
// A `CondVar` allocated on the heap or on the stack can use the this
|
778
|
+
// constructor.
|
773
779
|
CondVar();
|
774
780
|
~CondVar();
|
775
781
|
|
@@ -901,9 +907,11 @@ class ABSL_SCOPED_LOCKABLE ReleasableMutexLock {
|
|
901
907
|
};
|
902
908
|
|
903
909
|
#ifdef ABSL_INTERNAL_USE_NONPROD_MUTEX
|
910
|
+
|
904
911
|
inline constexpr Mutex::Mutex(absl::ConstInitType) : impl_(absl::kConstInit) {}
|
905
912
|
|
906
913
|
#else
|
914
|
+
|
907
915
|
inline Mutex::Mutex() : mu_(0) {
|
908
916
|
ABSL_TSAN_MUTEX_CREATE(this, __tsan_mutex_not_static);
|
909
917
|
}
|
@@ -911,7 +919,8 @@ inline Mutex::Mutex() : mu_(0) {
|
|
911
919
|
inline constexpr Mutex::Mutex(absl::ConstInitType) : mu_(0) {}
|
912
920
|
|
913
921
|
inline CondVar::CondVar() : cv_(0) {}
|
914
|
-
|
922
|
+
|
923
|
+
#endif // ABSL_INTERNAL_USE_NONPROD_MUTEX
|
915
924
|
|
916
925
|
// static
|
917
926
|
template <typename T>
|
@@ -38,7 +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
|
-
// TODO(absl-team): Avoid conversion of fmt
|
41
|
+
// TODO(absl-team): Avoid conversion of fmt string.
|
42
42
|
return StrCat(cs.year(),
|
43
43
|
FormatTime(std::string(fmt), FromCivil(ncs, utc), utc));
|
44
44
|
}
|
@@ -47,7 +47,7 @@ template <typename CivilT>
|
|
47
47
|
bool ParseYearAnd(string_view fmt, string_view s, CivilT* c) {
|
48
48
|
// Civil times support a larger year range than absl::Time, so we need to
|
49
49
|
// parse the year separately, normalize it, then use absl::ParseTime on the
|
50
|
-
// normalized
|
50
|
+
// normalized string.
|
51
51
|
const std::string ss = std::string(s); // TODO(absl-team): Avoid conversion.
|
52
52
|
const char* const np = ss.c_str();
|
53
53
|
char* endp;
|
@@ -82,7 +82,7 @@ bool ParseAs(string_view s, CivilT2* c) {
|
|
82
82
|
|
83
83
|
template <typename CivilT>
|
84
84
|
bool ParseLenient(string_view s, CivilT* c) {
|
85
|
-
// A fastpath for when the given
|
85
|
+
// A fastpath for when the given string data parses exactly into the given
|
86
86
|
// type T (e.g., s="YYYY-MM-DD" and CivilT=CivilDay).
|
87
87
|
if (ParseCivilTime(s, c)) return true;
|
88
88
|
// Try parsing as each of the 6 types, trying the most common types first
|
@@ -98,26 +98,26 @@ bool ParseLenient(string_view s, CivilT* c) {
|
|
98
98
|
} // namespace
|
99
99
|
|
100
100
|
std::string FormatCivilTime(CivilSecond c) {
|
101
|
-
return FormatYearAnd("-%m-%
|
101
|
+
return FormatYearAnd("-%m-%d%ET%H:%M:%S", c);
|
102
102
|
}
|
103
103
|
std::string FormatCivilTime(CivilMinute c) {
|
104
|
-
return FormatYearAnd("-%m-%
|
104
|
+
return FormatYearAnd("-%m-%d%ET%H:%M", c);
|
105
105
|
}
|
106
106
|
std::string FormatCivilTime(CivilHour c) {
|
107
|
-
return FormatYearAnd("-%m-%
|
107
|
+
return FormatYearAnd("-%m-%d%ET%H", c);
|
108
108
|
}
|
109
109
|
std::string FormatCivilTime(CivilDay c) { return FormatYearAnd("-%m-%d", c); }
|
110
110
|
std::string FormatCivilTime(CivilMonth c) { return FormatYearAnd("-%m", c); }
|
111
111
|
std::string FormatCivilTime(CivilYear c) { return FormatYearAnd("", c); }
|
112
112
|
|
113
113
|
bool ParseCivilTime(string_view s, CivilSecond* c) {
|
114
|
-
return ParseYearAnd("-%m-%
|
114
|
+
return ParseYearAnd("-%m-%d%ET%H:%M:%S", s, c);
|
115
115
|
}
|
116
116
|
bool ParseCivilTime(string_view s, CivilMinute* c) {
|
117
|
-
return ParseYearAnd("-%m-%
|
117
|
+
return ParseYearAnd("-%m-%d%ET%H:%M", s, c);
|
118
118
|
}
|
119
119
|
bool ParseCivilTime(string_view s, CivilHour* c) {
|
120
|
-
return ParseYearAnd("-%m-%
|
120
|
+
return ParseYearAnd("-%m-%d%ET%H", s, c);
|
121
121
|
}
|
122
122
|
bool ParseCivilTime(string_view s, CivilDay* c) {
|
123
123
|
return ParseYearAnd("-%m-%d", s, c);
|
@@ -226,9 +226,9 @@ static_assert(((kMinNSBetweenSamples << (kScale + 1)) >> (kScale + 1)) ==
|
|
226
226
|
|
227
227
|
// A reader-writer lock protecting the static locations below.
|
228
228
|
// See SeqAcquire() and SeqRelease() above.
|
229
|
-
static absl::base_internal::SpinLock lock(
|
230
|
-
absl::base_internal::
|
231
|
-
static std::atomic<uint64_t> seq(0);
|
229
|
+
ABSL_CONST_INIT static absl::base_internal::SpinLock lock(
|
230
|
+
absl::kConstInit, base_internal::SCHEDULE_KERNEL_ONLY);
|
231
|
+
ABSL_CONST_INIT static std::atomic<uint64_t> seq(0);
|
232
232
|
|
233
233
|
// data from a sample of the kernel's time value
|
234
234
|
struct TimeSampleAtomic {
|
@@ -67,7 +67,10 @@
|
|
67
67
|
#include <string>
|
68
68
|
|
69
69
|
#include "absl/base/casts.h"
|
70
|
+
#include "absl/base/macros.h"
|
70
71
|
#include "absl/numeric/int128.h"
|
72
|
+
#include "absl/strings/string_view.h"
|
73
|
+
#include "absl/strings/strip.h"
|
71
74
|
#include "absl/time/time.h"
|
72
75
|
|
73
76
|
namespace absl {
|
@@ -708,16 +711,17 @@ char* Format64(char* ep, int width, int64_t v) {
|
|
708
711
|
// fractional digits, because it is in the noise of what a Duration can
|
709
712
|
// represent.
|
710
713
|
struct DisplayUnit {
|
711
|
-
|
714
|
+
absl::string_view abbr;
|
712
715
|
int prec;
|
713
716
|
double pow10;
|
714
717
|
};
|
715
|
-
const DisplayUnit kDisplayNano = {"ns", 2, 1e2};
|
716
|
-
const DisplayUnit kDisplayMicro = {"us", 5, 1e5};
|
717
|
-
const DisplayUnit kDisplayMilli = {"ms", 8, 1e8};
|
718
|
-
const DisplayUnit kDisplaySec = {"s", 11, 1e11};
|
719
|
-
const DisplayUnit kDisplayMin = {"m", -1, 0.0};
|
720
|
-
const DisplayUnit kDisplayHour = {"h", -1,
|
718
|
+
ABSL_CONST_INIT const DisplayUnit kDisplayNano = {"ns", 2, 1e2};
|
719
|
+
ABSL_CONST_INIT const DisplayUnit kDisplayMicro = {"us", 5, 1e5};
|
720
|
+
ABSL_CONST_INIT const DisplayUnit kDisplayMilli = {"ms", 8, 1e8};
|
721
|
+
ABSL_CONST_INIT const DisplayUnit kDisplaySec = {"s", 11, 1e11};
|
722
|
+
ABSL_CONST_INIT const DisplayUnit kDisplayMin = {"m", -1, 0.0}; // prec ignored
|
723
|
+
ABSL_CONST_INIT const DisplayUnit kDisplayHour = {"h", -1,
|
724
|
+
0.0}; // prec ignored
|
721
725
|
|
722
726
|
void AppendNumberUnit(std::string* out, int64_t n, DisplayUnit unit) {
|
723
727
|
char buf[sizeof("2562047788015216")]; // hours in max duration
|
@@ -725,16 +729,16 @@ void AppendNumberUnit(std::string* out, int64_t n, DisplayUnit unit) {
|
|
725
729
|
char* bp = Format64(ep, 0, n);
|
726
730
|
if (*bp != '0' || bp + 1 != ep) {
|
727
731
|
out->append(bp, ep - bp);
|
728
|
-
out->append(unit.abbr);
|
732
|
+
out->append(unit.abbr.data(), unit.abbr.size());
|
729
733
|
}
|
730
734
|
}
|
731
735
|
|
732
736
|
// Note: unit.prec is limited to double's digits10 value (typically 15) so it
|
733
737
|
// always fits in buf[].
|
734
738
|
void AppendNumberUnit(std::string* out, double n, DisplayUnit unit) {
|
735
|
-
|
736
|
-
const int prec = std::min(
|
737
|
-
char buf[
|
739
|
+
constexpr int kBufferSize = std::numeric_limits<double>::digits10;
|
740
|
+
const int prec = std::min(kBufferSize, unit.prec);
|
741
|
+
char buf[kBufferSize]; // also large enough to hold integer part
|
738
742
|
char* ep = buf + sizeof(buf);
|
739
743
|
double d = 0;
|
740
744
|
int64_t frac_part = Round(std::modf(n, &d) * unit.pow10);
|
@@ -748,7 +752,7 @@ void AppendNumberUnit(std::string* out, double n, DisplayUnit unit) {
|
|
748
752
|
while (ep[-1] == '0') --ep;
|
749
753
|
out->append(bp, ep - bp);
|
750
754
|
}
|
751
|
-
out->append(unit.abbr);
|
755
|
+
out->append(unit.abbr.data(), unit.abbr.size());
|
752
756
|
}
|
753
757
|
}
|
754
758
|
|
@@ -800,23 +804,27 @@ namespace {
|
|
800
804
|
// A helper for ParseDuration() that parses a leading number from the given
|
801
805
|
// string and stores the result in *int_part/*frac_part/*frac_scale. The
|
802
806
|
// given string pointer is modified to point to the first unconsumed char.
|
803
|
-
bool ConsumeDurationNumber(const char** dpp, int64_t* int_part,
|
807
|
+
bool ConsumeDurationNumber(const char** dpp, const char* ep, int64_t* int_part,
|
804
808
|
int64_t* frac_part, int64_t* frac_scale) {
|
805
809
|
*int_part = 0;
|
806
810
|
*frac_part = 0;
|
807
811
|
*frac_scale = 1; // invariant: *frac_part < *frac_scale
|
808
812
|
const char* start = *dpp;
|
809
|
-
for (;
|
813
|
+
for (; *dpp != ep; *dpp += 1) {
|
810
814
|
const int d = **dpp - '0'; // contiguous digits
|
815
|
+
if (d < 0 || 10 <= d) break;
|
816
|
+
|
811
817
|
if (*int_part > kint64max / 10) return false;
|
812
818
|
*int_part *= 10;
|
813
819
|
if (*int_part > kint64max - d) return false;
|
814
820
|
*int_part += d;
|
815
821
|
}
|
816
822
|
const bool int_part_empty = (*dpp == start);
|
817
|
-
if (**dpp != '.') return !int_part_empty;
|
818
|
-
|
823
|
+
if (*dpp == ep || **dpp != '.') return !int_part_empty;
|
824
|
+
|
825
|
+
for (*dpp += 1; *dpp != ep; *dpp += 1) {
|
819
826
|
const int d = **dpp - '0'; // contiguous digits
|
827
|
+
if (d < 0 || 10 <= d) break;
|
820
828
|
if (*frac_scale <= kint64max / 10) {
|
821
829
|
*frac_part *= 10;
|
822
830
|
*frac_part += d;
|
@@ -830,32 +838,56 @@ bool ConsumeDurationNumber(const char** dpp, int64_t* int_part,
|
|
830
838
|
// ns, us, ms, s, m, h) from the given string and stores the resulting unit
|
831
839
|
// in "*unit". The given string pointer is modified to point to the first
|
832
840
|
// unconsumed char.
|
833
|
-
bool ConsumeDurationUnit(const char** start, Duration* unit) {
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
841
|
+
bool ConsumeDurationUnit(const char** start, const char* end, Duration* unit) {
|
842
|
+
size_t size = end - *start;
|
843
|
+
switch (size) {
|
844
|
+
case 0:
|
845
|
+
return false;
|
846
|
+
default:
|
847
|
+
switch (**start) {
|
848
|
+
case 'n':
|
849
|
+
if (*(*start + 1) == 's') {
|
850
|
+
*start += 2;
|
851
|
+
*unit = Nanoseconds(1);
|
852
|
+
return true;
|
853
|
+
}
|
854
|
+
break;
|
855
|
+
case 'u':
|
856
|
+
if (*(*start + 1) == 's') {
|
857
|
+
*start += 2;
|
858
|
+
*unit = Microseconds(1);
|
859
|
+
return true;
|
860
|
+
}
|
861
|
+
break;
|
862
|
+
case 'm':
|
863
|
+
if (*(*start + 1) == 's') {
|
864
|
+
*start += 2;
|
865
|
+
*unit = Milliseconds(1);
|
866
|
+
return true;
|
867
|
+
}
|
868
|
+
break;
|
869
|
+
default:
|
870
|
+
break;
|
871
|
+
}
|
872
|
+
ABSL_FALLTHROUGH_INTENDED;
|
873
|
+
case 1:
|
874
|
+
switch (**start) {
|
875
|
+
case 's':
|
876
|
+
*unit = Seconds(1);
|
877
|
+
*start += 1;
|
878
|
+
return true;
|
879
|
+
case 'm':
|
880
|
+
*unit = Minutes(1);
|
881
|
+
*start += 1;
|
882
|
+
return true;
|
883
|
+
case 'h':
|
884
|
+
*unit = Hours(1);
|
885
|
+
*start += 1;
|
886
|
+
return true;
|
887
|
+
default:
|
888
|
+
return false;
|
889
|
+
}
|
856
890
|
}
|
857
|
-
*start = s;
|
858
|
-
return ok;
|
859
891
|
}
|
860
892
|
|
861
893
|
} // namespace
|
@@ -865,39 +897,38 @@ bool ConsumeDurationUnit(const char** start, Duration* unit) {
|
|
865
897
|
// a possibly signed sequence of decimal numbers, each with optional
|
866
898
|
// fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m".
|
867
899
|
// Valid time units are "ns", "us" "ms", "s", "m", "h".
|
868
|
-
bool ParseDuration(
|
869
|
-
const char* start = dur_string.c_str();
|
900
|
+
bool ParseDuration(absl::string_view dur_sv, Duration* d) {
|
870
901
|
int sign = 1;
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
}
|
876
|
-
|
877
|
-
// Can't parse a duration from an empty std::string.
|
878
|
-
if (*start == '\0') {
|
879
|
-
return false;
|
902
|
+
if (absl::ConsumePrefix(&dur_sv, "-")) {
|
903
|
+
sign = -1;
|
904
|
+
} else {
|
905
|
+
absl::ConsumePrefix(&dur_sv, "+");
|
880
906
|
}
|
907
|
+
if (dur_sv.empty()) return false;
|
881
908
|
|
882
|
-
// Special case for a
|
883
|
-
if (
|
909
|
+
// Special case for a string of "0".
|
910
|
+
if (dur_sv == "0") {
|
884
911
|
*d = ZeroDuration();
|
885
912
|
return true;
|
886
913
|
}
|
887
914
|
|
888
|
-
if (
|
915
|
+
if (dur_sv == "inf") {
|
889
916
|
*d = sign * InfiniteDuration();
|
890
917
|
return true;
|
891
918
|
}
|
892
919
|
|
920
|
+
const char* start = dur_sv.data();
|
921
|
+
const char* end = start + dur_sv.size();
|
922
|
+
|
893
923
|
Duration dur;
|
894
|
-
while (
|
924
|
+
while (start != end) {
|
895
925
|
int64_t int_part;
|
896
926
|
int64_t frac_part;
|
897
927
|
int64_t frac_scale;
|
898
928
|
Duration unit;
|
899
|
-
if (!ConsumeDurationNumber(&start, &int_part, &frac_part,
|
900
|
-
|
929
|
+
if (!ConsumeDurationNumber(&start, end, &int_part, &frac_part,
|
930
|
+
&frac_scale) ||
|
931
|
+
!ConsumeDurationUnit(&start, end, &unit)) {
|
901
932
|
return false;
|
902
933
|
}
|
903
934
|
if (int_part != 0) dur += sign * int_part * unit;
|
@@ -908,7 +939,7 @@ bool ParseDuration(const std::string& dur_string, Duration* d) {
|
|
908
939
|
}
|
909
940
|
|
910
941
|
bool AbslParseFlag(absl::string_view text, Duration* dst, std::string*) {
|
911
|
-
return ParseDuration(
|
942
|
+
return ParseDuration(text, dst);
|
912
943
|
}
|
913
944
|
|
914
945
|
std::string AbslUnparseFlag(Duration d) { return FormatDuration(d); }
|
@@ -13,9 +13,12 @@
|
|
13
13
|
// limitations under the License.
|
14
14
|
|
15
15
|
#include <string.h>
|
16
|
+
|
16
17
|
#include <cctype>
|
17
18
|
#include <cstdint>
|
18
19
|
|
20
|
+
#include "absl/strings/match.h"
|
21
|
+
#include "absl/strings/string_view.h"
|
19
22
|
#include "absl/time/internal/cctz/include/cctz/time_zone.h"
|
20
23
|
#include "absl/time/time.h"
|
21
24
|
|
@@ -24,14 +27,11 @@ namespace cctz = absl::time_internal::cctz;
|
|
24
27
|
namespace absl {
|
25
28
|
ABSL_NAMESPACE_BEGIN
|
26
29
|
|
27
|
-
ABSL_DLL extern const char RFC3339_full[] =
|
28
|
-
|
29
|
-
ABSL_DLL extern const char RFC3339_sec[] = "%Y-%m-%dT%H:%M:%S%Ez";
|
30
|
+
ABSL_DLL extern const char RFC3339_full[] = "%Y-%m-%d%ET%H:%M:%E*S%Ez";
|
31
|
+
ABSL_DLL extern const char RFC3339_sec[] = "%Y-%m-%d%ET%H:%M:%S%Ez";
|
30
32
|
|
31
|
-
ABSL_DLL extern const char RFC1123_full[] =
|
32
|
-
|
33
|
-
ABSL_DLL extern const char RFC1123_no_wday[] =
|
34
|
-
"%d %b %E4Y %H:%M:%S %z";
|
33
|
+
ABSL_DLL extern const char RFC1123_full[] = "%a, %d %b %E4Y %H:%M:%S %z";
|
34
|
+
ABSL_DLL extern const char RFC1123_no_wday[] = "%d %b %E4Y %H:%M:%S %z";
|
35
35
|
|
36
36
|
namespace {
|
37
37
|
|
@@ -71,12 +71,12 @@ absl::Time Join(const cctz_parts& parts) {
|
|
71
71
|
|
72
72
|
} // namespace
|
73
73
|
|
74
|
-
std::string FormatTime(
|
74
|
+
std::string FormatTime(absl::string_view format, absl::Time t,
|
75
75
|
absl::TimeZone tz) {
|
76
|
-
if (t == absl::InfiniteFuture()) return kInfiniteFutureStr;
|
77
|
-
if (t == absl::InfinitePast()) return kInfinitePastStr;
|
76
|
+
if (t == absl::InfiniteFuture()) return std::string(kInfiniteFutureStr);
|
77
|
+
if (t == absl::InfinitePast()) return std::string(kInfinitePastStr);
|
78
78
|
const auto parts = Split(t);
|
79
|
-
return cctz::detail::format(format, parts.sec, parts.fem,
|
79
|
+
return cctz::detail::format(std::string(format), parts.sec, parts.fem,
|
80
80
|
cctz::time_zone(tz));
|
81
81
|
}
|
82
82
|
|
@@ -88,42 +88,50 @@ std::string FormatTime(absl::Time t) {
|
|
88
88
|
return absl::FormatTime(RFC3339_full, t, absl::LocalTimeZone());
|
89
89
|
}
|
90
90
|
|
91
|
-
bool ParseTime(
|
91
|
+
bool ParseTime(absl::string_view format, absl::string_view input,
|
92
92
|
absl::Time* time, std::string* err) {
|
93
93
|
return absl::ParseTime(format, input, absl::UTCTimeZone(), time, err);
|
94
94
|
}
|
95
95
|
|
96
96
|
// If the input string does not contain an explicit UTC offset, interpret
|
97
97
|
// the fields with respect to the given TimeZone.
|
98
|
-
bool ParseTime(
|
98
|
+
bool ParseTime(absl::string_view format, absl::string_view input,
|
99
99
|
absl::TimeZone tz, absl::Time* time, std::string* err) {
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
if (strncmp(data, kInfiniteFutureStr, inf_size) == 0) {
|
105
|
-
const char* new_data = data + inf_size;
|
106
|
-
while (std::isspace(*new_data)) ++new_data;
|
107
|
-
if (*new_data == '\0') {
|
108
|
-
*time = InfiniteFuture();
|
109
|
-
return true;
|
100
|
+
auto strip_leading_space = [](absl::string_view* sv) {
|
101
|
+
while (!sv->empty()) {
|
102
|
+
if (!std::isspace(sv->front())) return;
|
103
|
+
sv->remove_prefix(1);
|
110
104
|
}
|
111
|
-
}
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
const char*
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
105
|
+
};
|
106
|
+
|
107
|
+
// Portable toolchains means we don't get nice constexpr here.
|
108
|
+
struct Literal {
|
109
|
+
const char* name;
|
110
|
+
size_t size;
|
111
|
+
absl::Time value;
|
112
|
+
};
|
113
|
+
static Literal literals[] = {
|
114
|
+
{kInfiniteFutureStr, strlen(kInfiniteFutureStr), InfiniteFuture()},
|
115
|
+
{kInfinitePastStr, strlen(kInfinitePastStr), InfinitePast()},
|
116
|
+
};
|
117
|
+
strip_leading_space(&input);
|
118
|
+
for (const auto& lit : literals) {
|
119
|
+
if (absl::StartsWith(input, absl::string_view(lit.name, lit.size))) {
|
120
|
+
absl::string_view tail = input;
|
121
|
+
tail.remove_prefix(lit.size);
|
122
|
+
strip_leading_space(&tail);
|
123
|
+
if (tail.empty()) {
|
124
|
+
*time = lit.value;
|
125
|
+
return true;
|
126
|
+
}
|
120
127
|
}
|
121
128
|
}
|
122
129
|
|
123
130
|
std::string error;
|
124
131
|
cctz_parts parts;
|
125
|
-
const bool b =
|
126
|
-
|
132
|
+
const bool b =
|
133
|
+
cctz::detail::parse(std::string(format), std::string(input),
|
134
|
+
cctz::time_zone(tz), &parts.sec, &parts.fem, &error);
|
127
135
|
if (b) {
|
128
136
|
*time = Join(parts);
|
129
137
|
} else if (err != nullptr) {
|
@@ -134,8 +142,7 @@ bool ParseTime(const std::string& format, const std::string& input,
|
|
134
142
|
|
135
143
|
// Functions required to support absl::Time flags.
|
136
144
|
bool AbslParseFlag(absl::string_view text, absl::Time* t, std::string* error) {
|
137
|
-
return absl::ParseTime(RFC3339_full,
|
138
|
-
t, error);
|
145
|
+
return absl::ParseTime(RFC3339_full, text, absl::UTCTimeZone(), t, error);
|
139
146
|
}
|
140
147
|
|
141
148
|
std::string AbslUnparseFlag(absl::Time t) {
|