grpc 1.46.2 → 1.48.0.pre1
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 +138 -128
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +62 -18
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +118 -0
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +106 -39
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
- data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
- data/src/core/ext/filters/client_channel/client_channel.h +43 -8
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +8 -6
- data/src/core/ext/filters/client_channel/connector.h +9 -3
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
- data/src/core/ext/filters/client_channel/subchannel.h +80 -36
- data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
- data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
- data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +6 -2
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +39 -26
- data/src/core/ext/xds/xds_bootstrap.h +11 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
- data/src/core/ext/xds/xds_certificate_provider.h +17 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +121 -46
- data/src/core/ext/xds/xds_client.h +19 -4
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +126 -25
- data/src/core/ext/xds/xds_cluster.h +12 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +70 -42
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
- data/src/core/lib/avl/avl.h +6 -4
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +11 -5
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +34 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +45 -7
- data/src/core/lib/channel/channel_stack.h +45 -9
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +17 -32
- data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
- data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +10 -14
- data/src/core/lib/channel/channelz.h +15 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +22 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +451 -190
- data/src/core/lib/channel/promise_based_filter.h +162 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +48 -16
- data/src/core/lib/compression/compression_internal.h +4 -3
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +29 -14
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +50 -32
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +16 -0
- data/src/core/lib/gprpp/time.h +10 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +34 -4
- data/src/core/lib/http/format_request.h +3 -1
- data/src/core/lib/http/httpcli.cc +106 -93
- data/src/core/lib/http/httpcli.h +58 -10
- data/src/core/lib/http/httpcli_security_connector.cc +19 -8
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +55 -96
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +7 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
- data/src/core/lib/iomgr/tcp_posix.cc +96 -52
- data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
- data/src/core/lib/iomgr/tcp_windows.cc +12 -9
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +1 -2
- data/src/core/lib/promise/activity.h +13 -19
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +2 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +38 -31
- data/src/core/lib/promise/sleep.h +32 -22
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +17 -3
- data/src/core/lib/resolver/server_address.h +13 -6
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +62 -62
- data/src/core/lib/resource_quota/memory_quota.h +35 -30
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +27 -18
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
- data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +49 -16
- data/src/core/lib/security/transport/security_handshaker.h +5 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +6 -2
- data/src/core/lib/service_config/service_config_impl.cc +13 -6
- data/src/core/lib/service_config/service_config_impl.h +9 -4
- data/src/core/lib/service_config/service_config_parser.cc +8 -2
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +79 -23
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +90 -137
- data/src/core/lib/surface/call.h +21 -3
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +97 -58
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +29 -20
- data/src/core/lib/surface/completion_queue.h +7 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -46
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +63 -109
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +83 -64
- data/src/core/lib/surface/server.h +42 -9
- data/src/core/lib/surface/validate_metadata.cc +3 -6
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +16 -8
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -20
- data/src/core/lib/transport/transport.h +48 -16
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +11 -0
- data/src/core/lib/transport/transport_op_string.cc +17 -18
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +50 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +69 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/transport/byte_stream.cc +0 -164
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -25,6 +25,8 @@
|
|
25
25
|
#include <atomic>
|
26
26
|
#include <chrono> // NOLINT(build/c++11)
|
27
27
|
|
28
|
+
#include "absl/base/attributes.h"
|
29
|
+
#include "absl/base/config.h"
|
28
30
|
#include "absl/base/internal/unscaledcycleclock.h"
|
29
31
|
|
30
32
|
namespace absl {
|
@@ -33,44 +35,20 @@ namespace base_internal {
|
|
33
35
|
|
34
36
|
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
35
37
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
#ifdef ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY
|
40
|
-
// Not debug mode and the UnscaledCycleClock frequency is the CPU
|
41
|
-
// frequency. Scale the CycleClock to prevent overflow if someone
|
42
|
-
// tries to represent the time as cycles since the Unix epoch.
|
43
|
-
static constexpr int32_t kShift = 1;
|
44
|
-
#else
|
45
|
-
// Not debug mode and the UnscaledCycleClock isn't operating at the
|
46
|
-
// raw CPU frequency. There is no need to do any scaling, so don't
|
47
|
-
// needlessly sacrifice precision.
|
48
|
-
static constexpr int32_t kShift = 0;
|
49
|
-
#endif
|
50
|
-
#else
|
51
|
-
// In debug mode use a different shift to discourage depending on a
|
52
|
-
// particular shift value.
|
53
|
-
static constexpr int32_t kShift = 2;
|
38
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
39
|
+
constexpr int32_t CycleClock::kShift;
|
40
|
+
constexpr double CycleClock::kFrequencyScale;
|
54
41
|
#endif
|
55
42
|
|
56
|
-
|
57
|
-
|
43
|
+
ABSL_CONST_INIT std::atomic<CycleClockSourceFunc>
|
44
|
+
CycleClock::cycle_clock_source_{nullptr};
|
58
45
|
|
59
|
-
CycleClockSourceFunc
|
60
|
-
//
|
61
|
-
|
62
|
-
if (cycle_clock_source.load(std::memory_order_relaxed) == nullptr) {
|
63
|
-
return nullptr;
|
64
|
-
}
|
65
|
-
// This corresponds to the store(std::memory_order_release) in
|
66
|
-
// CycleClockSource::Register, and makes sure that any updates made prior to
|
67
|
-
// registering the callback are visible to this thread before the callback is
|
68
|
-
// invoked.
|
69
|
-
return cycle_clock_source.load(std::memory_order_acquire);
|
46
|
+
void CycleClockSource::Register(CycleClockSourceFunc source) {
|
47
|
+
// Corresponds to the load(std::memory_order_acquire) in LoadCycleClockSource.
|
48
|
+
CycleClock::cycle_clock_source_.store(source, std::memory_order_release);
|
70
49
|
}
|
71
50
|
|
72
|
-
|
73
|
-
|
51
|
+
#ifdef _WIN32
|
74
52
|
int64_t CycleClock::Now() {
|
75
53
|
auto fn = LoadCycleClockSource();
|
76
54
|
if (fn == nullptr) {
|
@@ -78,15 +56,7 @@ int64_t CycleClock::Now() {
|
|
78
56
|
}
|
79
57
|
return fn() >> kShift;
|
80
58
|
}
|
81
|
-
|
82
|
-
double CycleClock::Frequency() {
|
83
|
-
return kFrequencyScale * base_internal::UnscaledCycleClock::Frequency();
|
84
|
-
}
|
85
|
-
|
86
|
-
void CycleClockSource::Register(CycleClockSourceFunc source) {
|
87
|
-
// Corresponds to the load(std::memory_order_acquire) in LoadCycleClockSource.
|
88
|
-
cycle_clock_source.store(source, std::memory_order_release);
|
89
|
-
}
|
59
|
+
#endif
|
90
60
|
|
91
61
|
#else
|
92
62
|
|
@@ -42,14 +42,19 @@
|
|
42
42
|
#ifndef ABSL_BASE_INTERNAL_CYCLECLOCK_H_
|
43
43
|
#define ABSL_BASE_INTERNAL_CYCLECLOCK_H_
|
44
44
|
|
45
|
+
#include <atomic>
|
45
46
|
#include <cstdint>
|
46
47
|
|
48
|
+
#include "absl/base/attributes.h"
|
47
49
|
#include "absl/base/config.h"
|
50
|
+
#include "absl/base/internal/unscaledcycleclock.h"
|
48
51
|
|
49
52
|
namespace absl {
|
50
53
|
ABSL_NAMESPACE_BEGIN
|
51
54
|
namespace base_internal {
|
52
55
|
|
56
|
+
using CycleClockSourceFunc = int64_t (*)();
|
57
|
+
|
53
58
|
// -----------------------------------------------------------------------------
|
54
59
|
// CycleClock
|
55
60
|
// -----------------------------------------------------------------------------
|
@@ -68,12 +73,37 @@ class CycleClock {
|
|
68
73
|
static double Frequency();
|
69
74
|
|
70
75
|
private:
|
76
|
+
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
77
|
+
static CycleClockSourceFunc LoadCycleClockSource();
|
78
|
+
|
79
|
+
#ifdef NDEBUG
|
80
|
+
#ifdef ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY
|
81
|
+
// Not debug mode and the UnscaledCycleClock frequency is the CPU
|
82
|
+
// frequency. Scale the CycleClock to prevent overflow if someone
|
83
|
+
// tries to represent the time as cycles since the Unix epoch.
|
84
|
+
static constexpr int32_t kShift = 1;
|
85
|
+
#else
|
86
|
+
// Not debug mode and the UnscaledCycleClock isn't operating at the
|
87
|
+
// raw CPU frequency. There is no need to do any scaling, so don't
|
88
|
+
// needlessly sacrifice precision.
|
89
|
+
static constexpr int32_t kShift = 0;
|
90
|
+
#endif
|
91
|
+
#else // NDEBUG
|
92
|
+
// In debug mode use a different shift to discourage depending on a
|
93
|
+
// particular shift value.
|
94
|
+
static constexpr int32_t kShift = 2;
|
95
|
+
#endif // NDEBUG
|
96
|
+
|
97
|
+
static constexpr double kFrequencyScale = 1.0 / (1 << kShift);
|
98
|
+
ABSL_CONST_INIT static std::atomic<CycleClockSourceFunc> cycle_clock_source_;
|
99
|
+
#endif // ABSL_USE_UNSCALED_CYCLECLOC
|
100
|
+
|
71
101
|
CycleClock() = delete; // no instances
|
72
102
|
CycleClock(const CycleClock&) = delete;
|
73
103
|
CycleClock& operator=(const CycleClock&) = delete;
|
74
|
-
};
|
75
104
|
|
76
|
-
|
105
|
+
friend class CycleClockSource;
|
106
|
+
};
|
77
107
|
|
78
108
|
class CycleClockSource {
|
79
109
|
private:
|
@@ -87,6 +117,41 @@ class CycleClockSource {
|
|
87
117
|
static void Register(CycleClockSourceFunc source);
|
88
118
|
};
|
89
119
|
|
120
|
+
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
121
|
+
|
122
|
+
inline CycleClockSourceFunc CycleClock::LoadCycleClockSource() {
|
123
|
+
#if !defined(__x86_64__)
|
124
|
+
// Optimize for the common case (no callback) by first doing a relaxed load;
|
125
|
+
// this is significantly faster on non-x86 platforms.
|
126
|
+
if (cycle_clock_source_.load(std::memory_order_relaxed) == nullptr) {
|
127
|
+
return nullptr;
|
128
|
+
}
|
129
|
+
#endif // !defined(__x86_64__)
|
130
|
+
|
131
|
+
// This corresponds to the store(std::memory_order_release) in
|
132
|
+
// CycleClockSource::Register, and makes sure that any updates made prior to
|
133
|
+
// registering the callback are visible to this thread before the callback
|
134
|
+
// is invoked.
|
135
|
+
return cycle_clock_source_.load(std::memory_order_acquire);
|
136
|
+
}
|
137
|
+
|
138
|
+
// Accessing globals in inlined code in Window DLLs is problematic.
|
139
|
+
#ifndef _WIN32
|
140
|
+
inline int64_t CycleClock::Now() {
|
141
|
+
auto fn = LoadCycleClockSource();
|
142
|
+
if (fn == nullptr) {
|
143
|
+
return base_internal::UnscaledCycleClock::Now() >> kShift;
|
144
|
+
}
|
145
|
+
return fn() >> kShift;
|
146
|
+
}
|
147
|
+
#endif
|
148
|
+
|
149
|
+
inline double CycleClock::Frequency() {
|
150
|
+
return kFrequencyScale * base_internal::UnscaledCycleClock::Frequency();
|
151
|
+
}
|
152
|
+
|
153
|
+
#endif // ABSL_USE_UNSCALED_CYCLECLOCK
|
154
|
+
|
90
155
|
} // namespace base_internal
|
91
156
|
ABSL_NAMESPACE_END
|
92
157
|
} // namespace absl
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
#include "absl/base/config.h"
|
22
22
|
|
23
|
-
#
|
23
|
+
#ifdef ABSL_HAVE_MMAP
|
24
24
|
|
25
25
|
#include <sys/mman.h>
|
26
26
|
|
@@ -41,13 +41,13 @@
|
|
41
41
|
|
42
42
|
#ifdef __mips__
|
43
43
|
// Include definitions of the ABI currently in use.
|
44
|
-
#
|
44
|
+
#if defined(__BIONIC__) || !defined(__GLIBC__)
|
45
45
|
// Android doesn't have sgidefs.h, but does have asm/sgidefs.h, which has the
|
46
46
|
// definitions we need.
|
47
47
|
#include <asm/sgidefs.h>
|
48
48
|
#else
|
49
49
|
#include <sgidefs.h>
|
50
|
-
#endif // __BIONIC__
|
50
|
+
#endif // __BIONIC__ || !__GLIBC__
|
51
51
|
#endif // __mips__
|
52
52
|
|
53
53
|
// SYS_mmap and SYS_munmap are not defined in Android.
|
@@ -16,16 +16,9 @@
|
|
16
16
|
#ifndef ABSL_BASE_INTERNAL_ENDIAN_H_
|
17
17
|
#define ABSL_BASE_INTERNAL_ENDIAN_H_
|
18
18
|
|
19
|
-
// The following guarantees declaration of the byte swap functions
|
20
|
-
#ifdef _MSC_VER
|
21
|
-
#include <stdlib.h> // NOLINT(build/include)
|
22
|
-
#elif defined(__FreeBSD__)
|
23
|
-
#include <sys/endian.h>
|
24
|
-
#elif defined(__GLIBC__)
|
25
|
-
#include <byteswap.h> // IWYU pragma: export
|
26
|
-
#endif
|
27
|
-
|
28
19
|
#include <cstdint>
|
20
|
+
#include <cstdlib>
|
21
|
+
|
29
22
|
#include "absl/base/casts.h"
|
30
23
|
#include "absl/base/config.h"
|
31
24
|
#include "absl/base/internal/unaligned_access.h"
|
@@ -34,47 +27,11 @@
|
|
34
27
|
namespace absl {
|
35
28
|
ABSL_NAMESPACE_BEGIN
|
36
29
|
|
37
|
-
// Use compiler byte-swapping intrinsics if they are available. 32-bit
|
38
|
-
// and 64-bit versions are available in Clang and GCC as of GCC 4.3.0.
|
39
|
-
// The 16-bit version is available in Clang and GCC only as of GCC 4.8.0.
|
40
|
-
// For simplicity, we enable them all only for GCC 4.8.0 or later.
|
41
|
-
#if defined(__clang__) || \
|
42
|
-
(defined(__GNUC__) && \
|
43
|
-
((__GNUC__ == 4 && __GNUC_MINOR__ >= 8) || __GNUC__ >= 5))
|
44
30
|
inline uint64_t gbswap_64(uint64_t host_int) {
|
31
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap64) || defined(__GNUC__)
|
45
32
|
return __builtin_bswap64(host_int);
|
46
|
-
}
|
47
|
-
inline uint32_t gbswap_32(uint32_t host_int) {
|
48
|
-
return __builtin_bswap32(host_int);
|
49
|
-
}
|
50
|
-
inline uint16_t gbswap_16(uint16_t host_int) {
|
51
|
-
return __builtin_bswap16(host_int);
|
52
|
-
}
|
53
|
-
|
54
33
|
#elif defined(_MSC_VER)
|
55
|
-
inline uint64_t gbswap_64(uint64_t host_int) {
|
56
34
|
return _byteswap_uint64(host_int);
|
57
|
-
}
|
58
|
-
inline uint32_t gbswap_32(uint32_t host_int) {
|
59
|
-
return _byteswap_ulong(host_int);
|
60
|
-
}
|
61
|
-
inline uint16_t gbswap_16(uint16_t host_int) {
|
62
|
-
return _byteswap_ushort(host_int);
|
63
|
-
}
|
64
|
-
|
65
|
-
#else
|
66
|
-
inline uint64_t gbswap_64(uint64_t host_int) {
|
67
|
-
#if defined(__GNUC__) && defined(__x86_64__) && !defined(__APPLE__)
|
68
|
-
// Adapted from /usr/include/byteswap.h. Not available on Mac.
|
69
|
-
if (__builtin_constant_p(host_int)) {
|
70
|
-
return __bswap_constant_64(host_int);
|
71
|
-
} else {
|
72
|
-
uint64_t result;
|
73
|
-
__asm__("bswap %0" : "=r"(result) : "0"(host_int));
|
74
|
-
return result;
|
75
|
-
}
|
76
|
-
#elif defined(__GLIBC__)
|
77
|
-
return bswap_64(host_int);
|
78
35
|
#else
|
79
36
|
return (((host_int & uint64_t{0xFF}) << 56) |
|
80
37
|
((host_int & uint64_t{0xFF00}) << 40) |
|
@@ -84,12 +41,14 @@ inline uint64_t gbswap_64(uint64_t host_int) {
|
|
84
41
|
((host_int & uint64_t{0xFF0000000000}) >> 24) |
|
85
42
|
((host_int & uint64_t{0xFF000000000000}) >> 40) |
|
86
43
|
((host_int & uint64_t{0xFF00000000000000}) >> 56));
|
87
|
-
#endif
|
44
|
+
#endif
|
88
45
|
}
|
89
46
|
|
90
47
|
inline uint32_t gbswap_32(uint32_t host_int) {
|
91
|
-
#if defined(
|
92
|
-
return
|
48
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap32) || defined(__GNUC__)
|
49
|
+
return __builtin_bswap32(host_int);
|
50
|
+
#elif defined(_MSC_VER)
|
51
|
+
return _byteswap_ulong(host_int);
|
93
52
|
#else
|
94
53
|
return (((host_int & uint32_t{0xFF}) << 24) |
|
95
54
|
((host_int & uint32_t{0xFF00}) << 8) |
|
@@ -99,33 +58,29 @@ inline uint32_t gbswap_32(uint32_t host_int) {
|
|
99
58
|
}
|
100
59
|
|
101
60
|
inline uint16_t gbswap_16(uint16_t host_int) {
|
102
|
-
#if defined(
|
103
|
-
return
|
61
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bswap16) || defined(__GNUC__)
|
62
|
+
return __builtin_bswap16(host_int);
|
63
|
+
#elif defined(_MSC_VER)
|
64
|
+
return _byteswap_ushort(host_int);
|
104
65
|
#else
|
105
66
|
return (((host_int & uint16_t{0xFF}) << 8) |
|
106
67
|
((host_int & uint16_t{0xFF00}) >> 8));
|
107
68
|
#endif
|
108
69
|
}
|
109
70
|
|
110
|
-
#endif // intrinsics available
|
111
|
-
|
112
71
|
#ifdef ABSL_IS_LITTLE_ENDIAN
|
113
72
|
|
114
|
-
//
|
115
|
-
//
|
116
|
-
// than just #defining them because in debug mode, gcc doesn't
|
117
|
-
// correctly handle the (rather involved) definitions of bswap_32.
|
118
|
-
// gcc guarantees that inline functions are as fast as macros, so
|
119
|
-
// this isn't a performance hit.
|
73
|
+
// Portable definitions for htonl (host-to-network) and friends on little-endian
|
74
|
+
// architectures.
|
120
75
|
inline uint16_t ghtons(uint16_t x) { return gbswap_16(x); }
|
121
76
|
inline uint32_t ghtonl(uint32_t x) { return gbswap_32(x); }
|
122
77
|
inline uint64_t ghtonll(uint64_t x) { return gbswap_64(x); }
|
123
78
|
|
124
79
|
#elif defined ABSL_IS_BIG_ENDIAN
|
125
80
|
|
126
|
-
//
|
127
|
-
// These are
|
128
|
-
//
|
81
|
+
// Portable definitions for htonl (host-to-network) etc on big-endian
|
82
|
+
// architectures. These definitions are simpler since the host byte order is the
|
83
|
+
// same as network byte order.
|
129
84
|
inline uint16_t ghtons(uint16_t x) { return x; }
|
130
85
|
inline uint32_t ghtonl(uint32_t x) { return x; }
|
131
86
|
inline uint64_t ghtonll(uint64_t x) { return x; }
|
@@ -28,8 +28,10 @@ struct FastTypeTag {
|
|
28
28
|
constexpr static char dummy_var = 0;
|
29
29
|
};
|
30
30
|
|
31
|
+
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
31
32
|
template <typename Type>
|
32
33
|
constexpr char FastTypeTag<Type>::dummy_var;
|
34
|
+
#endif
|
33
35
|
|
34
36
|
// FastTypeId<Type>() evaluates at compile/link-time to a unique pointer for the
|
35
37
|
// passed-in type. These are meant to be good match for keys into maps or
|
@@ -14,6 +14,8 @@
|
|
14
14
|
//
|
15
15
|
// absl::base_internal::invoke(f, args...) is an implementation of
|
16
16
|
// INVOKE(f, args...) from section [func.require] of the C++ standard.
|
17
|
+
// When compiled as C++17 and later versions, it is implemented as an alias of
|
18
|
+
// std::invoke.
|
17
19
|
//
|
18
20
|
// [func.require]
|
19
21
|
// Define INVOKE (f, t1, t2, ..., tN) as follows:
|
@@ -35,6 +37,26 @@
|
|
35
37
|
#ifndef ABSL_BASE_INTERNAL_INVOKE_H_
|
36
38
|
#define ABSL_BASE_INTERNAL_INVOKE_H_
|
37
39
|
|
40
|
+
#include "absl/base/config.h"
|
41
|
+
|
42
|
+
#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
43
|
+
|
44
|
+
#include <functional>
|
45
|
+
|
46
|
+
namespace absl {
|
47
|
+
ABSL_NAMESPACE_BEGIN
|
48
|
+
namespace base_internal {
|
49
|
+
|
50
|
+
using std::invoke;
|
51
|
+
using std::invoke_result_t;
|
52
|
+
using std::is_invocable_r;
|
53
|
+
|
54
|
+
} // namespace base_internal
|
55
|
+
ABSL_NAMESPACE_END
|
56
|
+
} // namespace absl
|
57
|
+
|
58
|
+
#else // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
59
|
+
|
38
60
|
#include <algorithm>
|
39
61
|
#include <type_traits>
|
40
62
|
#include <utility>
|
@@ -80,8 +102,18 @@ struct MemFunAndRef : StrippedAccept<MemFunAndRef> {
|
|
80
102
|
static decltype((std::declval<Obj>().*
|
81
103
|
std::declval<MemFun>())(std::declval<Args>()...))
|
82
104
|
Invoke(MemFun&& mem_fun, Obj&& obj, Args&&... args) {
|
105
|
+
// Ignore bogus GCC warnings on this line.
|
106
|
+
// See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101436 for similar example.
|
107
|
+
#if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
|
108
|
+
#pragma GCC diagnostic push
|
109
|
+
#pragma GCC diagnostic ignored "-Warray-bounds"
|
110
|
+
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
111
|
+
#endif
|
83
112
|
return (std::forward<Obj>(obj).*
|
84
113
|
std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
|
114
|
+
#if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
|
115
|
+
#pragma GCC diagnostic pop
|
116
|
+
#endif
|
85
117
|
}
|
86
118
|
};
|
87
119
|
|
@@ -180,8 +212,30 @@ invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) {
|
|
180
212
|
return Invoker<F, Args...>::type::Invoke(std::forward<F>(f),
|
181
213
|
std::forward<Args>(args)...);
|
182
214
|
}
|
215
|
+
|
216
|
+
template <typename AlwaysVoid, typename, typename, typename...>
|
217
|
+
struct IsInvocableRImpl : std::false_type {};
|
218
|
+
|
219
|
+
template <typename R, typename F, typename... Args>
|
220
|
+
struct IsInvocableRImpl<
|
221
|
+
absl::void_t<absl::base_internal::invoke_result_t<F, Args...> >, R, F,
|
222
|
+
Args...>
|
223
|
+
: std::integral_constant<
|
224
|
+
bool,
|
225
|
+
std::is_convertible<absl::base_internal::invoke_result_t<F, Args...>,
|
226
|
+
R>::value ||
|
227
|
+
std::is_void<R>::value> {};
|
228
|
+
|
229
|
+
// Type trait whose member `value` is true if invoking `F` with `Args` is valid,
|
230
|
+
// and either the return type is convertible to `R`, or `R` is void.
|
231
|
+
// C++11-compatible version of `std::is_invocable_r`.
|
232
|
+
template <typename R, typename F, typename... Args>
|
233
|
+
using is_invocable_r = IsInvocableRImpl<void, R, F, Args...>;
|
234
|
+
|
183
235
|
} // namespace base_internal
|
184
236
|
ABSL_NAMESPACE_END
|
185
237
|
} // namespace absl
|
186
238
|
|
239
|
+
#endif // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
|
240
|
+
|
187
241
|
#endif // ABSL_BASE_INTERNAL_INVOKE_H_
|
@@ -0,0 +1,138 @@
|
|
1
|
+
// Copyright 2022 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_BASE_INTERNAL_PREFETCH_H_
|
16
|
+
#define ABSL_BASE_INTERNAL_PREFETCH_H_
|
17
|
+
|
18
|
+
#include "absl/base/config.h"
|
19
|
+
|
20
|
+
#ifdef __SSE__
|
21
|
+
#include <xmmintrin.h>
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#if defined(_MSC_VER) && defined(ABSL_INTERNAL_HAVE_SSE)
|
25
|
+
#include <intrin.h>
|
26
|
+
#pragma intrinsic(_mm_prefetch)
|
27
|
+
#endif
|
28
|
+
|
29
|
+
// Compatibility wrappers around __builtin_prefetch, to prefetch data
|
30
|
+
// for read if supported by the toolchain.
|
31
|
+
|
32
|
+
// Move data into the cache before it is read, or "prefetch" it.
|
33
|
+
//
|
34
|
+
// The value of `addr` is the address of the memory to prefetch. If
|
35
|
+
// the target and compiler support it, data prefetch instructions are
|
36
|
+
// generated. If the prefetch is done some time before the memory is
|
37
|
+
// read, it may be in the cache by the time the read occurs.
|
38
|
+
//
|
39
|
+
// The function names specify the temporal locality heuristic applied,
|
40
|
+
// using the names of Intel prefetch instructions:
|
41
|
+
//
|
42
|
+
// T0 - high degree of temporal locality; data should be left in as
|
43
|
+
// many levels of the cache possible
|
44
|
+
// T1 - moderate degree of temporal locality
|
45
|
+
// T2 - low degree of temporal locality
|
46
|
+
// Nta - no temporal locality, data need not be left in the cache
|
47
|
+
// after the read
|
48
|
+
//
|
49
|
+
// Incorrect or gratuitous use of these functions can degrade
|
50
|
+
// performance, so use them only when representative benchmarks show
|
51
|
+
// an improvement.
|
52
|
+
//
|
53
|
+
// Example usage:
|
54
|
+
//
|
55
|
+
// absl::base_internal::PrefetchT0(addr);
|
56
|
+
//
|
57
|
+
// Currently, the different prefetch calls behave on some Intel
|
58
|
+
// architectures as follows:
|
59
|
+
//
|
60
|
+
// SNB..SKL SKX
|
61
|
+
// PrefetchT0() L1/L2/L3 L1/L2
|
62
|
+
// PrefetchT1() L2/L3 L2
|
63
|
+
// PrefetchT2() L2/L3 L2
|
64
|
+
// PrefetchNta() L1/--/L3 L1*
|
65
|
+
//
|
66
|
+
// * On SKX PrefetchNta() will bring the line into L1 but will evict
|
67
|
+
// from L3 cache. This might result in surprising behavior.
|
68
|
+
//
|
69
|
+
// SNB = Sandy Bridge, SKL = Skylake, SKX = Skylake Xeon.
|
70
|
+
//
|
71
|
+
namespace absl {
|
72
|
+
ABSL_NAMESPACE_BEGIN
|
73
|
+
namespace base_internal {
|
74
|
+
|
75
|
+
void PrefetchT0(const void* addr);
|
76
|
+
void PrefetchT1(const void* addr);
|
77
|
+
void PrefetchT2(const void* addr);
|
78
|
+
void PrefetchNta(const void* addr);
|
79
|
+
|
80
|
+
// Implementation details follow.
|
81
|
+
|
82
|
+
#if ABSL_HAVE_BUILTIN(__builtin_prefetch) || defined(__GNUC__)
|
83
|
+
|
84
|
+
#define ABSL_INTERNAL_HAVE_PREFETCH 1
|
85
|
+
|
86
|
+
// See __builtin_prefetch:
|
87
|
+
// https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html.
|
88
|
+
//
|
89
|
+
// These functions speculatively load for read only. This is
|
90
|
+
// safe for all currently supported platforms. However, prefetch for
|
91
|
+
// store may have problems depending on the target platform.
|
92
|
+
//
|
93
|
+
inline void PrefetchT0(const void* addr) {
|
94
|
+
// Note: this uses prefetcht0 on Intel.
|
95
|
+
__builtin_prefetch(addr, 0, 3);
|
96
|
+
}
|
97
|
+
inline void PrefetchT1(const void* addr) {
|
98
|
+
// Note: this uses prefetcht1 on Intel.
|
99
|
+
__builtin_prefetch(addr, 0, 2);
|
100
|
+
}
|
101
|
+
inline void PrefetchT2(const void* addr) {
|
102
|
+
// Note: this uses prefetcht2 on Intel.
|
103
|
+
__builtin_prefetch(addr, 0, 1);
|
104
|
+
}
|
105
|
+
inline void PrefetchNta(const void* addr) {
|
106
|
+
// Note: this uses prefetchtnta on Intel.
|
107
|
+
__builtin_prefetch(addr, 0, 0);
|
108
|
+
}
|
109
|
+
|
110
|
+
#elif defined(ABSL_INTERNAL_HAVE_SSE)
|
111
|
+
|
112
|
+
#define ABSL_INTERNAL_HAVE_PREFETCH 1
|
113
|
+
|
114
|
+
inline void PrefetchT0(const void* addr) {
|
115
|
+
_mm_prefetch(reinterpret_cast<const char*>(addr), _MM_HINT_T0);
|
116
|
+
}
|
117
|
+
inline void PrefetchT1(const void* addr) {
|
118
|
+
_mm_prefetch(reinterpret_cast<const char*>(addr), _MM_HINT_T1);
|
119
|
+
}
|
120
|
+
inline void PrefetchT2(const void* addr) {
|
121
|
+
_mm_prefetch(reinterpret_cast<const char*>(addr), _MM_HINT_T2);
|
122
|
+
}
|
123
|
+
inline void PrefetchNta(const void* addr) {
|
124
|
+
_mm_prefetch(reinterpret_cast<const char*>(addr), _MM_HINT_NTA);
|
125
|
+
}
|
126
|
+
|
127
|
+
#else
|
128
|
+
inline void PrefetchT0(const void*) {}
|
129
|
+
inline void PrefetchT1(const void*) {}
|
130
|
+
inline void PrefetchT2(const void*) {}
|
131
|
+
inline void PrefetchNta(const void*) {}
|
132
|
+
#endif
|
133
|
+
|
134
|
+
} // namespace base_internal
|
135
|
+
ABSL_NAMESPACE_END
|
136
|
+
} // namespace absl
|
137
|
+
|
138
|
+
#endif // ABSL_BASE_INTERNAL_PREFETCH_H_
|