grpc 1.28.0 → 1.36.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 +1692 -22343
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +17 -9
- data/include/grpc/grpc_security.h +274 -180
- data/include/grpc/grpc_security_constants.h +4 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +32 -30
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/port_platform.h +34 -90
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/module.modulemap +24 -39
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +16 -12
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +3750 -2341
- data/src/core/ext/filters/client_channel/client_channel.h +1 -7
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -3
- data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
- data/src/core/ext/filters/client_channel/config_selector.h +125 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -30
- data/src/core/ext/filters/client_channel/health/health_check_client.h +7 -7
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +15 -16
- data/src/core/ext/filters/client_channel/http_proxy.cc +44 -34
- data/src/core/ext/filters/client_channel/lb_policy.cc +25 -20
- data/src/core/ext/filters/client_channel/lb_policy.h +50 -38
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -11
- 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 +481 -510
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -41
- 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/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +24 -18
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +922 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +11 -10
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -46
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +520 -134
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +810 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +18 -8
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/resolver.cc +6 -10
- data/src/core/ext/filters/client_channel/resolver.h +10 -20
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +111 -110
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -34
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +13 -11
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +642 -180
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +10 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +61 -61
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +102 -108
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +362 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +625 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_factory.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +55 -52
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +47 -93
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +30 -26
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +129 -13
- data/src/core/ext/filters/client_channel/server_address.h +80 -32
- data/src/core/ext/filters/client_channel/service_config.cc +114 -149
- data/src/core/ext/filters/client_channel/service_config.h +33 -100
- data/src/core/ext/filters/client_channel/service_config_call_data.h +86 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +89 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +92 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -98
- data/src/core/ext/filters/client_channel/subchannel.h +65 -35
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
- data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/http/client/http_client_filter.cc +29 -34
- data/src/core/ext/filters/http/client_authority_filter.cc +10 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +34 -15
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/max_age/max_age_filter.cc +38 -34
- data/src/core/ext/filters/message_size/message_size_filter.cc +64 -90
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +34 -47
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +505 -344
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +65 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +307 -343
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
- data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +37 -23
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +30 -28
- data/src/core/ext/transport/inproc/inproc_transport.cc +106 -33
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +453 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1801 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +334 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1066 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +730 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +130 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +557 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +159 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +623 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +65 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +926 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3746 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +361 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1484 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +458 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +7 -9
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +7 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +7 -7
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +3 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +107 -106
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +691 -496
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +71 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
- data/src/core/ext/upb-generated/validate/validate.upb.c +71 -70
- data/src/core/ext/upb-generated/validate/validate.upb.h +732 -586
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- 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 +251 -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 +543 -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 +136 -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 +272 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -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 +43 -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 +68 -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 +107 -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 +195 -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 +193 -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 +59 -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 +101 -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 +938 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +285 -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 +61 -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/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +504 -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 +44 -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 +170 -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 +97 -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 +246 -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 +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -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 +72 -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 +80 -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 +80 -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 +69 -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/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
- 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 +39 -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 +40 -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 +40 -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/validate/validate.upbdefs.c +310 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +2479 -0
- data/src/core/ext/xds/xds_api.h +431 -0
- data/src/core/ext/xds/xds_bootstrap.cc +539 -0
- data/src/core/ext/xds/xds_bootstrap.h +116 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +839 -774
- data/src/core/ext/xds/xds_client.h +339 -0
- data/src/core/ext/xds/xds_client_stats.cc +159 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +78 -38
- data/src/core/ext/xds/xds_server_config_fetcher.cc +267 -0
- data/src/core/lib/channel/channel_args.cc +24 -22
- data/src/core/lib/channel/channel_args.h +3 -2
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channel_trace.cc +6 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +46 -94
- data/src/core/lib/channel/channelz.h +17 -25
- data/src/core/lib/channel/channelz_registry.cc +20 -15
- data/src/core/lib/channel/channelz_registry.h +3 -1
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +15 -20
- data/src/core/lib/channel/handshaker.h +7 -5
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/compression.cc +8 -4
- data/src/core/lib/compression/compression_args.cc +3 -2
- 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/message_compress.cc +5 -1
- data/src/core/lib/compression/stream_compression_identity.cc +1 -3
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +5 -3
- data/src/core/lib/debug/stats_data.cc +1 -0
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- data/src/core/lib/gpr/log.cc +59 -17
- data/src/core/lib/gpr/log_linux.cc +23 -9
- data/src/core/lib/gpr/log_posix.cc +19 -7
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +1 -1
- data/src/core/lib/gpr/spinlock.h +12 -5
- data/src/core/lib/gpr/string.cc +33 -55
- data/src/core/lib/gpr/string.h +9 -24
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time.cc +16 -12
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -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/arena.h +3 -2
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
- 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 +3 -3
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/orphanable.h +4 -8
- data/src/core/lib/gprpp/ref_counted.h +91 -68
- data/src/core/lib/gprpp/ref_counted_ptr.h +171 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- 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/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +2 -2
- data/src/core/lib/gprpp/thd_posix.cc +42 -37
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +16 -14
- data/src/core/lib/http/httpcli.h +4 -6
- data/src/core/lib/http/httpcli_security_connector.cc +13 -13
- data/src/core/lib/http/parser.cc +47 -27
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +8 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +38 -14
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error.cc +23 -21
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +359 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -40
- data/src/core/lib/iomgr/ev_epollex_linux.cc +46 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +18 -15
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.cc +1 -1
- data/src/core/lib/iomgr/exec_ctx.h +26 -10
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
- data/src/core/lib/iomgr/executor/threadpool.h +4 -4
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -21
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +322 -0
- data/src/core/lib/iomgr/parse_address.h +77 -0
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +11 -11
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +2 -21
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +11 -16
- data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
- data/src/core/lib/iomgr/resource_quota.cc +38 -37
- data/src/core/lib/iomgr/sockaddr_utils.cc +41 -44
- data/src/core/lib/iomgr/sockaddr_utils.h +13 -17
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +103 -81
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
- data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
- data/src/core/lib/iomgr/tcp_client_posix.cc +31 -37
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
- data/src/core/lib/iomgr/tcp_custom.cc +56 -36
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -25
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +39 -45
- data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_custom.cc +5 -5
- data/src/core/lib/iomgr/timer_generic.cc +18 -18
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +33 -38
- data/src/core/lib/iomgr/udp_server.h +6 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
- data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/json/json.h +15 -4
- data/src/core/lib/json/json_reader.cc +33 -30
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +204 -0
- data/src/core/lib/json/json_writer.cc +15 -13
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +148 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/matchers.cc +339 -0
- data/src/core/lib/security/authorization/matchers.h +158 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +44 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +99 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +57 -0
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +7 -91
- data/src/core/lib/security/credentials/credentials.h +18 -66
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +90 -67
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -4
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +13 -19
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +109 -97
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -140
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -7
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -32
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -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.cc +3 -2
- 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 +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +6 -3
- data/src/core/lib/security/security_connector/security_connector.h +6 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +42 -40
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +94 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +37 -31
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +388 -284
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +108 -42
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
- data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
- data/src/core/lib/security/transport/security_handshaker.cc +4 -6
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/security/util/json_util.h +1 -0
- data/src/core/lib/slice/slice.cc +45 -5
- data/src/core/lib/slice/slice_buffer.cc +2 -1
- data/src/core/lib/slice/slice_intern.cc +9 -11
- data/src/core/lib/slice/slice_internal.h +17 -2
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +95 -88
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +86 -72
- data/src/core/lib/surface/channel.h +54 -7
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +63 -62
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +45 -29
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +1311 -1309
- data/src/core/lib/surface/server.h +410 -45
- 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.cc +40 -0
- data/src/core/lib/transport/authority_override.h +37 -0
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.h +10 -5
- data/src/core/lib/transport/connectivity_state.cc +23 -17
- data/src/core/lib/transport/connectivity_state.h +31 -15
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +7 -1
- data/src/core/lib/transport/metadata.cc +19 -5
- data/src/core/lib/transport/metadata.h +2 -2
- data/src/core/lib/transport/metadata_batch.h +6 -7
- data/src/core/lib/transport/static_metadata.cc +296 -277
- data/src/core/lib/transport/static_metadata.h +81 -74
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +7 -6
- data/src/core/lib/transport/transport.h +24 -10
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +60 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +59 -12
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +48 -34
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +98 -48
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +17 -19
- 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 +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -4
- data/src/core/tsi/ssl_transport_security.cc +226 -105
- data/src/core/tsi/ssl_transport_security.h +28 -16
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +10 -8
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +9 -4
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +6 -3
- data/src/ruby/ext/grpc/rb_call.c +12 -3
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +80 -44
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +61 -11
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- 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 +166 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -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 +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- 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 +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
- 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/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/status.cc +445 -0
- data/third_party/abseil-cpp/absl/status/status.h +817 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
- 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 +173 -0
- 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/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +953 -0
- data/third_party/abseil-cpp/absl/time/format.cc +160 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +309 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1583 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- 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/types/variant.h +861 -0
- 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 +759 -707
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -20
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +34 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +301 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +69 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +155 -50
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -121
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +73 -40
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +122 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +217 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +532 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +21 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +89 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +62 -44
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +67 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +38 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +66 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -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_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +126 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +662 -556
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +21 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +11 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +85 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -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/rand.h +6 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +335 -112
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +33 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1141 -755
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +181 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +45 -26
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +43 -45
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +32 -10
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +160 -80
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +131 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +50 -15
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +611 -89
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +187 -68
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +71 -90
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -73
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +604 -511
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +2178 -0
- data/third_party/upb/upb/def.h +315 -0
- data/third_party/upb/upb/def.hpp +439 -0
- data/third_party/upb/upb/encode.c +311 -211
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +215 -70
- data/third_party/upb/upb/msg.h +558 -14
- data/third_party/upb/upb/port_def.inc +105 -63
- data/third_party/upb/upb/port_undef.inc +10 -7
- data/third_party/upb/upb/reflection.c +408 -0
- data/third_party/upb/upb/reflection.h +168 -0
- data/third_party/upb/upb/table.c +73 -269
- data/third_party/upb/upb/table.int.h +25 -57
- data/third_party/upb/upb/text_encode.c +421 -0
- data/third_party/upb/upb/text_encode.h +38 -0
- data/third_party/upb/upb/upb.c +138 -135
- data/third_party/upb/upb/upb.h +119 -146
- data/third_party/upb/upb/upb.hpp +88 -0
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +646 -164
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/lib/gprpp/map.h +0 -59
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -0,0 +1,45 @@
|
|
1
|
+
// Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include "time_zone_if.h"
|
16
|
+
|
17
|
+
#include "absl/base/config.h"
|
18
|
+
#include "time_zone_info.h"
|
19
|
+
#include "time_zone_libc.h"
|
20
|
+
|
21
|
+
namespace absl {
|
22
|
+
ABSL_NAMESPACE_BEGIN
|
23
|
+
namespace time_internal {
|
24
|
+
namespace cctz {
|
25
|
+
|
26
|
+
std::unique_ptr<TimeZoneIf> TimeZoneIf::Load(const std::string& name) {
|
27
|
+
// Support "libc:localtime" and "libc:*" to access the legacy
|
28
|
+
// localtime and UTC support respectively from the C library.
|
29
|
+
if (name.compare(0, 5, "libc:") == 0) {
|
30
|
+
return std::unique_ptr<TimeZoneIf>(new TimeZoneLibC(name.substr(5)));
|
31
|
+
}
|
32
|
+
|
33
|
+
// Otherwise use the "zoneinfo" implementation by default.
|
34
|
+
std::unique_ptr<TimeZoneInfo> tz(new TimeZoneInfo);
|
35
|
+
if (!tz->Load(name)) tz.reset();
|
36
|
+
return std::unique_ptr<TimeZoneIf>(tz.release());
|
37
|
+
}
|
38
|
+
|
39
|
+
// Defined out-of-line to avoid emitting a weak vtable in all TUs.
|
40
|
+
TimeZoneIf::~TimeZoneIf() {}
|
41
|
+
|
42
|
+
} // namespace cctz
|
43
|
+
} // namespace time_internal
|
44
|
+
ABSL_NAMESPACE_END
|
45
|
+
} // namespace absl
|
@@ -0,0 +1,76 @@
|
|
1
|
+
// Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IF_H_
|
16
|
+
#define ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IF_H_
|
17
|
+
|
18
|
+
#include <chrono>
|
19
|
+
#include <cstdint>
|
20
|
+
#include <memory>
|
21
|
+
#include <string>
|
22
|
+
|
23
|
+
#include "absl/base/config.h"
|
24
|
+
#include "absl/time/internal/cctz/include/cctz/civil_time.h"
|
25
|
+
#include "absl/time/internal/cctz/include/cctz/time_zone.h"
|
26
|
+
|
27
|
+
namespace absl {
|
28
|
+
ABSL_NAMESPACE_BEGIN
|
29
|
+
namespace time_internal {
|
30
|
+
namespace cctz {
|
31
|
+
|
32
|
+
// A simple interface used to hide time-zone complexities from time_zone::Impl.
|
33
|
+
// Subclasses implement the functions for civil-time conversions in the zone.
|
34
|
+
class TimeZoneIf {
|
35
|
+
public:
|
36
|
+
// A factory function for TimeZoneIf implementations.
|
37
|
+
static std::unique_ptr<TimeZoneIf> Load(const std::string& name);
|
38
|
+
|
39
|
+
virtual ~TimeZoneIf();
|
40
|
+
|
41
|
+
virtual time_zone::absolute_lookup BreakTime(
|
42
|
+
const time_point<seconds>& tp) const = 0;
|
43
|
+
virtual time_zone::civil_lookup MakeTime(const civil_second& cs) const = 0;
|
44
|
+
|
45
|
+
virtual bool NextTransition(const time_point<seconds>& tp,
|
46
|
+
time_zone::civil_transition* trans) const = 0;
|
47
|
+
virtual bool PrevTransition(const time_point<seconds>& tp,
|
48
|
+
time_zone::civil_transition* trans) const = 0;
|
49
|
+
|
50
|
+
virtual std::string Version() const = 0;
|
51
|
+
virtual std::string Description() const = 0;
|
52
|
+
|
53
|
+
protected:
|
54
|
+
TimeZoneIf() {}
|
55
|
+
};
|
56
|
+
|
57
|
+
// Convert between time_point<seconds> and a count of seconds since the
|
58
|
+
// Unix epoch. We assume that the std::chrono::system_clock and the
|
59
|
+
// Unix clock are second aligned, but not that they share an epoch.
|
60
|
+
inline std::int_fast64_t ToUnixSeconds(const time_point<seconds>& tp) {
|
61
|
+
return (tp - std::chrono::time_point_cast<seconds>(
|
62
|
+
std::chrono::system_clock::from_time_t(0)))
|
63
|
+
.count();
|
64
|
+
}
|
65
|
+
inline time_point<seconds> FromUnixSeconds(std::int_fast64_t t) {
|
66
|
+
return std::chrono::time_point_cast<seconds>(
|
67
|
+
std::chrono::system_clock::from_time_t(0)) +
|
68
|
+
seconds(t);
|
69
|
+
}
|
70
|
+
|
71
|
+
} // namespace cctz
|
72
|
+
} // namespace time_internal
|
73
|
+
ABSL_NAMESPACE_END
|
74
|
+
} // namespace absl
|
75
|
+
|
76
|
+
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IF_H_
|
@@ -0,0 +1,113 @@
|
|
1
|
+
// Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#include "time_zone_impl.h"
|
16
|
+
|
17
|
+
#include <deque>
|
18
|
+
#include <memory>
|
19
|
+
#include <mutex>
|
20
|
+
#include <string>
|
21
|
+
#include <unordered_map>
|
22
|
+
#include <utility>
|
23
|
+
|
24
|
+
#include "absl/base/config.h"
|
25
|
+
#include "time_zone_fixed.h"
|
26
|
+
|
27
|
+
namespace absl {
|
28
|
+
ABSL_NAMESPACE_BEGIN
|
29
|
+
namespace time_internal {
|
30
|
+
namespace cctz {
|
31
|
+
|
32
|
+
namespace {
|
33
|
+
|
34
|
+
// time_zone::Impls are linked into a map to support fast lookup by name.
|
35
|
+
using TimeZoneImplByName =
|
36
|
+
std::unordered_map<std::string, const time_zone::Impl*>;
|
37
|
+
TimeZoneImplByName* time_zone_map = nullptr;
|
38
|
+
|
39
|
+
// Mutual exclusion for time_zone_map.
|
40
|
+
std::mutex& TimeZoneMutex() {
|
41
|
+
// This mutex is intentionally "leaked" to avoid the static deinitialization
|
42
|
+
// order fiasco (std::mutex's destructor is not trivial on many platforms).
|
43
|
+
static std::mutex* time_zone_mutex = new std::mutex;
|
44
|
+
return *time_zone_mutex;
|
45
|
+
}
|
46
|
+
|
47
|
+
} // namespace
|
48
|
+
|
49
|
+
time_zone time_zone::Impl::UTC() { return time_zone(UTCImpl()); }
|
50
|
+
|
51
|
+
bool time_zone::Impl::LoadTimeZone(const std::string& name, time_zone* tz) {
|
52
|
+
const Impl* const utc_impl = UTCImpl();
|
53
|
+
|
54
|
+
// Check for UTC (which is never a key in time_zone_map).
|
55
|
+
auto offset = seconds::zero();
|
56
|
+
if (FixedOffsetFromName(name, &offset) && offset == seconds::zero()) {
|
57
|
+
*tz = time_zone(utc_impl);
|
58
|
+
return true;
|
59
|
+
}
|
60
|
+
|
61
|
+
// Check whether the time zone has already been loaded.
|
62
|
+
{
|
63
|
+
std::lock_guard<std::mutex> lock(TimeZoneMutex());
|
64
|
+
if (time_zone_map != nullptr) {
|
65
|
+
TimeZoneImplByName::const_iterator itr = time_zone_map->find(name);
|
66
|
+
if (itr != time_zone_map->end()) {
|
67
|
+
*tz = time_zone(itr->second);
|
68
|
+
return itr->second != utc_impl;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
// Load the new time zone (outside the lock).
|
74
|
+
std::unique_ptr<const Impl> new_impl(new Impl(name));
|
75
|
+
|
76
|
+
// Add the new time zone to the map.
|
77
|
+
std::lock_guard<std::mutex> lock(TimeZoneMutex());
|
78
|
+
if (time_zone_map == nullptr) time_zone_map = new TimeZoneImplByName;
|
79
|
+
const Impl*& impl = (*time_zone_map)[name];
|
80
|
+
if (impl == nullptr) { // this thread won any load race
|
81
|
+
impl = new_impl->zone_ ? new_impl.release() : utc_impl;
|
82
|
+
}
|
83
|
+
*tz = time_zone(impl);
|
84
|
+
return impl != utc_impl;
|
85
|
+
}
|
86
|
+
|
87
|
+
void time_zone::Impl::ClearTimeZoneMapTestOnly() {
|
88
|
+
std::lock_guard<std::mutex> lock(TimeZoneMutex());
|
89
|
+
if (time_zone_map != nullptr) {
|
90
|
+
// Existing time_zone::Impl* entries are in the wild, so we can't delete
|
91
|
+
// them. Instead, we move them to a private container, where they are
|
92
|
+
// logically unreachable but not "leaked". Future requests will result
|
93
|
+
// in reloading the data.
|
94
|
+
static auto* cleared = new std::deque<const time_zone::Impl*>;
|
95
|
+
for (const auto& element : *time_zone_map) {
|
96
|
+
cleared->push_back(element.second);
|
97
|
+
}
|
98
|
+
time_zone_map->clear();
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
time_zone::Impl::Impl(const std::string& name)
|
103
|
+
: name_(name), zone_(TimeZoneIf::Load(name_)) {}
|
104
|
+
|
105
|
+
const time_zone::Impl* time_zone::Impl::UTCImpl() {
|
106
|
+
static const Impl* utc_impl = new Impl("UTC"); // never fails
|
107
|
+
return utc_impl;
|
108
|
+
}
|
109
|
+
|
110
|
+
} // namespace cctz
|
111
|
+
} // namespace time_internal
|
112
|
+
ABSL_NAMESPACE_END
|
113
|
+
} // namespace absl
|
@@ -0,0 +1,93 @@
|
|
1
|
+
// Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IMPL_H_
|
16
|
+
#define ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IMPL_H_
|
17
|
+
|
18
|
+
#include <memory>
|
19
|
+
#include <string>
|
20
|
+
|
21
|
+
#include "absl/base/config.h"
|
22
|
+
#include "absl/time/internal/cctz/include/cctz/civil_time.h"
|
23
|
+
#include "absl/time/internal/cctz/include/cctz/time_zone.h"
|
24
|
+
#include "time_zone_if.h"
|
25
|
+
#include "time_zone_info.h"
|
26
|
+
|
27
|
+
namespace absl {
|
28
|
+
ABSL_NAMESPACE_BEGIN
|
29
|
+
namespace time_internal {
|
30
|
+
namespace cctz {
|
31
|
+
|
32
|
+
// time_zone::Impl is the internal object referenced by a cctz::time_zone.
|
33
|
+
class time_zone::Impl {
|
34
|
+
public:
|
35
|
+
// The UTC time zone. Also used for other time zones that fail to load.
|
36
|
+
static time_zone UTC();
|
37
|
+
|
38
|
+
// Load a named time zone. Returns false if the name is invalid, or if
|
39
|
+
// some other kind of error occurs. Note that loading "UTC" never fails.
|
40
|
+
static bool LoadTimeZone(const std::string& name, time_zone* tz);
|
41
|
+
|
42
|
+
// Clears the map of cached time zones. Primarily for use in benchmarks
|
43
|
+
// that gauge the performance of loading/parsing the time-zone data.
|
44
|
+
static void ClearTimeZoneMapTestOnly();
|
45
|
+
|
46
|
+
// The primary key is the time-zone ID (e.g., "America/New_York").
|
47
|
+
const std::string& Name() const {
|
48
|
+
// TODO: It would nice if the zoneinfo data included the zone name.
|
49
|
+
return name_;
|
50
|
+
}
|
51
|
+
|
52
|
+
// Breaks a time_point down to civil-time components in this time zone.
|
53
|
+
time_zone::absolute_lookup BreakTime(const time_point<seconds>& tp) const {
|
54
|
+
return zone_->BreakTime(tp);
|
55
|
+
}
|
56
|
+
|
57
|
+
// Converts the civil-time components in this time zone into a time_point.
|
58
|
+
// That is, the opposite of BreakTime(). The requested civil time may be
|
59
|
+
// ambiguous or illegal due to a change of UTC offset.
|
60
|
+
time_zone::civil_lookup MakeTime(const civil_second& cs) const {
|
61
|
+
return zone_->MakeTime(cs);
|
62
|
+
}
|
63
|
+
|
64
|
+
// Finds the time of the next/previous offset change in this time zone.
|
65
|
+
bool NextTransition(const time_point<seconds>& tp,
|
66
|
+
time_zone::civil_transition* trans) const {
|
67
|
+
return zone_->NextTransition(tp, trans);
|
68
|
+
}
|
69
|
+
bool PrevTransition(const time_point<seconds>& tp,
|
70
|
+
time_zone::civil_transition* trans) const {
|
71
|
+
return zone_->PrevTransition(tp, trans);
|
72
|
+
}
|
73
|
+
|
74
|
+
// Returns an implementation-defined version string for this time zone.
|
75
|
+
std::string Version() const { return zone_->Version(); }
|
76
|
+
|
77
|
+
// Returns an implementation-defined description of this time zone.
|
78
|
+
std::string Description() const { return zone_->Description(); }
|
79
|
+
|
80
|
+
private:
|
81
|
+
explicit Impl(const std::string& name);
|
82
|
+
static const Impl* UTCImpl();
|
83
|
+
|
84
|
+
const std::string name_;
|
85
|
+
std::unique_ptr<TimeZoneIf> zone_;
|
86
|
+
};
|
87
|
+
|
88
|
+
} // namespace cctz
|
89
|
+
} // namespace time_internal
|
90
|
+
ABSL_NAMESPACE_END
|
91
|
+
} // namespace absl
|
92
|
+
|
93
|
+
#endif // ABSL_TIME_INTERNAL_CCTZ_TIME_ZONE_IMPL_H_
|
@@ -0,0 +1,965 @@
|
|
1
|
+
// Copyright 2016 Google Inc. All Rights Reserved.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
// This file implements the TimeZoneIf interface using the "zoneinfo"
|
16
|
+
// data provided by the IANA Time Zone Database (i.e., the only real game
|
17
|
+
// in town).
|
18
|
+
//
|
19
|
+
// TimeZoneInfo represents the history of UTC-offset changes within a time
|
20
|
+
// zone. Most changes are due to daylight-saving rules, but occasionally
|
21
|
+
// shifts are made to the time-zone's base offset. The database only attempts
|
22
|
+
// to be definitive for times since 1970, so be wary of local-time conversions
|
23
|
+
// before that. Also, rule and zone-boundary changes are made at the whim
|
24
|
+
// of governments, so the conversion of future times needs to be taken with
|
25
|
+
// a grain of salt.
|
26
|
+
//
|
27
|
+
// For more information see tzfile(5), http://www.iana.org/time-zones, or
|
28
|
+
// https://en.wikipedia.org/wiki/Zoneinfo.
|
29
|
+
//
|
30
|
+
// Note that we assume the proleptic Gregorian calendar and 60-second
|
31
|
+
// minutes throughout.
|
32
|
+
|
33
|
+
#include "time_zone_info.h"
|
34
|
+
|
35
|
+
#include <algorithm>
|
36
|
+
#include <cassert>
|
37
|
+
#include <chrono>
|
38
|
+
#include <cstdint>
|
39
|
+
#include <cstdio>
|
40
|
+
#include <cstdlib>
|
41
|
+
#include <cstring>
|
42
|
+
#include <functional>
|
43
|
+
#include <memory>
|
44
|
+
#include <sstream>
|
45
|
+
#include <string>
|
46
|
+
|
47
|
+
#include "absl/base/config.h"
|
48
|
+
#include "absl/time/internal/cctz/include/cctz/civil_time.h"
|
49
|
+
#include "time_zone_fixed.h"
|
50
|
+
#include "time_zone_posix.h"
|
51
|
+
|
52
|
+
namespace absl {
|
53
|
+
ABSL_NAMESPACE_BEGIN
|
54
|
+
namespace time_internal {
|
55
|
+
namespace cctz {
|
56
|
+
|
57
|
+
namespace {
|
58
|
+
|
59
|
+
inline bool IsLeap(year_t year) {
|
60
|
+
return (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0);
|
61
|
+
}
|
62
|
+
|
63
|
+
// The number of days in non-leap and leap years respectively.
|
64
|
+
const std::int_least32_t kDaysPerYear[2] = {365, 366};
|
65
|
+
|
66
|
+
// The day offsets of the beginning of each (1-based) month in non-leap and
|
67
|
+
// leap years respectively (e.g., 335 days before December in a leap year).
|
68
|
+
const std::int_least16_t kMonthOffsets[2][1 + 12 + 1] = {
|
69
|
+
{-1, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365},
|
70
|
+
{-1, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366},
|
71
|
+
};
|
72
|
+
|
73
|
+
// We reject leap-second encoded zoneinfo and so assume 60-second minutes.
|
74
|
+
const std::int_least32_t kSecsPerDay = 24 * 60 * 60;
|
75
|
+
|
76
|
+
// 400-year chunks always have 146097 days (20871 weeks).
|
77
|
+
const std::int_least64_t kSecsPer400Years = 146097LL * kSecsPerDay;
|
78
|
+
|
79
|
+
// Like kDaysPerYear[] but scaled up by a factor of kSecsPerDay.
|
80
|
+
const std::int_least32_t kSecsPerYear[2] = {
|
81
|
+
365 * kSecsPerDay,
|
82
|
+
366 * kSecsPerDay,
|
83
|
+
};
|
84
|
+
|
85
|
+
// Convert a cctz::weekday to a POSIX TZ weekday number (0==Sun, ..., 6=Sat).
|
86
|
+
inline int ToPosixWeekday(weekday wd) {
|
87
|
+
switch (wd) {
|
88
|
+
case weekday::sunday:
|
89
|
+
return 0;
|
90
|
+
case weekday::monday:
|
91
|
+
return 1;
|
92
|
+
case weekday::tuesday:
|
93
|
+
return 2;
|
94
|
+
case weekday::wednesday:
|
95
|
+
return 3;
|
96
|
+
case weekday::thursday:
|
97
|
+
return 4;
|
98
|
+
case weekday::friday:
|
99
|
+
return 5;
|
100
|
+
case weekday::saturday:
|
101
|
+
return 6;
|
102
|
+
}
|
103
|
+
return 0; /*NOTREACHED*/
|
104
|
+
}
|
105
|
+
|
106
|
+
// Single-byte, unsigned numeric values are encoded directly.
|
107
|
+
inline std::uint_fast8_t Decode8(const char* cp) {
|
108
|
+
return static_cast<std::uint_fast8_t>(*cp) & 0xff;
|
109
|
+
}
|
110
|
+
|
111
|
+
// Multi-byte, numeric values are encoded using a MSB first,
|
112
|
+
// twos-complement representation. These helpers decode, from
|
113
|
+
// the given address, 4-byte and 8-byte values respectively.
|
114
|
+
// Note: If int_fastXX_t == intXX_t and this machine is not
|
115
|
+
// twos complement, then there will be at least one input value
|
116
|
+
// we cannot represent.
|
117
|
+
std::int_fast32_t Decode32(const char* cp) {
|
118
|
+
std::uint_fast32_t v = 0;
|
119
|
+
for (int i = 0; i != (32 / 8); ++i) v = (v << 8) | Decode8(cp++);
|
120
|
+
const std::int_fast32_t s32max = 0x7fffffff;
|
121
|
+
const auto s32maxU = static_cast<std::uint_fast32_t>(s32max);
|
122
|
+
if (v <= s32maxU) return static_cast<std::int_fast32_t>(v);
|
123
|
+
return static_cast<std::int_fast32_t>(v - s32maxU - 1) - s32max - 1;
|
124
|
+
}
|
125
|
+
|
126
|
+
std::int_fast64_t Decode64(const char* cp) {
|
127
|
+
std::uint_fast64_t v = 0;
|
128
|
+
for (int i = 0; i != (64 / 8); ++i) v = (v << 8) | Decode8(cp++);
|
129
|
+
const std::int_fast64_t s64max = 0x7fffffffffffffff;
|
130
|
+
const auto s64maxU = static_cast<std::uint_fast64_t>(s64max);
|
131
|
+
if (v <= s64maxU) return static_cast<std::int_fast64_t>(v);
|
132
|
+
return static_cast<std::int_fast64_t>(v - s64maxU - 1) - s64max - 1;
|
133
|
+
}
|
134
|
+
|
135
|
+
// Generate a year-relative offset for a PosixTransition.
|
136
|
+
std::int_fast64_t TransOffset(bool leap_year, int jan1_weekday,
|
137
|
+
const PosixTransition& pt) {
|
138
|
+
std::int_fast64_t days = 0;
|
139
|
+
switch (pt.date.fmt) {
|
140
|
+
case PosixTransition::J: {
|
141
|
+
days = pt.date.j.day;
|
142
|
+
if (!leap_year || days < kMonthOffsets[1][3]) days -= 1;
|
143
|
+
break;
|
144
|
+
}
|
145
|
+
case PosixTransition::N: {
|
146
|
+
days = pt.date.n.day;
|
147
|
+
break;
|
148
|
+
}
|
149
|
+
case PosixTransition::M: {
|
150
|
+
const bool last_week = (pt.date.m.week == 5);
|
151
|
+
days = kMonthOffsets[leap_year][pt.date.m.month + last_week];
|
152
|
+
const std::int_fast64_t weekday = (jan1_weekday + days) % 7;
|
153
|
+
if (last_week) {
|
154
|
+
days -= (weekday + 7 - 1 - pt.date.m.weekday) % 7 + 1;
|
155
|
+
} else {
|
156
|
+
days += (pt.date.m.weekday + 7 - weekday) % 7;
|
157
|
+
days += (pt.date.m.week - 1) * 7;
|
158
|
+
}
|
159
|
+
break;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
return (days * kSecsPerDay) + pt.time.offset;
|
163
|
+
}
|
164
|
+
|
165
|
+
inline time_zone::civil_lookup MakeUnique(const time_point<seconds>& tp) {
|
166
|
+
time_zone::civil_lookup cl;
|
167
|
+
cl.kind = time_zone::civil_lookup::UNIQUE;
|
168
|
+
cl.pre = cl.trans = cl.post = tp;
|
169
|
+
return cl;
|
170
|
+
}
|
171
|
+
|
172
|
+
inline time_zone::civil_lookup MakeUnique(std::int_fast64_t unix_time) {
|
173
|
+
return MakeUnique(FromUnixSeconds(unix_time));
|
174
|
+
}
|
175
|
+
|
176
|
+
inline time_zone::civil_lookup MakeSkipped(const Transition& tr,
|
177
|
+
const civil_second& cs) {
|
178
|
+
time_zone::civil_lookup cl;
|
179
|
+
cl.kind = time_zone::civil_lookup::SKIPPED;
|
180
|
+
cl.pre = FromUnixSeconds(tr.unix_time - 1 + (cs - tr.prev_civil_sec));
|
181
|
+
cl.trans = FromUnixSeconds(tr.unix_time);
|
182
|
+
cl.post = FromUnixSeconds(tr.unix_time - (tr.civil_sec - cs));
|
183
|
+
return cl;
|
184
|
+
}
|
185
|
+
|
186
|
+
inline time_zone::civil_lookup MakeRepeated(const Transition& tr,
|
187
|
+
const civil_second& cs) {
|
188
|
+
time_zone::civil_lookup cl;
|
189
|
+
cl.kind = time_zone::civil_lookup::REPEATED;
|
190
|
+
cl.pre = FromUnixSeconds(tr.unix_time - 1 - (tr.prev_civil_sec - cs));
|
191
|
+
cl.trans = FromUnixSeconds(tr.unix_time);
|
192
|
+
cl.post = FromUnixSeconds(tr.unix_time + (cs - tr.civil_sec));
|
193
|
+
return cl;
|
194
|
+
}
|
195
|
+
|
196
|
+
inline civil_second YearShift(const civil_second& cs, year_t shift) {
|
197
|
+
return civil_second(cs.year() + shift, cs.month(), cs.day(), cs.hour(),
|
198
|
+
cs.minute(), cs.second());
|
199
|
+
}
|
200
|
+
|
201
|
+
} // namespace
|
202
|
+
|
203
|
+
// What (no leap-seconds) UTC+seconds zoneinfo would look like.
|
204
|
+
bool TimeZoneInfo::ResetToBuiltinUTC(const seconds& offset) {
|
205
|
+
transition_types_.resize(1);
|
206
|
+
TransitionType& tt(transition_types_.back());
|
207
|
+
tt.utc_offset = static_cast<std::int_least32_t>(offset.count());
|
208
|
+
tt.is_dst = false;
|
209
|
+
tt.abbr_index = 0;
|
210
|
+
|
211
|
+
// We temporarily add some redundant, contemporary (2015 through 2025)
|
212
|
+
// transitions for performance reasons. See TimeZoneInfo::LocalTime().
|
213
|
+
// TODO: Fix the performance issue and remove the extra transitions.
|
214
|
+
transitions_.clear();
|
215
|
+
transitions_.reserve(12);
|
216
|
+
for (const std::int_fast64_t unix_time : {
|
217
|
+
-(1LL << 59), // a "first half" transition
|
218
|
+
1420070400LL, // 2015-01-01T00:00:00+00:00
|
219
|
+
1451606400LL, // 2016-01-01T00:00:00+00:00
|
220
|
+
1483228800LL, // 2017-01-01T00:00:00+00:00
|
221
|
+
1514764800LL, // 2018-01-01T00:00:00+00:00
|
222
|
+
1546300800LL, // 2019-01-01T00:00:00+00:00
|
223
|
+
1577836800LL, // 2020-01-01T00:00:00+00:00
|
224
|
+
1609459200LL, // 2021-01-01T00:00:00+00:00
|
225
|
+
1640995200LL, // 2022-01-01T00:00:00+00:00
|
226
|
+
1672531200LL, // 2023-01-01T00:00:00+00:00
|
227
|
+
1704067200LL, // 2024-01-01T00:00:00+00:00
|
228
|
+
1735689600LL, // 2025-01-01T00:00:00+00:00
|
229
|
+
}) {
|
230
|
+
Transition& tr(*transitions_.emplace(transitions_.end()));
|
231
|
+
tr.unix_time = unix_time;
|
232
|
+
tr.type_index = 0;
|
233
|
+
tr.civil_sec = LocalTime(tr.unix_time, tt).cs;
|
234
|
+
tr.prev_civil_sec = tr.civil_sec - 1;
|
235
|
+
}
|
236
|
+
|
237
|
+
default_transition_type_ = 0;
|
238
|
+
abbreviations_ = FixedOffsetToAbbr(offset);
|
239
|
+
abbreviations_.append(1, '\0');
|
240
|
+
future_spec_.clear(); // never needed for a fixed-offset zone
|
241
|
+
extended_ = false;
|
242
|
+
|
243
|
+
tt.civil_max = LocalTime(seconds::max().count(), tt).cs;
|
244
|
+
tt.civil_min = LocalTime(seconds::min().count(), tt).cs;
|
245
|
+
|
246
|
+
transitions_.shrink_to_fit();
|
247
|
+
return true;
|
248
|
+
}
|
249
|
+
|
250
|
+
// Builds the in-memory header using the raw bytes from the file.
|
251
|
+
bool TimeZoneInfo::Header::Build(const tzhead& tzh) {
|
252
|
+
std::int_fast32_t v;
|
253
|
+
if ((v = Decode32(tzh.tzh_timecnt)) < 0) return false;
|
254
|
+
timecnt = static_cast<std::size_t>(v);
|
255
|
+
if ((v = Decode32(tzh.tzh_typecnt)) < 0) return false;
|
256
|
+
typecnt = static_cast<std::size_t>(v);
|
257
|
+
if ((v = Decode32(tzh.tzh_charcnt)) < 0) return false;
|
258
|
+
charcnt = static_cast<std::size_t>(v);
|
259
|
+
if ((v = Decode32(tzh.tzh_leapcnt)) < 0) return false;
|
260
|
+
leapcnt = static_cast<std::size_t>(v);
|
261
|
+
if ((v = Decode32(tzh.tzh_ttisstdcnt)) < 0) return false;
|
262
|
+
ttisstdcnt = static_cast<std::size_t>(v);
|
263
|
+
if ((v = Decode32(tzh.tzh_ttisutcnt)) < 0) return false;
|
264
|
+
ttisutcnt = static_cast<std::size_t>(v);
|
265
|
+
return true;
|
266
|
+
}
|
267
|
+
|
268
|
+
// How many bytes of data are associated with this header. The result
|
269
|
+
// depends upon whether this is a section with 4-byte or 8-byte times.
|
270
|
+
std::size_t TimeZoneInfo::Header::DataLength(std::size_t time_len) const {
|
271
|
+
std::size_t len = 0;
|
272
|
+
len += (time_len + 1) * timecnt; // unix_time + type_index
|
273
|
+
len += (4 + 1 + 1) * typecnt; // utc_offset + is_dst + abbr_index
|
274
|
+
len += 1 * charcnt; // abbreviations
|
275
|
+
len += (time_len + 4) * leapcnt; // leap-time + TAI-UTC
|
276
|
+
len += 1 * ttisstdcnt; // UTC/local indicators
|
277
|
+
len += 1 * ttisutcnt; // standard/wall indicators
|
278
|
+
return len;
|
279
|
+
}
|
280
|
+
|
281
|
+
// zic(8) can generate no-op transitions when a zone changes rules at an
|
282
|
+
// instant when there is actually no discontinuity. So we check whether
|
283
|
+
// two transitions have equivalent types (same offset/is_dst/abbr).
|
284
|
+
bool TimeZoneInfo::EquivTransitions(std::uint_fast8_t tt1_index,
|
285
|
+
std::uint_fast8_t tt2_index) const {
|
286
|
+
if (tt1_index == tt2_index) return true;
|
287
|
+
const TransitionType& tt1(transition_types_[tt1_index]);
|
288
|
+
const TransitionType& tt2(transition_types_[tt2_index]);
|
289
|
+
if (tt1.utc_offset != tt2.utc_offset) return false;
|
290
|
+
if (tt1.is_dst != tt2.is_dst) return false;
|
291
|
+
if (tt1.abbr_index != tt2.abbr_index) return false;
|
292
|
+
return true;
|
293
|
+
}
|
294
|
+
|
295
|
+
// Find/make a transition type with these attributes.
|
296
|
+
bool TimeZoneInfo::GetTransitionType(std::int_fast32_t utc_offset, bool is_dst,
|
297
|
+
const std::string& abbr,
|
298
|
+
std::uint_least8_t* index) {
|
299
|
+
std::size_t type_index = 0;
|
300
|
+
std::size_t abbr_index = abbreviations_.size();
|
301
|
+
for (; type_index != transition_types_.size(); ++type_index) {
|
302
|
+
const TransitionType& tt(transition_types_[type_index]);
|
303
|
+
const char* tt_abbr = &abbreviations_[tt.abbr_index];
|
304
|
+
if (tt_abbr == abbr) abbr_index = tt.abbr_index;
|
305
|
+
if (tt.utc_offset == utc_offset && tt.is_dst == is_dst) {
|
306
|
+
if (abbr_index == tt.abbr_index) break; // reuse
|
307
|
+
}
|
308
|
+
}
|
309
|
+
if (type_index > 255 || abbr_index > 255) {
|
310
|
+
// No index space (8 bits) available for a new type or abbreviation.
|
311
|
+
return false;
|
312
|
+
}
|
313
|
+
if (type_index == transition_types_.size()) {
|
314
|
+
TransitionType& tt(*transition_types_.emplace(transition_types_.end()));
|
315
|
+
tt.utc_offset = static_cast<std::int_least32_t>(utc_offset);
|
316
|
+
tt.is_dst = is_dst;
|
317
|
+
if (abbr_index == abbreviations_.size()) {
|
318
|
+
abbreviations_.append(abbr);
|
319
|
+
abbreviations_.append(1, '\0');
|
320
|
+
}
|
321
|
+
tt.abbr_index = static_cast<std::uint_least8_t>(abbr_index);
|
322
|
+
}
|
323
|
+
*index = static_cast<std::uint_least8_t>(type_index);
|
324
|
+
return true;
|
325
|
+
}
|
326
|
+
|
327
|
+
// Use the POSIX-TZ-environment-variable-style string to handle times
|
328
|
+
// in years after the last transition stored in the zoneinfo data.
|
329
|
+
bool TimeZoneInfo::ExtendTransitions() {
|
330
|
+
extended_ = false;
|
331
|
+
if (future_spec_.empty()) return true; // last transition prevails
|
332
|
+
|
333
|
+
PosixTimeZone posix;
|
334
|
+
if (!ParsePosixSpec(future_spec_, &posix)) return false;
|
335
|
+
|
336
|
+
// Find transition type for the future std specification.
|
337
|
+
std::uint_least8_t std_ti;
|
338
|
+
if (!GetTransitionType(posix.std_offset, false, posix.std_abbr, &std_ti))
|
339
|
+
return false;
|
340
|
+
|
341
|
+
if (posix.dst_abbr.empty()) { // std only
|
342
|
+
// The future specification should match the last transition, and
|
343
|
+
// that means that handling the future will fall out naturally.
|
344
|
+
return EquivTransitions(transitions_.back().type_index, std_ti);
|
345
|
+
}
|
346
|
+
|
347
|
+
// Find transition type for the future dst specification.
|
348
|
+
std::uint_least8_t dst_ti;
|
349
|
+
if (!GetTransitionType(posix.dst_offset, true, posix.dst_abbr, &dst_ti))
|
350
|
+
return false;
|
351
|
+
|
352
|
+
// Extend the transitions for an additional 400 years using the
|
353
|
+
// future specification. Years beyond those can be handled by
|
354
|
+
// mapping back to a cycle-equivalent year within that range.
|
355
|
+
// We may need two additional transitions for the current year.
|
356
|
+
transitions_.reserve(transitions_.size() + 400 * 2 + 2);
|
357
|
+
extended_ = true;
|
358
|
+
|
359
|
+
const Transition& last(transitions_.back());
|
360
|
+
const std::int_fast64_t last_time = last.unix_time;
|
361
|
+
const TransitionType& last_tt(transition_types_[last.type_index]);
|
362
|
+
last_year_ = LocalTime(last_time, last_tt).cs.year();
|
363
|
+
bool leap_year = IsLeap(last_year_);
|
364
|
+
const civil_second jan1(last_year_);
|
365
|
+
std::int_fast64_t jan1_time = jan1 - civil_second();
|
366
|
+
int jan1_weekday = ToPosixWeekday(get_weekday(jan1));
|
367
|
+
|
368
|
+
Transition dst = {0, dst_ti, civil_second(), civil_second()};
|
369
|
+
Transition std = {0, std_ti, civil_second(), civil_second()};
|
370
|
+
for (const year_t limit = last_year_ + 400;; ++last_year_) {
|
371
|
+
auto dst_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_start);
|
372
|
+
auto std_trans_off = TransOffset(leap_year, jan1_weekday, posix.dst_end);
|
373
|
+
dst.unix_time = jan1_time + dst_trans_off - posix.std_offset;
|
374
|
+
std.unix_time = jan1_time + std_trans_off - posix.dst_offset;
|
375
|
+
const auto* ta = dst.unix_time < std.unix_time ? &dst : &std;
|
376
|
+
const auto* tb = dst.unix_time < std.unix_time ? &std : &dst;
|
377
|
+
if (last_time < tb->unix_time) {
|
378
|
+
if (last_time < ta->unix_time) transitions_.push_back(*ta);
|
379
|
+
transitions_.push_back(*tb);
|
380
|
+
}
|
381
|
+
if (last_year_ == limit) break;
|
382
|
+
jan1_time += kSecsPerYear[leap_year];
|
383
|
+
jan1_weekday = (jan1_weekday + kDaysPerYear[leap_year]) % 7;
|
384
|
+
leap_year = !leap_year && IsLeap(last_year_ + 1);
|
385
|
+
}
|
386
|
+
|
387
|
+
return true;
|
388
|
+
}
|
389
|
+
|
390
|
+
bool TimeZoneInfo::Load(ZoneInfoSource* zip) {
|
391
|
+
// Read and validate the header.
|
392
|
+
tzhead tzh;
|
393
|
+
if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false;
|
394
|
+
if (strncmp(tzh.tzh_magic, TZ_MAGIC, sizeof(tzh.tzh_magic)) != 0)
|
395
|
+
return false;
|
396
|
+
Header hdr;
|
397
|
+
if (!hdr.Build(tzh)) return false;
|
398
|
+
std::size_t time_len = 4;
|
399
|
+
if (tzh.tzh_version[0] != '\0') {
|
400
|
+
// Skip the 4-byte data.
|
401
|
+
if (zip->Skip(hdr.DataLength(time_len)) != 0) return false;
|
402
|
+
// Read and validate the header for the 8-byte data.
|
403
|
+
if (zip->Read(&tzh, sizeof(tzh)) != sizeof(tzh)) return false;
|
404
|
+
if (strncmp(tzh.tzh_magic, TZ_MAGIC, sizeof(tzh.tzh_magic)) != 0)
|
405
|
+
return false;
|
406
|
+
if (tzh.tzh_version[0] == '\0') return false;
|
407
|
+
if (!hdr.Build(tzh)) return false;
|
408
|
+
time_len = 8;
|
409
|
+
}
|
410
|
+
if (hdr.typecnt == 0) return false;
|
411
|
+
if (hdr.leapcnt != 0) {
|
412
|
+
// This code assumes 60-second minutes so we do not want
|
413
|
+
// the leap-second encoded zoneinfo. We could reverse the
|
414
|
+
// compensation, but the "right" encoding is rarely used
|
415
|
+
// so currently we simply reject such data.
|
416
|
+
return false;
|
417
|
+
}
|
418
|
+
if (hdr.ttisstdcnt != 0 && hdr.ttisstdcnt != hdr.typecnt) return false;
|
419
|
+
if (hdr.ttisutcnt != 0 && hdr.ttisutcnt != hdr.typecnt) return false;
|
420
|
+
|
421
|
+
// Read the data into a local buffer.
|
422
|
+
std::size_t len = hdr.DataLength(time_len);
|
423
|
+
std::vector<char> tbuf(len);
|
424
|
+
if (zip->Read(tbuf.data(), len) != len) return false;
|
425
|
+
const char* bp = tbuf.data();
|
426
|
+
|
427
|
+
// Decode and validate the transitions.
|
428
|
+
transitions_.reserve(hdr.timecnt + 2);
|
429
|
+
transitions_.resize(hdr.timecnt);
|
430
|
+
for (std::size_t i = 0; i != hdr.timecnt; ++i) {
|
431
|
+
transitions_[i].unix_time = (time_len == 4) ? Decode32(bp) : Decode64(bp);
|
432
|
+
bp += time_len;
|
433
|
+
if (i != 0) {
|
434
|
+
// Check that the transitions are ordered by time (as zic guarantees).
|
435
|
+
if (!Transition::ByUnixTime()(transitions_[i - 1], transitions_[i]))
|
436
|
+
return false; // out of order
|
437
|
+
}
|
438
|
+
}
|
439
|
+
bool seen_type_0 = false;
|
440
|
+
for (std::size_t i = 0; i != hdr.timecnt; ++i) {
|
441
|
+
transitions_[i].type_index = Decode8(bp++);
|
442
|
+
if (transitions_[i].type_index >= hdr.typecnt) return false;
|
443
|
+
if (transitions_[i].type_index == 0) seen_type_0 = true;
|
444
|
+
}
|
445
|
+
|
446
|
+
// Decode and validate the transition types.
|
447
|
+
transition_types_.reserve(hdr.typecnt + 2);
|
448
|
+
transition_types_.resize(hdr.typecnt);
|
449
|
+
for (std::size_t i = 0; i != hdr.typecnt; ++i) {
|
450
|
+
transition_types_[i].utc_offset =
|
451
|
+
static_cast<std::int_least32_t>(Decode32(bp));
|
452
|
+
if (transition_types_[i].utc_offset >= kSecsPerDay ||
|
453
|
+
transition_types_[i].utc_offset <= -kSecsPerDay)
|
454
|
+
return false;
|
455
|
+
bp += 4;
|
456
|
+
transition_types_[i].is_dst = (Decode8(bp++) != 0);
|
457
|
+
transition_types_[i].abbr_index = Decode8(bp++);
|
458
|
+
if (transition_types_[i].abbr_index >= hdr.charcnt) return false;
|
459
|
+
}
|
460
|
+
|
461
|
+
// Determine the before-first-transition type.
|
462
|
+
default_transition_type_ = 0;
|
463
|
+
if (seen_type_0 && hdr.timecnt != 0) {
|
464
|
+
std::uint_fast8_t index = 0;
|
465
|
+
if (transition_types_[0].is_dst) {
|
466
|
+
index = transitions_[0].type_index;
|
467
|
+
while (index != 0 && transition_types_[index].is_dst) --index;
|
468
|
+
}
|
469
|
+
while (index != hdr.typecnt && transition_types_[index].is_dst) ++index;
|
470
|
+
if (index != hdr.typecnt) default_transition_type_ = index;
|
471
|
+
}
|
472
|
+
|
473
|
+
// Copy all the abbreviations.
|
474
|
+
abbreviations_.reserve(hdr.charcnt + 10);
|
475
|
+
abbreviations_.assign(bp, hdr.charcnt);
|
476
|
+
bp += hdr.charcnt;
|
477
|
+
|
478
|
+
// Skip the unused portions. We've already dispensed with leap-second
|
479
|
+
// encoded zoneinfo. The ttisstd/ttisgmt indicators only apply when
|
480
|
+
// interpreting a POSIX spec that does not include start/end rules, and
|
481
|
+
// that isn't the case here (see "zic -p").
|
482
|
+
bp += (8 + 4) * hdr.leapcnt; // leap-time + TAI-UTC
|
483
|
+
bp += 1 * hdr.ttisstdcnt; // UTC/local indicators
|
484
|
+
bp += 1 * hdr.ttisutcnt; // standard/wall indicators
|
485
|
+
assert(bp == tbuf.data() + tbuf.size());
|
486
|
+
|
487
|
+
future_spec_.clear();
|
488
|
+
if (tzh.tzh_version[0] != '\0') {
|
489
|
+
// Snarf up the NL-enclosed future POSIX spec. Note
|
490
|
+
// that version '3' files utilize an extended format.
|
491
|
+
auto get_char = [](ZoneInfoSource* azip) -> int {
|
492
|
+
unsigned char ch; // all non-EOF results are positive
|
493
|
+
return (azip->Read(&ch, 1) == 1) ? ch : EOF;
|
494
|
+
};
|
495
|
+
if (get_char(zip) != '\n') return false;
|
496
|
+
for (int c = get_char(zip); c != '\n'; c = get_char(zip)) {
|
497
|
+
if (c == EOF) return false;
|
498
|
+
future_spec_.push_back(static_cast<char>(c));
|
499
|
+
}
|
500
|
+
}
|
501
|
+
|
502
|
+
// We don't check for EOF so that we're forwards compatible.
|
503
|
+
|
504
|
+
// If we did not find version information during the standard loading
|
505
|
+
// process (as of tzh_version '3' that is unsupported), then ask the
|
506
|
+
// ZoneInfoSource for any out-of-bound version string it may be privy to.
|
507
|
+
if (version_.empty()) {
|
508
|
+
version_ = zip->Version();
|
509
|
+
}
|
510
|
+
|
511
|
+
// Trim redundant transitions. zic may have added these to work around
|
512
|
+
// differences between the glibc and reference implementations (see
|
513
|
+
// zic.c:dontmerge) and the Qt library (see zic.c:WORK_AROUND_QTBUG_53071).
|
514
|
+
// For us, they just get in the way when we do future_spec_ extension.
|
515
|
+
while (hdr.timecnt > 1) {
|
516
|
+
if (!EquivTransitions(transitions_[hdr.timecnt - 1].type_index,
|
517
|
+
transitions_[hdr.timecnt - 2].type_index)) {
|
518
|
+
break;
|
519
|
+
}
|
520
|
+
hdr.timecnt -= 1;
|
521
|
+
}
|
522
|
+
transitions_.resize(hdr.timecnt);
|
523
|
+
|
524
|
+
// Ensure that there is always a transition in the first half of the
|
525
|
+
// time line (the second half is handled below) so that the signed
|
526
|
+
// difference between a civil_second and the civil_second of its
|
527
|
+
// previous transition is always representable, without overflow.
|
528
|
+
if (transitions_.empty() || transitions_.front().unix_time >= 0) {
|
529
|
+
Transition& tr(*transitions_.emplace(transitions_.begin()));
|
530
|
+
tr.unix_time = -(1LL << 59); // -18267312070-10-26T17:01:52+00:00
|
531
|
+
tr.type_index = default_transition_type_;
|
532
|
+
}
|
533
|
+
|
534
|
+
// Extend the transitions using the future specification.
|
535
|
+
if (!ExtendTransitions()) return false;
|
536
|
+
|
537
|
+
// Ensure that there is always a transition in the second half of the
|
538
|
+
// time line (the first half is handled above) so that the signed
|
539
|
+
// difference between a civil_second and the civil_second of its
|
540
|
+
// previous transition is always representable, without overflow.
|
541
|
+
const Transition& last(transitions_.back());
|
542
|
+
if (last.unix_time < 0) {
|
543
|
+
const std::uint_fast8_t type_index = last.type_index;
|
544
|
+
Transition& tr(*transitions_.emplace(transitions_.end()));
|
545
|
+
tr.unix_time = 2147483647; // 2038-01-19T03:14:07+00:00
|
546
|
+
tr.type_index = type_index;
|
547
|
+
}
|
548
|
+
|
549
|
+
// Compute the local civil time for each transition and the preceding
|
550
|
+
// second. These will be used for reverse conversions in MakeTime().
|
551
|
+
const TransitionType* ttp = &transition_types_[default_transition_type_];
|
552
|
+
for (std::size_t i = 0; i != transitions_.size(); ++i) {
|
553
|
+
Transition& tr(transitions_[i]);
|
554
|
+
tr.prev_civil_sec = LocalTime(tr.unix_time, *ttp).cs - 1;
|
555
|
+
ttp = &transition_types_[tr.type_index];
|
556
|
+
tr.civil_sec = LocalTime(tr.unix_time, *ttp).cs;
|
557
|
+
if (i != 0) {
|
558
|
+
// Check that the transitions are ordered by civil time. Essentially
|
559
|
+
// this means that an offset change cannot cross another such change.
|
560
|
+
// No one does this in practice, and we depend on it in MakeTime().
|
561
|
+
if (!Transition::ByCivilTime()(transitions_[i - 1], tr))
|
562
|
+
return false; // out of order
|
563
|
+
}
|
564
|
+
}
|
565
|
+
|
566
|
+
// Compute the maximum/minimum civil times that can be converted to a
|
567
|
+
// time_point<seconds> for each of the zone's transition types.
|
568
|
+
for (auto& tt : transition_types_) {
|
569
|
+
tt.civil_max = LocalTime(seconds::max().count(), tt).cs;
|
570
|
+
tt.civil_min = LocalTime(seconds::min().count(), tt).cs;
|
571
|
+
}
|
572
|
+
|
573
|
+
transitions_.shrink_to_fit();
|
574
|
+
return true;
|
575
|
+
}
|
576
|
+
|
577
|
+
namespace {
|
578
|
+
|
579
|
+
// fopen(3) adaptor.
|
580
|
+
inline FILE* FOpen(const char* path, const char* mode) {
|
581
|
+
#if defined(_MSC_VER)
|
582
|
+
FILE* fp;
|
583
|
+
if (fopen_s(&fp, path, mode) != 0) fp = nullptr;
|
584
|
+
return fp;
|
585
|
+
#else
|
586
|
+
return fopen(path, mode); // TODO: Enable the close-on-exec flag.
|
587
|
+
#endif
|
588
|
+
}
|
589
|
+
|
590
|
+
// A stdio(3)-backed implementation of ZoneInfoSource.
|
591
|
+
class FileZoneInfoSource : public ZoneInfoSource {
|
592
|
+
public:
|
593
|
+
static std::unique_ptr<ZoneInfoSource> Open(const std::string& name);
|
594
|
+
|
595
|
+
std::size_t Read(void* ptr, std::size_t size) override {
|
596
|
+
size = std::min(size, len_);
|
597
|
+
std::size_t nread = fread(ptr, 1, size, fp_.get());
|
598
|
+
len_ -= nread;
|
599
|
+
return nread;
|
600
|
+
}
|
601
|
+
int Skip(std::size_t offset) override {
|
602
|
+
offset = std::min(offset, len_);
|
603
|
+
int rc = fseek(fp_.get(), static_cast<long>(offset), SEEK_CUR);
|
604
|
+
if (rc == 0) len_ -= offset;
|
605
|
+
return rc;
|
606
|
+
}
|
607
|
+
std::string Version() const override {
|
608
|
+
// TODO: It would nice if the zoneinfo data included the tzdb version.
|
609
|
+
return std::string();
|
610
|
+
}
|
611
|
+
|
612
|
+
protected:
|
613
|
+
explicit FileZoneInfoSource(
|
614
|
+
FILE* fp, std::size_t len = std::numeric_limits<std::size_t>::max())
|
615
|
+
: fp_(fp, fclose), len_(len) {}
|
616
|
+
|
617
|
+
private:
|
618
|
+
std::unique_ptr<FILE, int (*)(FILE*)> fp_;
|
619
|
+
std::size_t len_;
|
620
|
+
};
|
621
|
+
|
622
|
+
std::unique_ptr<ZoneInfoSource> FileZoneInfoSource::Open(
|
623
|
+
const std::string& name) {
|
624
|
+
// Use of the "file:" prefix is intended for testing purposes only.
|
625
|
+
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
|
626
|
+
|
627
|
+
// Map the time-zone name to a path name.
|
628
|
+
std::string path;
|
629
|
+
if (pos == name.size() || name[pos] != '/') {
|
630
|
+
const char* tzdir = "/usr/share/zoneinfo";
|
631
|
+
char* tzdir_env = nullptr;
|
632
|
+
#if defined(_MSC_VER)
|
633
|
+
_dupenv_s(&tzdir_env, nullptr, "TZDIR");
|
634
|
+
#else
|
635
|
+
tzdir_env = std::getenv("TZDIR");
|
636
|
+
#endif
|
637
|
+
if (tzdir_env && *tzdir_env) tzdir = tzdir_env;
|
638
|
+
path += tzdir;
|
639
|
+
path += '/';
|
640
|
+
#if defined(_MSC_VER)
|
641
|
+
free(tzdir_env);
|
642
|
+
#endif
|
643
|
+
}
|
644
|
+
path.append(name, pos, std::string::npos);
|
645
|
+
|
646
|
+
// Open the zoneinfo file.
|
647
|
+
FILE* fp = FOpen(path.c_str(), "rb");
|
648
|
+
if (fp == nullptr) return nullptr;
|
649
|
+
std::size_t length = 0;
|
650
|
+
if (fseek(fp, 0, SEEK_END) == 0) {
|
651
|
+
long offset = ftell(fp);
|
652
|
+
if (offset >= 0) {
|
653
|
+
length = static_cast<std::size_t>(offset);
|
654
|
+
}
|
655
|
+
rewind(fp);
|
656
|
+
}
|
657
|
+
return std::unique_ptr<ZoneInfoSource>(new FileZoneInfoSource(fp, length));
|
658
|
+
}
|
659
|
+
|
660
|
+
class AndroidZoneInfoSource : public FileZoneInfoSource {
|
661
|
+
public:
|
662
|
+
static std::unique_ptr<ZoneInfoSource> Open(const std::string& name);
|
663
|
+
std::string Version() const override { return version_; }
|
664
|
+
|
665
|
+
private:
|
666
|
+
explicit AndroidZoneInfoSource(FILE* fp, std::size_t len, const char* vers)
|
667
|
+
: FileZoneInfoSource(fp, len), version_(vers) {}
|
668
|
+
std::string version_;
|
669
|
+
};
|
670
|
+
|
671
|
+
std::unique_ptr<ZoneInfoSource> AndroidZoneInfoSource::Open(
|
672
|
+
const std::string& name) {
|
673
|
+
// Use of the "file:" prefix is intended for testing purposes only.
|
674
|
+
const std::size_t pos = (name.compare(0, 5, "file:") == 0) ? 5 : 0;
|
675
|
+
|
676
|
+
// See Android's libc/tzcode/bionic.cpp for additional information.
|
677
|
+
for (const char* tzdata : {"/data/misc/zoneinfo/current/tzdata",
|
678
|
+
"/system/usr/share/zoneinfo/tzdata"}) {
|
679
|
+
std::unique_ptr<FILE, int (*)(FILE*)> fp(FOpen(tzdata, "rb"), fclose);
|
680
|
+
if (fp.get() == nullptr) continue;
|
681
|
+
|
682
|
+
char hbuf[24]; // covers header.zonetab_offset too
|
683
|
+
if (fread(hbuf, 1, sizeof(hbuf), fp.get()) != sizeof(hbuf)) continue;
|
684
|
+
if (strncmp(hbuf, "tzdata", 6) != 0) continue;
|
685
|
+
const char* vers = (hbuf[11] == '\0') ? hbuf + 6 : "";
|
686
|
+
const std::int_fast32_t index_offset = Decode32(hbuf + 12);
|
687
|
+
const std::int_fast32_t data_offset = Decode32(hbuf + 16);
|
688
|
+
if (index_offset < 0 || data_offset < index_offset) continue;
|
689
|
+
if (fseek(fp.get(), static_cast<long>(index_offset), SEEK_SET) != 0)
|
690
|
+
continue;
|
691
|
+
|
692
|
+
char ebuf[52]; // covers entry.unused too
|
693
|
+
const std::size_t index_size =
|
694
|
+
static_cast<std::size_t>(data_offset - index_offset);
|
695
|
+
const std::size_t zonecnt = index_size / sizeof(ebuf);
|
696
|
+
if (zonecnt * sizeof(ebuf) != index_size) continue;
|
697
|
+
for (std::size_t i = 0; i != zonecnt; ++i) {
|
698
|
+
if (fread(ebuf, 1, sizeof(ebuf), fp.get()) != sizeof(ebuf)) break;
|
699
|
+
const std::int_fast32_t start = data_offset + Decode32(ebuf + 40);
|
700
|
+
const std::int_fast32_t length = Decode32(ebuf + 44);
|
701
|
+
if (start < 0 || length < 0) break;
|
702
|
+
ebuf[40] = '\0'; // ensure zone name is NUL terminated
|
703
|
+
if (strcmp(name.c_str() + pos, ebuf) == 0) {
|
704
|
+
if (fseek(fp.get(), static_cast<long>(start), SEEK_SET) != 0) break;
|
705
|
+
return std::unique_ptr<ZoneInfoSource>(new AndroidZoneInfoSource(
|
706
|
+
fp.release(), static_cast<std::size_t>(length), vers));
|
707
|
+
}
|
708
|
+
}
|
709
|
+
}
|
710
|
+
|
711
|
+
return nullptr;
|
712
|
+
}
|
713
|
+
|
714
|
+
} // namespace
|
715
|
+
|
716
|
+
bool TimeZoneInfo::Load(const std::string& name) {
|
717
|
+
// We can ensure that the loading of UTC or any other fixed-offset
|
718
|
+
// zone never fails because the simple, fixed-offset state can be
|
719
|
+
// internally generated. Note that this depends on our choice to not
|
720
|
+
// accept leap-second encoded ("right") zoneinfo.
|
721
|
+
auto offset = seconds::zero();
|
722
|
+
if (FixedOffsetFromName(name, &offset)) {
|
723
|
+
return ResetToBuiltinUTC(offset);
|
724
|
+
}
|
725
|
+
|
726
|
+
// Find and use a ZoneInfoSource to load the named zone.
|
727
|
+
auto zip = cctz_extension::zone_info_source_factory(
|
728
|
+
name, [](const std::string& n) -> std::unique_ptr<ZoneInfoSource> {
|
729
|
+
if (auto z = FileZoneInfoSource::Open(n)) return z;
|
730
|
+
if (auto z = AndroidZoneInfoSource::Open(n)) return z;
|
731
|
+
return nullptr;
|
732
|
+
});
|
733
|
+
return zip != nullptr && Load(zip.get());
|
734
|
+
}
|
735
|
+
|
736
|
+
// BreakTime() translation for a particular transition type.
|
737
|
+
time_zone::absolute_lookup TimeZoneInfo::LocalTime(
|
738
|
+
std::int_fast64_t unix_time, const TransitionType& tt) const {
|
739
|
+
// A civil time in "+offset" looks like (time+offset) in UTC.
|
740
|
+
// Note: We perform two additions in the civil_second domain to
|
741
|
+
// sidestep the chance of overflow in (unix_time + tt.utc_offset).
|
742
|
+
return {(civil_second() + unix_time) + tt.utc_offset, tt.utc_offset,
|
743
|
+
tt.is_dst, &abbreviations_[tt.abbr_index]};
|
744
|
+
}
|
745
|
+
|
746
|
+
// BreakTime() translation for a particular transition.
|
747
|
+
time_zone::absolute_lookup TimeZoneInfo::LocalTime(std::int_fast64_t unix_time,
|
748
|
+
const Transition& tr) const {
|
749
|
+
const TransitionType& tt = transition_types_[tr.type_index];
|
750
|
+
// Note: (unix_time - tr.unix_time) will never overflow as we
|
751
|
+
// have ensured that there is always a "nearby" transition.
|
752
|
+
return {tr.civil_sec + (unix_time - tr.unix_time), // TODO: Optimize.
|
753
|
+
tt.utc_offset, tt.is_dst, &abbreviations_[tt.abbr_index]};
|
754
|
+
}
|
755
|
+
|
756
|
+
// MakeTime() translation with a conversion-preserving +N * 400-year shift.
|
757
|
+
time_zone::civil_lookup TimeZoneInfo::TimeLocal(const civil_second& cs,
|
758
|
+
year_t c4_shift) const {
|
759
|
+
assert(last_year_ - 400 < cs.year() && cs.year() <= last_year_);
|
760
|
+
time_zone::civil_lookup cl = MakeTime(cs);
|
761
|
+
if (c4_shift > seconds::max().count() / kSecsPer400Years) {
|
762
|
+
cl.pre = cl.trans = cl.post = time_point<seconds>::max();
|
763
|
+
} else {
|
764
|
+
const auto offset = seconds(c4_shift * kSecsPer400Years);
|
765
|
+
const auto limit = time_point<seconds>::max() - offset;
|
766
|
+
for (auto* tp : {&cl.pre, &cl.trans, &cl.post}) {
|
767
|
+
if (*tp > limit) {
|
768
|
+
*tp = time_point<seconds>::max();
|
769
|
+
} else {
|
770
|
+
*tp += offset;
|
771
|
+
}
|
772
|
+
}
|
773
|
+
}
|
774
|
+
return cl;
|
775
|
+
}
|
776
|
+
|
777
|
+
time_zone::absolute_lookup TimeZoneInfo::BreakTime(
|
778
|
+
const time_point<seconds>& tp) const {
|
779
|
+
std::int_fast64_t unix_time = ToUnixSeconds(tp);
|
780
|
+
const std::size_t timecnt = transitions_.size();
|
781
|
+
assert(timecnt != 0); // We always add a transition.
|
782
|
+
|
783
|
+
if (unix_time < transitions_[0].unix_time) {
|
784
|
+
return LocalTime(unix_time, transition_types_[default_transition_type_]);
|
785
|
+
}
|
786
|
+
if (unix_time >= transitions_[timecnt - 1].unix_time) {
|
787
|
+
// After the last transition. If we extended the transitions using
|
788
|
+
// future_spec_, shift back to a supported year using the 400-year
|
789
|
+
// cycle of calendaric equivalence and then compensate accordingly.
|
790
|
+
if (extended_) {
|
791
|
+
const std::int_fast64_t diff =
|
792
|
+
unix_time - transitions_[timecnt - 1].unix_time;
|
793
|
+
const year_t shift = diff / kSecsPer400Years + 1;
|
794
|
+
const auto d = seconds(shift * kSecsPer400Years);
|
795
|
+
time_zone::absolute_lookup al = BreakTime(tp - d);
|
796
|
+
al.cs = YearShift(al.cs, shift * 400);
|
797
|
+
return al;
|
798
|
+
}
|
799
|
+
return LocalTime(unix_time, transitions_[timecnt - 1]);
|
800
|
+
}
|
801
|
+
|
802
|
+
const std::size_t hint = local_time_hint_.load(std::memory_order_relaxed);
|
803
|
+
if (0 < hint && hint < timecnt) {
|
804
|
+
if (transitions_[hint - 1].unix_time <= unix_time) {
|
805
|
+
if (unix_time < transitions_[hint].unix_time) {
|
806
|
+
return LocalTime(unix_time, transitions_[hint - 1]);
|
807
|
+
}
|
808
|
+
}
|
809
|
+
}
|
810
|
+
|
811
|
+
const Transition target = {unix_time, 0, civil_second(), civil_second()};
|
812
|
+
const Transition* begin = &transitions_[0];
|
813
|
+
const Transition* tr = std::upper_bound(begin, begin + timecnt, target,
|
814
|
+
Transition::ByUnixTime());
|
815
|
+
local_time_hint_.store(static_cast<std::size_t>(tr - begin),
|
816
|
+
std::memory_order_relaxed);
|
817
|
+
return LocalTime(unix_time, *--tr);
|
818
|
+
}
|
819
|
+
|
820
|
+
time_zone::civil_lookup TimeZoneInfo::MakeTime(const civil_second& cs) const {
|
821
|
+
const std::size_t timecnt = transitions_.size();
|
822
|
+
assert(timecnt != 0); // We always add a transition.
|
823
|
+
|
824
|
+
// Find the first transition after our target civil time.
|
825
|
+
const Transition* tr = nullptr;
|
826
|
+
const Transition* begin = &transitions_[0];
|
827
|
+
const Transition* end = begin + timecnt;
|
828
|
+
if (cs < begin->civil_sec) {
|
829
|
+
tr = begin;
|
830
|
+
} else if (cs >= transitions_[timecnt - 1].civil_sec) {
|
831
|
+
tr = end;
|
832
|
+
} else {
|
833
|
+
const std::size_t hint = time_local_hint_.load(std::memory_order_relaxed);
|
834
|
+
if (0 < hint && hint < timecnt) {
|
835
|
+
if (transitions_[hint - 1].civil_sec <= cs) {
|
836
|
+
if (cs < transitions_[hint].civil_sec) {
|
837
|
+
tr = begin + hint;
|
838
|
+
}
|
839
|
+
}
|
840
|
+
}
|
841
|
+
if (tr == nullptr) {
|
842
|
+
const Transition target = {0, 0, cs, civil_second()};
|
843
|
+
tr = std::upper_bound(begin, end, target, Transition::ByCivilTime());
|
844
|
+
time_local_hint_.store(static_cast<std::size_t>(tr - begin),
|
845
|
+
std::memory_order_relaxed);
|
846
|
+
}
|
847
|
+
}
|
848
|
+
|
849
|
+
if (tr == begin) {
|
850
|
+
if (tr->prev_civil_sec >= cs) {
|
851
|
+
// Before first transition, so use the default offset.
|
852
|
+
const TransitionType& tt(transition_types_[default_transition_type_]);
|
853
|
+
if (cs < tt.civil_min) return MakeUnique(time_point<seconds>::min());
|
854
|
+
return MakeUnique(cs - (civil_second() + tt.utc_offset));
|
855
|
+
}
|
856
|
+
// tr->prev_civil_sec < cs < tr->civil_sec
|
857
|
+
return MakeSkipped(*tr, cs);
|
858
|
+
}
|
859
|
+
|
860
|
+
if (tr == end) {
|
861
|
+
if (cs > (--tr)->prev_civil_sec) {
|
862
|
+
// After the last transition. If we extended the transitions using
|
863
|
+
// future_spec_, shift back to a supported year using the 400-year
|
864
|
+
// cycle of calendaric equivalence and then compensate accordingly.
|
865
|
+
if (extended_ && cs.year() > last_year_) {
|
866
|
+
const year_t shift = (cs.year() - last_year_ - 1) / 400 + 1;
|
867
|
+
return TimeLocal(YearShift(cs, shift * -400), shift);
|
868
|
+
}
|
869
|
+
const TransitionType& tt(transition_types_[tr->type_index]);
|
870
|
+
if (cs > tt.civil_max) return MakeUnique(time_point<seconds>::max());
|
871
|
+
return MakeUnique(tr->unix_time + (cs - tr->civil_sec));
|
872
|
+
}
|
873
|
+
// tr->civil_sec <= cs <= tr->prev_civil_sec
|
874
|
+
return MakeRepeated(*tr, cs);
|
875
|
+
}
|
876
|
+
|
877
|
+
if (tr->prev_civil_sec < cs) {
|
878
|
+
// tr->prev_civil_sec < cs < tr->civil_sec
|
879
|
+
return MakeSkipped(*tr, cs);
|
880
|
+
}
|
881
|
+
|
882
|
+
if (cs <= (--tr)->prev_civil_sec) {
|
883
|
+
// tr->civil_sec <= cs <= tr->prev_civil_sec
|
884
|
+
return MakeRepeated(*tr, cs);
|
885
|
+
}
|
886
|
+
|
887
|
+
// In between transitions.
|
888
|
+
return MakeUnique(tr->unix_time + (cs - tr->civil_sec));
|
889
|
+
}
|
890
|
+
|
891
|
+
std::string TimeZoneInfo::Version() const { return version_; }
|
892
|
+
|
893
|
+
std::string TimeZoneInfo::Description() const {
|
894
|
+
std::ostringstream oss;
|
895
|
+
oss << "#trans=" << transitions_.size();
|
896
|
+
oss << " #types=" << transition_types_.size();
|
897
|
+
oss << " spec='" << future_spec_ << "'";
|
898
|
+
return oss.str();
|
899
|
+
}
|
900
|
+
|
901
|
+
bool TimeZoneInfo::NextTransition(const time_point<seconds>& tp,
|
902
|
+
time_zone::civil_transition* trans) const {
|
903
|
+
if (transitions_.empty()) return false;
|
904
|
+
const Transition* begin = &transitions_[0];
|
905
|
+
const Transition* end = begin + transitions_.size();
|
906
|
+
if (begin->unix_time <= -(1LL << 59)) {
|
907
|
+
// Do not report the BIG_BANG found in some zoneinfo data as it is
|
908
|
+
// really a sentinel, not a transition. See pre-2018f tz/zic.c.
|
909
|
+
++begin;
|
910
|
+
}
|
911
|
+
std::int_fast64_t unix_time = ToUnixSeconds(tp);
|
912
|
+
const Transition target = {unix_time, 0, civil_second(), civil_second()};
|
913
|
+
const Transition* tr =
|
914
|
+
std::upper_bound(begin, end, target, Transition::ByUnixTime());
|
915
|
+
for (; tr != end; ++tr) { // skip no-op transitions
|
916
|
+
std::uint_fast8_t prev_type_index =
|
917
|
+
(tr == begin) ? default_transition_type_ : tr[-1].type_index;
|
918
|
+
if (!EquivTransitions(prev_type_index, tr[0].type_index)) break;
|
919
|
+
}
|
920
|
+
// When tr == end we return false, ignoring future_spec_.
|
921
|
+
if (tr == end) return false;
|
922
|
+
trans->from = tr->prev_civil_sec + 1;
|
923
|
+
trans->to = tr->civil_sec;
|
924
|
+
return true;
|
925
|
+
}
|
926
|
+
|
927
|
+
bool TimeZoneInfo::PrevTransition(const time_point<seconds>& tp,
|
928
|
+
time_zone::civil_transition* trans) const {
|
929
|
+
if (transitions_.empty()) return false;
|
930
|
+
const Transition* begin = &transitions_[0];
|
931
|
+
const Transition* end = begin + transitions_.size();
|
932
|
+
if (begin->unix_time <= -(1LL << 59)) {
|
933
|
+
// Do not report the BIG_BANG found in some zoneinfo data as it is
|
934
|
+
// really a sentinel, not a transition. See pre-2018f tz/zic.c.
|
935
|
+
++begin;
|
936
|
+
}
|
937
|
+
std::int_fast64_t unix_time = ToUnixSeconds(tp);
|
938
|
+
if (FromUnixSeconds(unix_time) != tp) {
|
939
|
+
if (unix_time == std::numeric_limits<std::int_fast64_t>::max()) {
|
940
|
+
if (end == begin) return false; // Ignore future_spec_.
|
941
|
+
trans->from = (--end)->prev_civil_sec + 1;
|
942
|
+
trans->to = end->civil_sec;
|
943
|
+
return true;
|
944
|
+
}
|
945
|
+
unix_time += 1; // ceils
|
946
|
+
}
|
947
|
+
const Transition target = {unix_time, 0, civil_second(), civil_second()};
|
948
|
+
const Transition* tr =
|
949
|
+
std::lower_bound(begin, end, target, Transition::ByUnixTime());
|
950
|
+
for (; tr != begin; --tr) { // skip no-op transitions
|
951
|
+
std::uint_fast8_t prev_type_index =
|
952
|
+
(tr - 1 == begin) ? default_transition_type_ : tr[-2].type_index;
|
953
|
+
if (!EquivTransitions(prev_type_index, tr[-1].type_index)) break;
|
954
|
+
}
|
955
|
+
// When tr == end we return the "last" transition, ignoring future_spec_.
|
956
|
+
if (tr == begin) return false;
|
957
|
+
trans->from = (--tr)->prev_civil_sec + 1;
|
958
|
+
trans->to = tr->civil_sec;
|
959
|
+
return true;
|
960
|
+
}
|
961
|
+
|
962
|
+
} // namespace cctz
|
963
|
+
} // namespace time_internal
|
964
|
+
ABSL_NAMESPACE_END
|
965
|
+
} // namespace absl
|