grpc 1.36.0 → 1.38.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 +126 -92
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +715 -3166
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +9 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +86 -63
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +3 -0
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +38 -33
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- 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 +17 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -14
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +334 -114
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +485 -199
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +13 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +21 -20
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +1649 -329
- data/src/core/ext/xds/xds_api.h +284 -44
- data/src/core/ext/xds/xds_bootstrap.cc +110 -156
- data/src/core/ext/xds/xds_bootstrap.h +24 -25
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +454 -177
- data/src/core/ext/xds/xds_client.h +62 -22
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +410 -131
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +107 -4
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -45
- data/src/core/lib/channel/handshaker.h +5 -22
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +6 -6
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +37 -38
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/{security/authorization → matchers}/matchers.cc +47 -47
- data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +28 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +62 -60
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +65 -34
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_intern.cc +6 -7
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +68 -55
- data/src/core/lib/surface/server.h +89 -29
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +10 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +478 -462
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -30
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +210 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +128 -61
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -99
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -0,0 +1,64 @@
|
|
1
|
+
// Copyright 2020 The Abseil Authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
|
15
|
+
#ifndef ABSL_STRINGS_INTERNAL_STRING_CONSTANT_H_
|
16
|
+
#define ABSL_STRINGS_INTERNAL_STRING_CONSTANT_H_
|
17
|
+
|
18
|
+
#include "absl/meta/type_traits.h"
|
19
|
+
#include "absl/strings/string_view.h"
|
20
|
+
|
21
|
+
namespace absl {
|
22
|
+
ABSL_NAMESPACE_BEGIN
|
23
|
+
namespace strings_internal {
|
24
|
+
|
25
|
+
// StringConstant<T> represents a compile time string constant.
|
26
|
+
// It can be accessed via its `absl::string_view value` static member.
|
27
|
+
// It is guaranteed that the `string_view` returned has constant `.data()`,
|
28
|
+
// constant `.size()` and constant `value[i]` for all `0 <= i < .size()`
|
29
|
+
//
|
30
|
+
// The `T` is an opaque type. It is guaranteed that different string constants
|
31
|
+
// will have different values of `T`. This allows users to associate the string
|
32
|
+
// constant with other static state at compile time.
|
33
|
+
//
|
34
|
+
// Instances should be made using the `MakeStringConstant()` factory function
|
35
|
+
// below.
|
36
|
+
template <typename T>
|
37
|
+
struct StringConstant {
|
38
|
+
static constexpr absl::string_view value = T{}();
|
39
|
+
constexpr absl::string_view operator()() const { return value; }
|
40
|
+
|
41
|
+
// Check to be sure `view` points to constant data.
|
42
|
+
// Otherwise, it can't be constant evaluated.
|
43
|
+
static_assert(value.empty() || 2 * value[0] != 1,
|
44
|
+
"The input string_view must point to constant data.");
|
45
|
+
};
|
46
|
+
|
47
|
+
template <typename T>
|
48
|
+
constexpr absl::string_view StringConstant<T>::value; // NOLINT
|
49
|
+
|
50
|
+
// Factory function for `StringConstant` instances.
|
51
|
+
// It supports callables that have a constexpr default constructor and a
|
52
|
+
// constexpr operator().
|
53
|
+
// It must return an `absl::string_view` or `const char*` pointing to constant
|
54
|
+
// data. This is validated at compile time.
|
55
|
+
template <typename T>
|
56
|
+
constexpr StringConstant<T> MakeStringConstant(T) {
|
57
|
+
return {};
|
58
|
+
}
|
59
|
+
|
60
|
+
} // namespace strings_internal
|
61
|
+
ABSL_NAMESPACE_END
|
62
|
+
} // namespace absl
|
63
|
+
|
64
|
+
#endif // ABSL_STRINGS_INTERNAL_STRING_CONSTANT_H_
|
@@ -19,19 +19,22 @@
|
|
19
19
|
namespace absl {
|
20
20
|
ABSL_NAMESPACE_BEGIN
|
21
21
|
|
22
|
-
bool EqualsIgnoreCase(absl::string_view piece1,
|
22
|
+
bool EqualsIgnoreCase(absl::string_view piece1,
|
23
|
+
absl::string_view piece2) noexcept {
|
23
24
|
return (piece1.size() == piece2.size() &&
|
24
25
|
0 == absl::strings_internal::memcasecmp(piece1.data(), piece2.data(),
|
25
26
|
piece1.size()));
|
26
27
|
// memcasecmp uses absl::ascii_tolower().
|
27
28
|
}
|
28
29
|
|
29
|
-
bool StartsWithIgnoreCase(absl::string_view text,
|
30
|
+
bool StartsWithIgnoreCase(absl::string_view text,
|
31
|
+
absl::string_view prefix) noexcept {
|
30
32
|
return (text.size() >= prefix.size()) &&
|
31
33
|
EqualsIgnoreCase(text.substr(0, prefix.size()), prefix);
|
32
34
|
}
|
33
35
|
|
34
|
-
bool EndsWithIgnoreCase(absl::string_view text,
|
36
|
+
bool EndsWithIgnoreCase(absl::string_view text,
|
37
|
+
absl::string_view suffix) noexcept {
|
35
38
|
return (text.size() >= suffix.size()) &&
|
36
39
|
EqualsIgnoreCase(text.substr(text.size() - suffix.size()), suffix);
|
37
40
|
}
|
@@ -43,14 +43,20 @@ ABSL_NAMESPACE_BEGIN
|
|
43
43
|
// StrContains()
|
44
44
|
//
|
45
45
|
// Returns whether a given string `haystack` contains the substring `needle`.
|
46
|
-
inline bool StrContains(absl::string_view haystack,
|
46
|
+
inline bool StrContains(absl::string_view haystack,
|
47
|
+
absl::string_view needle) noexcept {
|
47
48
|
return haystack.find(needle, 0) != haystack.npos;
|
48
49
|
}
|
49
50
|
|
51
|
+
inline bool StrContains(absl::string_view haystack, char needle) noexcept {
|
52
|
+
return haystack.find(needle) != haystack.npos;
|
53
|
+
}
|
54
|
+
|
50
55
|
// StartsWith()
|
51
56
|
//
|
52
57
|
// Returns whether a given string `text` begins with `prefix`.
|
53
|
-
inline bool StartsWith(absl::string_view text,
|
58
|
+
inline bool StartsWith(absl::string_view text,
|
59
|
+
absl::string_view prefix) noexcept {
|
54
60
|
return prefix.empty() ||
|
55
61
|
(text.size() >= prefix.size() &&
|
56
62
|
memcmp(text.data(), prefix.data(), prefix.size()) == 0);
|
@@ -59,7 +65,8 @@ inline bool StartsWith(absl::string_view text, absl::string_view prefix) {
|
|
59
65
|
// EndsWith()
|
60
66
|
//
|
61
67
|
// Returns whether a given string `text` ends with `suffix`.
|
62
|
-
inline bool EndsWith(absl::string_view text,
|
68
|
+
inline bool EndsWith(absl::string_view text,
|
69
|
+
absl::string_view suffix) noexcept {
|
63
70
|
return suffix.empty() ||
|
64
71
|
(text.size() >= suffix.size() &&
|
65
72
|
memcmp(text.data() + (text.size() - suffix.size()), suffix.data(),
|
@@ -70,19 +77,22 @@ inline bool EndsWith(absl::string_view text, absl::string_view suffix) {
|
|
70
77
|
//
|
71
78
|
// Returns whether given ASCII strings `piece1` and `piece2` are equal, ignoring
|
72
79
|
// case in the comparison.
|
73
|
-
bool EqualsIgnoreCase(absl::string_view piece1,
|
80
|
+
bool EqualsIgnoreCase(absl::string_view piece1,
|
81
|
+
absl::string_view piece2) noexcept;
|
74
82
|
|
75
83
|
// StartsWithIgnoreCase()
|
76
84
|
//
|
77
85
|
// Returns whether a given ASCII string `text` starts with `prefix`,
|
78
86
|
// ignoring case in the comparison.
|
79
|
-
bool StartsWithIgnoreCase(absl::string_view text,
|
87
|
+
bool StartsWithIgnoreCase(absl::string_view text,
|
88
|
+
absl::string_view prefix) noexcept;
|
80
89
|
|
81
90
|
// EndsWithIgnoreCase()
|
82
91
|
//
|
83
92
|
// Returns whether a given ASCII string `text` ends with `suffix`, ignoring
|
84
93
|
// case in the comparison.
|
85
|
-
bool EndsWithIgnoreCase(absl::string_view text,
|
94
|
+
bool EndsWithIgnoreCase(absl::string_view text,
|
95
|
+
absl::string_view suffix) noexcept;
|
86
96
|
|
87
97
|
ABSL_NAMESPACE_END
|
88
98
|
} // namespace absl
|
@@ -31,8 +31,8 @@
|
|
31
31
|
#include <utility>
|
32
32
|
|
33
33
|
#include "absl/base/attributes.h"
|
34
|
-
#include "absl/base/internal/bits.h"
|
35
34
|
#include "absl/base/internal/raw_logging.h"
|
35
|
+
#include "absl/numeric/bits.h"
|
36
36
|
#include "absl/strings/ascii.h"
|
37
37
|
#include "absl/strings/charconv.h"
|
38
38
|
#include "absl/strings/escaping.h"
|
@@ -46,8 +46,13 @@ ABSL_NAMESPACE_BEGIN
|
|
46
46
|
bool SimpleAtof(absl::string_view str, float* out) {
|
47
47
|
*out = 0.0;
|
48
48
|
str = StripAsciiWhitespace(str);
|
49
|
+
// std::from_chars doesn't accept an initial +, but SimpleAtof does, so if one
|
50
|
+
// is present, skip it, while avoiding accepting "+-0" as valid.
|
49
51
|
if (!str.empty() && str[0] == '+') {
|
50
52
|
str.remove_prefix(1);
|
53
|
+
if (!str.empty() && str[0] == '-') {
|
54
|
+
return false;
|
55
|
+
}
|
51
56
|
}
|
52
57
|
auto result = absl::from_chars(str.data(), str.data() + str.size(), *out);
|
53
58
|
if (result.ec == std::errc::invalid_argument) {
|
@@ -72,8 +77,13 @@ bool SimpleAtof(absl::string_view str, float* out) {
|
|
72
77
|
bool SimpleAtod(absl::string_view str, double* out) {
|
73
78
|
*out = 0.0;
|
74
79
|
str = StripAsciiWhitespace(str);
|
80
|
+
// std::from_chars doesn't accept an initial +, but SimpleAtod does, so if one
|
81
|
+
// is present, skip it, while avoiding accepting "+-0" as valid.
|
75
82
|
if (!str.empty() && str[0] == '+') {
|
76
83
|
str.remove_prefix(1);
|
84
|
+
if (!str.empty() && str[0] == '-') {
|
85
|
+
return false;
|
86
|
+
}
|
77
87
|
}
|
78
88
|
auto result = absl::from_chars(str.data(), str.data() + str.size(), *out);
|
79
89
|
if (result.ec == std::errc::invalid_argument) {
|
@@ -303,7 +313,7 @@ static std::pair<uint64_t, uint64_t> Mul32(std::pair<uint64_t, uint64_t> num,
|
|
303
313
|
uint64_t bits128_up = (bits96_127 >> 32) + (bits64_127 < bits64_95);
|
304
314
|
if (bits128_up == 0) return {bits64_127, bits0_63};
|
305
315
|
|
306
|
-
|
316
|
+
auto shift = static_cast<unsigned>(bit_width(bits128_up));
|
307
317
|
uint64_t lo = (bits0_63 >> shift) + (bits64_127 << (64 - shift));
|
308
318
|
uint64_t hi = (bits64_127 >> shift) + (bits128_up << (64 - shift));
|
309
319
|
return {hi, lo};
|
@@ -334,7 +344,7 @@ static std::pair<uint64_t, uint64_t> PowFive(uint64_t num, int expfive) {
|
|
334
344
|
5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,
|
335
345
|
5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5};
|
336
346
|
result = Mul32(result, powers_of_five[expfive & 15]);
|
337
|
-
int shift =
|
347
|
+
int shift = countl_zero(result.first);
|
338
348
|
if (shift != 0) {
|
339
349
|
result.first = (result.first << shift) + (result.second >> (64 - shift));
|
340
350
|
result.second = (result.second << shift);
|
@@ -736,9 +746,18 @@ struct LookupTables {
|
|
736
746
|
X / 35, X / 36, \
|
737
747
|
}
|
738
748
|
|
749
|
+
// This kVmaxOverBase is generated with
|
750
|
+
// for (int base = 2; base < 37; ++base) {
|
751
|
+
// absl::uint128 max = std::numeric_limits<absl::uint128>::max();
|
752
|
+
// auto result = max / base;
|
753
|
+
// std::cout << " MakeUint128(" << absl::Uint128High64(result) << "u, "
|
754
|
+
// << absl::Uint128Low64(result) << "u),\n";
|
755
|
+
// }
|
756
|
+
// See https://godbolt.org/z/aneYsb
|
757
|
+
//
|
739
758
|
// uint128& operator/=(uint128) is not constexpr, so hardcode the resulting
|
740
759
|
// array to avoid a static initializer.
|
741
|
-
template
|
760
|
+
template<>
|
742
761
|
const uint128 LookupTables<uint128>::kVmaxOverBase[] = {
|
743
762
|
0,
|
744
763
|
0,
|
@@ -779,6 +798,111 @@ const uint128 LookupTables<uint128>::kVmaxOverBase[] = {
|
|
779
798
|
MakeUint128(512409557603043100u, 8198552921648689607u),
|
780
799
|
};
|
781
800
|
|
801
|
+
// This kVmaxOverBase generated with
|
802
|
+
// for (int base = 2; base < 37; ++base) {
|
803
|
+
// absl::int128 max = std::numeric_limits<absl::int128>::max();
|
804
|
+
// auto result = max / base;
|
805
|
+
// std::cout << "\tMakeInt128(" << absl::Int128High64(result) << ", "
|
806
|
+
// << absl::Int128Low64(result) << "u),\n";
|
807
|
+
// }
|
808
|
+
// See https://godbolt.org/z/7djYWz
|
809
|
+
//
|
810
|
+
// int128& operator/=(int128) is not constexpr, so hardcode the resulting array
|
811
|
+
// to avoid a static initializer.
|
812
|
+
template<>
|
813
|
+
const int128 LookupTables<int128>::kVmaxOverBase[] = {
|
814
|
+
0,
|
815
|
+
0,
|
816
|
+
MakeInt128(4611686018427387903, 18446744073709551615u),
|
817
|
+
MakeInt128(3074457345618258602, 12297829382473034410u),
|
818
|
+
MakeInt128(2305843009213693951, 18446744073709551615u),
|
819
|
+
MakeInt128(1844674407370955161, 11068046444225730969u),
|
820
|
+
MakeInt128(1537228672809129301, 6148914691236517205u),
|
821
|
+
MakeInt128(1317624576693539401, 2635249153387078802u),
|
822
|
+
MakeInt128(1152921504606846975, 18446744073709551615u),
|
823
|
+
MakeInt128(1024819115206086200, 16397105843297379214u),
|
824
|
+
MakeInt128(922337203685477580, 14757395258967641292u),
|
825
|
+
MakeInt128(838488366986797800, 13415813871788764811u),
|
826
|
+
MakeInt128(768614336404564650, 12297829382473034410u),
|
827
|
+
MakeInt128(709490156681136600, 11351842506898185609u),
|
828
|
+
MakeInt128(658812288346769700, 10540996613548315209u),
|
829
|
+
MakeInt128(614891469123651720, 9838263505978427528u),
|
830
|
+
MakeInt128(576460752303423487, 18446744073709551615u),
|
831
|
+
MakeInt128(542551296285575047, 9765923333140350855u),
|
832
|
+
MakeInt128(512409557603043100, 8198552921648689607u),
|
833
|
+
MakeInt128(485440633518672410, 17475862806672206794u),
|
834
|
+
MakeInt128(461168601842738790, 7378697629483820646u),
|
835
|
+
MakeInt128(439208192231179800, 7027331075698876806u),
|
836
|
+
MakeInt128(419244183493398900, 6707906935894382405u),
|
837
|
+
MakeInt128(401016175515425035, 2406097053092550210u),
|
838
|
+
MakeInt128(384307168202282325, 6148914691236517205u),
|
839
|
+
MakeInt128(368934881474191032, 5902958103587056517u),
|
840
|
+
MakeInt128(354745078340568300, 5675921253449092804u),
|
841
|
+
MakeInt128(341606371735362066, 17763531330238827482u),
|
842
|
+
MakeInt128(329406144173384850, 5270498306774157604u),
|
843
|
+
MakeInt128(318047311615681924, 7633135478776366185u),
|
844
|
+
MakeInt128(307445734561825860, 4919131752989213764u),
|
845
|
+
MakeInt128(297528130221121800, 4760450083537948804u),
|
846
|
+
MakeInt128(288230376151711743, 18446744073709551615u),
|
847
|
+
MakeInt128(279496122328932600, 4471937957262921603u),
|
848
|
+
MakeInt128(271275648142787523, 14106333703424951235u),
|
849
|
+
MakeInt128(263524915338707880, 4216398645419326083u),
|
850
|
+
MakeInt128(256204778801521550, 4099276460824344803u),
|
851
|
+
};
|
852
|
+
|
853
|
+
// This kVminOverBase generated with
|
854
|
+
// for (int base = 2; base < 37; ++base) {
|
855
|
+
// absl::int128 min = std::numeric_limits<absl::int128>::min();
|
856
|
+
// auto result = min / base;
|
857
|
+
// std::cout << "\tMakeInt128(" << absl::Int128High64(result) << ", "
|
858
|
+
// << absl::Int128Low64(result) << "u),\n";
|
859
|
+
// }
|
860
|
+
//
|
861
|
+
// See https://godbolt.org/z/7djYWz
|
862
|
+
//
|
863
|
+
// int128& operator/=(int128) is not constexpr, so hardcode the resulting array
|
864
|
+
// to avoid a static initializer.
|
865
|
+
template<>
|
866
|
+
const int128 LookupTables<int128>::kVminOverBase[] = {
|
867
|
+
0,
|
868
|
+
0,
|
869
|
+
MakeInt128(-4611686018427387904, 0u),
|
870
|
+
MakeInt128(-3074457345618258603, 6148914691236517206u),
|
871
|
+
MakeInt128(-2305843009213693952, 0u),
|
872
|
+
MakeInt128(-1844674407370955162, 7378697629483820647u),
|
873
|
+
MakeInt128(-1537228672809129302, 12297829382473034411u),
|
874
|
+
MakeInt128(-1317624576693539402, 15811494920322472814u),
|
875
|
+
MakeInt128(-1152921504606846976, 0u),
|
876
|
+
MakeInt128(-1024819115206086201, 2049638230412172402u),
|
877
|
+
MakeInt128(-922337203685477581, 3689348814741910324u),
|
878
|
+
MakeInt128(-838488366986797801, 5030930201920786805u),
|
879
|
+
MakeInt128(-768614336404564651, 6148914691236517206u),
|
880
|
+
MakeInt128(-709490156681136601, 7094901566811366007u),
|
881
|
+
MakeInt128(-658812288346769701, 7905747460161236407u),
|
882
|
+
MakeInt128(-614891469123651721, 8608480567731124088u),
|
883
|
+
MakeInt128(-576460752303423488, 0u),
|
884
|
+
MakeInt128(-542551296285575048, 8680820740569200761u),
|
885
|
+
MakeInt128(-512409557603043101, 10248191152060862009u),
|
886
|
+
MakeInt128(-485440633518672411, 970881267037344822u),
|
887
|
+
MakeInt128(-461168601842738791, 11068046444225730970u),
|
888
|
+
MakeInt128(-439208192231179801, 11419412998010674810u),
|
889
|
+
MakeInt128(-419244183493398901, 11738837137815169211u),
|
890
|
+
MakeInt128(-401016175515425036, 16040647020617001406u),
|
891
|
+
MakeInt128(-384307168202282326, 12297829382473034411u),
|
892
|
+
MakeInt128(-368934881474191033, 12543785970122495099u),
|
893
|
+
MakeInt128(-354745078340568301, 12770822820260458812u),
|
894
|
+
MakeInt128(-341606371735362067, 683212743470724134u),
|
895
|
+
MakeInt128(-329406144173384851, 13176245766935394012u),
|
896
|
+
MakeInt128(-318047311615681925, 10813608594933185431u),
|
897
|
+
MakeInt128(-307445734561825861, 13527612320720337852u),
|
898
|
+
MakeInt128(-297528130221121801, 13686293990171602812u),
|
899
|
+
MakeInt128(-288230376151711744, 0u),
|
900
|
+
MakeInt128(-279496122328932601, 13974806116446630013u),
|
901
|
+
MakeInt128(-271275648142787524, 4340410370284600381u),
|
902
|
+
MakeInt128(-263524915338707881, 14230345428290225533u),
|
903
|
+
MakeInt128(-256204778801521551, 14347467612885206813u),
|
904
|
+
};
|
905
|
+
|
782
906
|
template <typename IntType>
|
783
907
|
const IntType LookupTables<IntType>::kVmaxOverBase[] =
|
784
908
|
X_OVER_BASE_INITIALIZER(std::numeric_limits<IntType>::max());
|
@@ -948,6 +1072,10 @@ bool safe_strto64_base(absl::string_view text, int64_t* value, int base) {
|
|
948
1072
|
return safe_int_internal<int64_t>(text, value, base);
|
949
1073
|
}
|
950
1074
|
|
1075
|
+
bool safe_strto128_base(absl::string_view text, int128* value, int base) {
|
1076
|
+
return safe_int_internal<absl::int128>(text, value, base);
|
1077
|
+
}
|
1078
|
+
|
951
1079
|
bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base) {
|
952
1080
|
return safe_uint_internal<uint32_t>(text, value, base);
|
953
1081
|
}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
//
|
2
1
|
// Copyright 2017 The Abseil Authors.
|
3
2
|
//
|
4
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -37,7 +36,6 @@
|
|
37
36
|
#include <type_traits>
|
38
37
|
|
39
38
|
#include "absl/base/config.h"
|
40
|
-
#include "absl/base/internal/bits.h"
|
41
39
|
#ifdef __SSE4_2__
|
42
40
|
// TODO(jorg): Remove this when we figure out the right way
|
43
41
|
// to swap bytes on SSE 4.2 that works with the compilers
|
@@ -48,6 +46,7 @@
|
|
48
46
|
#endif
|
49
47
|
#include "absl/base/macros.h"
|
50
48
|
#include "absl/base/port.h"
|
49
|
+
#include "absl/numeric/bits.h"
|
51
50
|
#include "absl/numeric/int128.h"
|
52
51
|
#include "absl/strings/string_view.h"
|
53
52
|
|
@@ -125,8 +124,11 @@ inline void PutTwoDigits(size_t i, char* buf) {
|
|
125
124
|
}
|
126
125
|
|
127
126
|
// safe_strto?() functions for implementing SimpleAtoi()
|
127
|
+
|
128
128
|
bool safe_strto32_base(absl::string_view text, int32_t* value, int base);
|
129
129
|
bool safe_strto64_base(absl::string_view text, int64_t* value, int base);
|
130
|
+
bool safe_strto128_base(absl::string_view text, absl::int128* value,
|
131
|
+
int base);
|
130
132
|
bool safe_strtou32_base(absl::string_view text, uint32_t* value, int base);
|
131
133
|
bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base);
|
132
134
|
bool safe_strtou128_base(absl::string_view text, absl::uint128* value,
|
@@ -238,23 +240,21 @@ inline size_t FastHexToBufferZeroPad16(uint64_t val, char* out) {
|
|
238
240
|
}
|
239
241
|
#endif
|
240
242
|
// | 0x1 so that even 0 has 1 digit.
|
241
|
-
return 16 -
|
243
|
+
return 16 - countl_zero(val | 0x1) / 4;
|
242
244
|
}
|
243
245
|
|
244
246
|
} // namespace numbers_internal
|
245
247
|
|
246
|
-
// SimpleAtoi()
|
247
|
-
//
|
248
|
-
// Converts a string to an integer, using `safe_strto?()` functions for actual
|
249
|
-
// parsing, returning `true` if successful. The `safe_strto?()` functions apply
|
250
|
-
// strict checking; the string must be a base-10 integer, optionally followed or
|
251
|
-
// preceded by ASCII whitespace, with a value in the range of the corresponding
|
252
|
-
// integer type.
|
253
248
|
template <typename int_type>
|
254
249
|
ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
|
255
250
|
return numbers_internal::safe_strtoi_base(str, out, 10);
|
256
251
|
}
|
257
252
|
|
253
|
+
ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
|
254
|
+
absl::int128* out) {
|
255
|
+
return numbers_internal::safe_strto128_base(str, out, 10);
|
256
|
+
}
|
257
|
+
|
258
258
|
ABSL_MUST_USE_RESULT inline bool SimpleAtoi(absl::string_view str,
|
259
259
|
absl::uint128* out) {
|
260
260
|
return numbers_internal::safe_strtou128_base(str, out, 10);
|
@@ -144,7 +144,7 @@ strings_internal::DereferenceFormatterImpl<Formatter> DereferenceFormatter(
|
|
144
144
|
std::forward<Formatter>(f));
|
145
145
|
}
|
146
146
|
|
147
|
-
// Function overload of `
|
147
|
+
// Function overload of `DereferenceFormatter()` for using a default
|
148
148
|
// `AlphaNumFormatter()`.
|
149
149
|
inline strings_internal::DereferenceFormatterImpl<
|
150
150
|
strings_internal::AlphaNumFormatterImpl>
|
@@ -369,6 +369,12 @@ struct SkipWhitespace {
|
|
369
369
|
}
|
370
370
|
};
|
371
371
|
|
372
|
+
template <typename T>
|
373
|
+
using EnableSplitIfString =
|
374
|
+
typename std::enable_if<std::is_same<T, std::string>::value ||
|
375
|
+
std::is_same<T, const std::string>::value,
|
376
|
+
int>::type;
|
377
|
+
|
372
378
|
//------------------------------------------------------------------------------
|
373
379
|
// StrSplit()
|
374
380
|
//------------------------------------------------------------------------------
|
@@ -489,22 +495,50 @@ struct SkipWhitespace {
|
|
489
495
|
// Try not to depend on this distinction because the bug may one day be fixed.
|
490
496
|
template <typename Delimiter>
|
491
497
|
strings_internal::Splitter<
|
492
|
-
typename strings_internal::SelectDelimiter<Delimiter>::type, AllowEmpty
|
498
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type, AllowEmpty,
|
499
|
+
absl::string_view>
|
493
500
|
StrSplit(strings_internal::ConvertibleToStringView text, Delimiter d) {
|
494
501
|
using DelimiterType =
|
495
502
|
typename strings_internal::SelectDelimiter<Delimiter>::type;
|
496
|
-
return strings_internal::Splitter<DelimiterType, AllowEmpty
|
503
|
+
return strings_internal::Splitter<DelimiterType, AllowEmpty,
|
504
|
+
absl::string_view>(
|
505
|
+
text.value(), DelimiterType(d), AllowEmpty());
|
506
|
+
}
|
507
|
+
|
508
|
+
template <typename Delimiter, typename StringType,
|
509
|
+
EnableSplitIfString<StringType> = 0>
|
510
|
+
strings_internal::Splitter<
|
511
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type, AllowEmpty,
|
512
|
+
std::string>
|
513
|
+
StrSplit(StringType&& text, Delimiter d) {
|
514
|
+
using DelimiterType =
|
515
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type;
|
516
|
+
return strings_internal::Splitter<DelimiterType, AllowEmpty, std::string>(
|
497
517
|
std::move(text), DelimiterType(d), AllowEmpty());
|
498
518
|
}
|
499
519
|
|
500
520
|
template <typename Delimiter, typename Predicate>
|
501
521
|
strings_internal::Splitter<
|
502
|
-
typename strings_internal::SelectDelimiter<Delimiter>::type, Predicate
|
522
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type, Predicate,
|
523
|
+
absl::string_view>
|
503
524
|
StrSplit(strings_internal::ConvertibleToStringView text, Delimiter d,
|
504
525
|
Predicate p) {
|
505
526
|
using DelimiterType =
|
506
527
|
typename strings_internal::SelectDelimiter<Delimiter>::type;
|
507
|
-
return strings_internal::Splitter<DelimiterType, Predicate
|
528
|
+
return strings_internal::Splitter<DelimiterType, Predicate,
|
529
|
+
absl::string_view>(
|
530
|
+
text.value(), DelimiterType(d), std::move(p));
|
531
|
+
}
|
532
|
+
|
533
|
+
template <typename Delimiter, typename Predicate, typename StringType,
|
534
|
+
EnableSplitIfString<StringType> = 0>
|
535
|
+
strings_internal::Splitter<
|
536
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type, Predicate,
|
537
|
+
std::string>
|
538
|
+
StrSplit(StringType&& text, Delimiter d, Predicate p) {
|
539
|
+
using DelimiterType =
|
540
|
+
typename strings_internal::SelectDelimiter<Delimiter>::type;
|
541
|
+
return strings_internal::Splitter<DelimiterType, Predicate, std::string>(
|
508
542
|
std::move(text), DelimiterType(d), std::move(p));
|
509
543
|
}
|
510
544
|
|