grpc 1.46.2-x86_64-linux → 1.48.0.pre1-x86_64-linux
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/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- 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
@@ -30,25 +30,36 @@
|
|
30
30
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
31
31
|
|
32
32
|
typedef struct grpc_tcp_client_vtable {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
int64_t (*connect)(grpc_closure* on_connect, grpc_endpoint** endpoint,
|
34
|
+
grpc_pollset_set* interested_parties,
|
35
|
+
const grpc_channel_args* channel_args,
|
36
|
+
const grpc_resolved_address* addr,
|
37
|
+
grpc_core::Timestamp deadline);
|
38
|
+
bool (*cancel_connect)(int64_t connection_handle);
|
38
39
|
} grpc_tcp_client_vtable;
|
39
40
|
|
40
41
|
/* Asynchronously connect to an address (specified as (addr, len)), and call
|
41
42
|
cb with arg and the completed connection when done (or call cb with arg and
|
42
43
|
NULL on failure).
|
43
44
|
interested_parties points to a set of pollsets that would be interested
|
44
|
-
in this connection being established (in order to continue their work)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
in this connection being established (in order to continue their work). It
|
46
|
+
returns a handle to the connect operation which can be used to cancel the
|
47
|
+
connection attempt. */
|
48
|
+
int64_t grpc_tcp_client_connect(grpc_closure* on_connect,
|
49
|
+
grpc_endpoint** endpoint,
|
50
|
+
grpc_pollset_set* interested_parties,
|
51
|
+
const grpc_channel_args* channel_args,
|
52
|
+
const grpc_resolved_address* addr,
|
53
|
+
grpc_core::Timestamp deadline);
|
54
|
+
|
55
|
+
// Returns true if a connect attempt corresponding to the provided handle
|
56
|
+
// is successfully cancelled. Otherwise it returns false. If the connect
|
57
|
+
// attempt is successfully cancelled, then the on_connect closure passed to
|
58
|
+
// grpc_tcp_client_connect will not be executed. Its upto the caller to free
|
59
|
+
// up any resources that may have been allocated to create the closure.
|
60
|
+
bool grpc_tcp_client_cancel_connect(int64_t connection_handle);
|
61
|
+
|
62
|
+
extern void grpc_tcp_client_global_init();
|
52
63
|
|
53
64
|
void grpc_set_tcp_client_impl(grpc_tcp_client_vtable* impl);
|
54
65
|
|
@@ -116,7 +116,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
116
116
|
gpr_mu_unlock(&connect->mu);
|
117
117
|
CFStreamConnectCleanup(connect);
|
118
118
|
} else {
|
119
|
-
if (error
|
119
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
120
120
|
CFErrorRef stream_error = CFReadStreamCopyError(connect->read_stream);
|
121
121
|
if (stream_error == NULL) {
|
122
122
|
stream_error = CFWriteStreamCopyError(connect->write_stream);
|
@@ -125,7 +125,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
125
125
|
error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "connect() error");
|
126
126
|
CFRelease(stream_error);
|
127
127
|
}
|
128
|
-
if (error
|
128
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
129
129
|
*endpoint = grpc_cfstream_endpoint_create(
|
130
130
|
connect->read_stream, connect->write_stream,
|
131
131
|
connect->addr_name.c_str(), connect->stream_handle);
|
@@ -140,7 +140,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
140
140
|
|
141
141
|
static void ParseResolvedAddress(const grpc_resolved_address* addr,
|
142
142
|
CFStringRef* host, int* port) {
|
143
|
-
std::string host_port = grpc_sockaddr_to_string(addr, true);
|
143
|
+
std::string host_port = grpc_sockaddr_to_string(addr, true).value();
|
144
144
|
std::string host_string;
|
145
145
|
std::string port_string;
|
146
146
|
grpc_core::SplitHostPort(host_port, &host_string, &port_string);
|
@@ -149,15 +149,23 @@ static void ParseResolvedAddress(const grpc_resolved_address* addr,
|
|
149
149
|
*port = grpc_sockaddr_get_port(addr);
|
150
150
|
}
|
151
151
|
|
152
|
-
static
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
152
|
+
static int64_t CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
|
153
|
+
grpc_pollset_set* interested_parties,
|
154
|
+
const grpc_channel_args* channel_args,
|
155
|
+
const grpc_resolved_address* resolved_addr,
|
156
|
+
grpc_core::Timestamp deadline) {
|
157
|
+
auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
|
158
|
+
if (!addr_uri.ok()) {
|
159
|
+
grpc_error_handle error =
|
160
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
161
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
162
|
+
return 0;
|
163
|
+
}
|
164
|
+
|
157
165
|
CFStreamConnect* connect = new CFStreamConnect();
|
158
166
|
connect->closure = closure;
|
159
167
|
connect->endpoint = ep;
|
160
|
-
connect->addr_name =
|
168
|
+
connect->addr_name = addr_uri.value();
|
161
169
|
connect->refs = 2; // One for the connect operation, one for the timer.
|
162
170
|
gpr_ref_init(&connect->refcount, 1);
|
163
171
|
gpr_mu_init(&connect->mu);
|
@@ -190,8 +198,14 @@ static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
|
|
190
198
|
CFWriteStreamOpen(write_stream);
|
191
199
|
grpc_timer_init(&connect->alarm, deadline, &connect->on_alarm);
|
192
200
|
gpr_mu_unlock(&connect->mu);
|
201
|
+
return 0;
|
202
|
+
}
|
203
|
+
|
204
|
+
static bool CFStreamClientCancelConnect(int64_t /*connection_handle*/) {
|
205
|
+
return false;
|
193
206
|
}
|
194
207
|
|
195
|
-
grpc_tcp_client_vtable grpc_cfstream_client_vtable = {
|
208
|
+
grpc_tcp_client_vtable grpc_cfstream_client_vtable = {
|
209
|
+
CFStreamClientConnect, CFStreamClientCancelConnect};
|
196
210
|
|
197
211
|
#endif /* GRPC_CFSTREAM_CLIENT */
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <string.h>
|
28
28
|
#include <unistd.h>
|
29
29
|
|
30
|
+
#include "absl/container/flat_hash_map.h"
|
30
31
|
#include "absl/strings/str_cat.h"
|
31
32
|
|
32
33
|
#include <grpc/support/alloc.h>
|
@@ -62,8 +63,33 @@ struct async_connect {
|
|
62
63
|
grpc_endpoint** ep;
|
63
64
|
grpc_closure* closure;
|
64
65
|
grpc_channel_args* channel_args;
|
66
|
+
int64_t connection_handle;
|
67
|
+
bool connect_cancelled;
|
65
68
|
};
|
66
69
|
|
70
|
+
struct ConnectionShard {
|
71
|
+
grpc_core::Mutex mu;
|
72
|
+
absl::flat_hash_map<int64_t, async_connect*> pending_connections
|
73
|
+
ABSL_GUARDED_BY(&mu);
|
74
|
+
};
|
75
|
+
|
76
|
+
namespace {
|
77
|
+
|
78
|
+
gpr_once g_tcp_client_posix_init = GPR_ONCE_INIT;
|
79
|
+
std::vector<ConnectionShard>* g_connection_shards = nullptr;
|
80
|
+
std::atomic<int64_t> g_connection_id{1};
|
81
|
+
|
82
|
+
void do_tcp_client_global_init(void) {
|
83
|
+
size_t num_shards = std::max(2 * gpr_cpu_num_cores(), 1u);
|
84
|
+
g_connection_shards = new std::vector<struct ConnectionShard>(num_shards);
|
85
|
+
}
|
86
|
+
|
87
|
+
} // namespace
|
88
|
+
|
89
|
+
void grpc_tcp_client_global_init() {
|
90
|
+
gpr_once_init(&g_tcp_client_posix_init, do_tcp_client_global_init);
|
91
|
+
}
|
92
|
+
|
67
93
|
static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
|
68
94
|
int fd,
|
69
95
|
const grpc_channel_args* channel_args) {
|
@@ -72,24 +98,24 @@ static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
|
|
72
98
|
GPR_ASSERT(fd >= 0);
|
73
99
|
|
74
100
|
err = grpc_set_socket_nonblocking(fd, 1);
|
75
|
-
if (err
|
101
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
76
102
|
err = grpc_set_socket_cloexec(fd, 1);
|
77
|
-
if (err
|
103
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
78
104
|
if (!grpc_is_unix_socket(addr)) {
|
79
105
|
err = grpc_set_socket_low_latency(fd, 1);
|
80
|
-
if (err
|
106
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
81
107
|
err = grpc_set_socket_reuse_addr(fd, 1);
|
82
|
-
if (err
|
108
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
83
109
|
err = grpc_set_socket_tcp_user_timeout(fd, channel_args,
|
84
110
|
true /* is_client */);
|
85
|
-
if (err
|
111
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
86
112
|
}
|
87
113
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
88
|
-
if (err
|
114
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
89
115
|
|
90
116
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
|
91
117
|
channel_args);
|
92
|
-
if (err
|
118
|
+
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
93
119
|
|
94
120
|
goto done;
|
95
121
|
|
@@ -150,17 +176,24 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
150
176
|
GPR_ASSERT(ac->fd);
|
151
177
|
fd = ac->fd;
|
152
178
|
ac->fd = nullptr;
|
179
|
+
bool connect_cancelled = ac->connect_cancelled;
|
153
180
|
gpr_mu_unlock(&ac->mu);
|
154
181
|
|
155
182
|
grpc_timer_cancel(&ac->alarm);
|
156
183
|
|
157
184
|
gpr_mu_lock(&ac->mu);
|
158
|
-
if (error
|
185
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
159
186
|
error =
|
160
187
|
grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, "Timeout occurred");
|
161
188
|
goto finish;
|
162
189
|
}
|
163
190
|
|
191
|
+
if (connect_cancelled) {
|
192
|
+
// The callback should not get scheduled in this case.
|
193
|
+
error = GRPC_ERROR_NONE;
|
194
|
+
goto finish;
|
195
|
+
}
|
196
|
+
|
164
197
|
do {
|
165
198
|
so_error_size = sizeof(so_error);
|
166
199
|
err = getsockopt(grpc_fd_wrapped_fd(fd), SOL_SOCKET, SO_ERROR, &so_error,
|
@@ -208,6 +241,14 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
208
241
|
}
|
209
242
|
|
210
243
|
finish:
|
244
|
+
if (!connect_cancelled) {
|
245
|
+
int shard_number = ac->connection_handle % (*g_connection_shards).size();
|
246
|
+
struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
|
247
|
+
{
|
248
|
+
grpc_core::MutexLock lock(&shard->mu);
|
249
|
+
shard->pending_connections.erase(ac->connection_handle);
|
250
|
+
}
|
251
|
+
}
|
211
252
|
if (fd != nullptr) {
|
212
253
|
grpc_pollset_set_del_fd(ac->interested_parties, fd);
|
213
254
|
grpc_fd_orphan(fd, nullptr, nullptr, "tcp_client_orphan");
|
@@ -215,7 +256,7 @@ finish:
|
|
215
256
|
}
|
216
257
|
done = (--ac->refs == 0);
|
217
258
|
gpr_mu_unlock(&ac->mu);
|
218
|
-
if (error
|
259
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
219
260
|
std::string str;
|
220
261
|
bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
|
221
262
|
GPR_ASSERT(ret);
|
@@ -234,7 +275,12 @@ finish:
|
|
234
275
|
// Push async connect closure to the executor since this may actually be
|
235
276
|
// called during the shutdown process, in which case a deadlock could form
|
236
277
|
// between the core shutdown mu and the connector mu (b/188239051)
|
237
|
-
|
278
|
+
if (!connect_cancelled) {
|
279
|
+
grpc_core::Executor::Run(closure, error);
|
280
|
+
} else if (!GRPC_ERROR_IS_NONE(error)) {
|
281
|
+
// Unref the error here because it is not used.
|
282
|
+
(void)GRPC_ERROR_UNREF(error);
|
283
|
+
}
|
238
284
|
}
|
239
285
|
|
240
286
|
grpc_error_handle grpc_tcp_client_prepare_fd(
|
@@ -251,7 +297,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
251
297
|
}
|
252
298
|
error =
|
253
299
|
grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, fd);
|
254
|
-
if (error
|
300
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
255
301
|
return error;
|
256
302
|
}
|
257
303
|
if (dsmode == GRPC_DSMODE_IPV4) {
|
@@ -267,7 +313,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
267
313
|
return GRPC_ERROR_NONE;
|
268
314
|
}
|
269
315
|
|
270
|
-
|
316
|
+
int64_t grpc_tcp_client_create_from_prepared_fd(
|
271
317
|
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
|
272
318
|
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
273
319
|
grpc_core::Timestamp deadline, grpc_endpoint** ep) {
|
@@ -277,22 +323,38 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
277
323
|
addr->len);
|
278
324
|
} while (err < 0 && errno == EINTR);
|
279
325
|
|
280
|
-
|
326
|
+
auto addr_uri = grpc_sockaddr_to_uri(addr);
|
327
|
+
if (!addr_uri.ok()) {
|
328
|
+
grpc_error_handle error =
|
329
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
330
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
331
|
+
return 0;
|
332
|
+
}
|
333
|
+
|
334
|
+
std::string name = absl::StrCat("tcp-client:", addr_uri.value());
|
281
335
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
336
|
+
int64_t connection_id = 0;
|
337
|
+
if (errno == EWOULDBLOCK || errno == EINPROGRESS) {
|
338
|
+
// Connection is still in progress.
|
339
|
+
connection_id = g_connection_id.fetch_add(1, std::memory_order_acq_rel);
|
340
|
+
}
|
282
341
|
|
283
342
|
if (err >= 0) {
|
284
|
-
|
285
|
-
|
343
|
+
// Connection already succeded. Return 0 to discourage any cancellation
|
344
|
+
// attempts.
|
345
|
+
*ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_uri.value());
|
286
346
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
287
|
-
return;
|
347
|
+
return 0;
|
288
348
|
}
|
289
349
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
350
|
+
// Connection already failed. Return 0 to discourage any cancellation
|
351
|
+
// attempts.
|
290
352
|
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
|
291
353
|
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
292
|
-
|
354
|
+
addr_uri.value());
|
293
355
|
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
|
294
356
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
295
|
-
return;
|
357
|
+
return 0;
|
296
358
|
}
|
297
359
|
|
298
360
|
grpc_pollset_set_add_fd(interested_parties, fdobj);
|
@@ -302,7 +364,9 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
302
364
|
ac->ep = ep;
|
303
365
|
ac->fd = fdobj;
|
304
366
|
ac->interested_parties = interested_parties;
|
305
|
-
ac->addr_str =
|
367
|
+
ac->addr_str = addr_uri.value();
|
368
|
+
ac->connection_handle = connection_id;
|
369
|
+
ac->connect_cancelled = false;
|
306
370
|
gpr_mu_init(&ac->mu);
|
307
371
|
ac->refs = 2;
|
308
372
|
GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
|
@@ -314,18 +378,26 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
314
378
|
ac->addr_str.c_str(), fdobj);
|
315
379
|
}
|
316
380
|
|
381
|
+
int shard_number = connection_id % (*g_connection_shards).size();
|
382
|
+
struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
|
383
|
+
{
|
384
|
+
grpc_core::MutexLock lock(&shard->mu);
|
385
|
+
shard->pending_connections.insert_or_assign(connection_id, ac);
|
386
|
+
}
|
387
|
+
|
317
388
|
gpr_mu_lock(&ac->mu);
|
318
389
|
GRPC_CLOSURE_INIT(&ac->on_alarm, tc_on_alarm, ac, grpc_schedule_on_exec_ctx);
|
319
390
|
grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
|
320
391
|
grpc_fd_notify_on_write(ac->fd, &ac->write_closure);
|
321
392
|
gpr_mu_unlock(&ac->mu);
|
393
|
+
return connection_id;
|
322
394
|
}
|
323
395
|
|
324
|
-
static
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
396
|
+
static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
397
|
+
grpc_pollset_set* interested_parties,
|
398
|
+
const grpc_channel_args* channel_args,
|
399
|
+
const grpc_resolved_address* addr,
|
400
|
+
grpc_core::Timestamp deadline) {
|
329
401
|
grpc_resolved_address mapped_addr;
|
330
402
|
int fd = -1;
|
331
403
|
grpc_error_handle error;
|
@@ -333,12 +405,65 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
333
405
|
if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr,
|
334
406
|
&fd)) != GRPC_ERROR_NONE) {
|
335
407
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
336
|
-
return;
|
408
|
+
return 0;
|
409
|
+
}
|
410
|
+
return grpc_tcp_client_create_from_prepared_fd(interested_parties, closure,
|
411
|
+
fd, channel_args, &mapped_addr,
|
412
|
+
deadline, ep);
|
413
|
+
}
|
414
|
+
|
415
|
+
static bool tcp_cancel_connect(int64_t connection_handle) {
|
416
|
+
if (connection_handle <= 0) {
|
417
|
+
return false;
|
418
|
+
}
|
419
|
+
int shard_number = connection_handle % (*g_connection_shards).size();
|
420
|
+
struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
|
421
|
+
async_connect* ac = nullptr;
|
422
|
+
{
|
423
|
+
grpc_core::MutexLock lock(&shard->mu);
|
424
|
+
auto it = shard->pending_connections.find(connection_handle);
|
425
|
+
if (it != shard->pending_connections.end()) {
|
426
|
+
ac = it->second;
|
427
|
+
GPR_ASSERT(ac != nullptr);
|
428
|
+
// Trying to acquire ac->mu here would could cause a deadlock because
|
429
|
+
// the on_writable method tries to acquire the two mutexes used
|
430
|
+
// here in the reverse order. But we dont need to acquire ac->mu before
|
431
|
+
// incrementing ac->refs here. This is because the on_writable
|
432
|
+
// method decrements ac->refs only after deleting the connection handle
|
433
|
+
// from the corresponding hashmap. If the code enters here, it means that
|
434
|
+
// deletion hasn't happened yet. The deletion can only happen after the
|
435
|
+
// corresponding g_shard_mu is unlocked.
|
436
|
+
++ac->refs;
|
437
|
+
// Remove connection from list of active connections.
|
438
|
+
shard->pending_connections.erase(it);
|
439
|
+
}
|
440
|
+
}
|
441
|
+
if (ac == nullptr) {
|
442
|
+
return false;
|
443
|
+
}
|
444
|
+
gpr_mu_lock(&ac->mu);
|
445
|
+
bool connection_cancel_success = (ac->fd != nullptr);
|
446
|
+
if (connection_cancel_success) {
|
447
|
+
// Connection is still pending. The on_writable callback hasn't executed
|
448
|
+
// yet because ac->fd != nullptr.
|
449
|
+
ac->connect_cancelled = true;
|
450
|
+
// Shutdown the fd. This would cause on_writable to run as soon as possible.
|
451
|
+
// We dont need to pass a custom error here because it wont be used since
|
452
|
+
// the on_connect_closure is not run if connect cancellation is successfull.
|
453
|
+
grpc_fd_shutdown(ac->fd, GRPC_ERROR_NONE);
|
454
|
+
}
|
455
|
+
bool done = (--ac->refs == 0);
|
456
|
+
gpr_mu_unlock(&ac->mu);
|
457
|
+
if (done) {
|
458
|
+
// This is safe even outside the lock, because "done", the sentinel, is
|
459
|
+
// populated *inside* the lock.
|
460
|
+
gpr_mu_destroy(&ac->mu);
|
461
|
+
grpc_channel_args_destroy(ac->channel_args);
|
462
|
+
delete ac;
|
337
463
|
}
|
338
|
-
|
339
|
-
channel_args, &mapped_addr, deadline,
|
340
|
-
ep);
|
464
|
+
return connection_cancel_success;
|
341
465
|
}
|
342
466
|
|
343
|
-
grpc_tcp_client_vtable grpc_posix_tcp_client_vtable = {tcp_connect
|
467
|
+
grpc_tcp_client_vtable grpc_posix_tcp_client_vtable = {tcp_connect,
|
468
|
+
tcp_cancel_connect};
|
344
469
|
#endif
|
@@ -61,7 +61,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
61
61
|
deadline: connection deadline
|
62
62
|
ep: out parameter. Set before closure is called if successful
|
63
63
|
*/
|
64
|
-
|
64
|
+
int64_t grpc_tcp_client_create_from_prepared_fd(
|
65
65
|
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
|
66
66
|
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
67
67
|
grpc_core::Timestamp deadline, grpc_endpoint** ep);
|
@@ -93,7 +93,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
93
93
|
|
94
94
|
gpr_mu_lock(&ac->mu);
|
95
95
|
|
96
|
-
if (error
|
96
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
97
97
|
if (socket != NULL) {
|
98
98
|
DWORD transfered_bytes = 0;
|
99
99
|
DWORD flags;
|
@@ -121,11 +121,11 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
121
121
|
|
122
122
|
/* Tries to issue one async connection, then schedules both an IOCP
|
123
123
|
notification request for the connection, and one timeout alert. */
|
124
|
-
static
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
124
|
+
static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
125
|
+
grpc_pollset_set* interested_parties,
|
126
|
+
const grpc_channel_args* channel_args,
|
127
|
+
const grpc_resolved_address* addr,
|
128
|
+
grpc_core::Timestamp deadline) {
|
129
129
|
SOCKET sock = INVALID_SOCKET;
|
130
130
|
BOOL success;
|
131
131
|
int status;
|
@@ -138,6 +138,13 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
138
138
|
grpc_winsocket_callback_info* info;
|
139
139
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
140
140
|
async_connect* ac = NULL;
|
141
|
+
absl::StatusOr<std::string> addr_uri;
|
142
|
+
|
143
|
+
addr_uri = grpc_sockaddr_to_uri(addr);
|
144
|
+
if (!addr_uri.ok()) {
|
145
|
+
error = GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
146
|
+
goto failure;
|
147
|
+
}
|
141
148
|
|
142
149
|
*endpoint = NULL;
|
143
150
|
|
@@ -154,7 +161,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
154
161
|
}
|
155
162
|
|
156
163
|
error = grpc_tcp_prepare_socket(sock);
|
157
|
-
if (error
|
164
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
158
165
|
goto failure;
|
159
166
|
}
|
160
167
|
|
@@ -199,7 +206,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
199
206
|
ac->socket = socket;
|
200
207
|
gpr_mu_init(&ac->mu);
|
201
208
|
ac->refs = 2;
|
202
|
-
ac->addr_name =
|
209
|
+
ac->addr_name = addr_uri.value();
|
203
210
|
ac->endpoint = endpoint;
|
204
211
|
ac->channel_args = grpc_channel_args_copy(channel_args);
|
205
212
|
GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx);
|
@@ -209,15 +216,15 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
209
216
|
grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
|
210
217
|
grpc_socket_notify_on_write(socket, &ac->on_connect);
|
211
218
|
gpr_mu_unlock(&ac->mu);
|
212
|
-
return;
|
219
|
+
return 0;
|
213
220
|
|
214
221
|
failure:
|
215
|
-
GPR_ASSERT(error
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
222
|
+
GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
|
223
|
+
grpc_error_handle final_error = grpc_error_set_str(
|
224
|
+
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Failed to connect",
|
225
|
+
&error, 1),
|
226
|
+
GRPC_ERROR_STR_TARGET_ADDRESS,
|
227
|
+
addr_uri.ok() ? *addr_uri : addr_uri.status().ToString());
|
221
228
|
GRPC_ERROR_UNREF(error);
|
222
229
|
if (socket != NULL) {
|
223
230
|
grpc_winsocket_destroy(socket);
|
@@ -225,8 +232,12 @@ failure:
|
|
225
232
|
closesocket(sock);
|
226
233
|
}
|
227
234
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, final_error);
|
235
|
+
return 0;
|
228
236
|
}
|
229
237
|
|
230
|
-
|
238
|
+
static bool tcp_cancel_connect(int64_t /*connection_handle*/) { return false; }
|
239
|
+
|
240
|
+
grpc_tcp_client_vtable grpc_windows_tcp_client_vtable = {tcp_connect,
|
241
|
+
tcp_cancel_connect};
|
231
242
|
|
232
243
|
#endif /* GRPC_WINSOCK_SOCKET */
|