grpc 1.46.3-x86_64-linux → 1.47.0-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 +49 -97
- data/include/grpc/event_engine/event_engine.h +42 -7
- 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 +112 -0
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +100 -36
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
- 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 +5 -5
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
- data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
- data/src/core/ext/filters/client_channel/client_channel.h +26 -6
- 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 +7 -5
- data/src/core/ext/filters/client_channel/connector.h +8 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
- 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 +9 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
- 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 +408 -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 +1038 -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 +60 -52
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
- 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 +30 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- 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 +2 -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 +23 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
- 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 +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
- 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 +30 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
- 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 +59 -13
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
- 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 +15 -11
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
- data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
- 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 +22 -5
- data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
- data/src/core/ext/filters/client_channel/subchannel.h +80 -20
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
- 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 +16 -2
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
- data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
- data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
- 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 +69 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
- 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 +6 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
- 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 +12 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
- 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 +25 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -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 +24 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
- 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 +38 -2
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
- 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_store.cc +4 -2
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
- data/src/core/ext/xds/xds_certificate_provider.h +1 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
- data/src/core/ext/xds/xds_client.cc +46 -22
- data/src/core/ext/xds/xds_cluster.cc +106 -16
- data/src/core/ext/xds/xds_cluster.h +3 -0
- data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
- data/src/core/ext/xds/xds_listener.cc +19 -9
- data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
- data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
- data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
- data/src/core/lib/avl/avl.h +3 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +8 -2
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +33 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_stack.cc +41 -3
- data/src/core/lib/channel/channel_stack.h +49 -3
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +15 -27
- data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
- data/src/core/lib/channel/channel_stack_builder_impl.h +3 -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 +8 -13
- data/src/core/lib/channel/channelz.h +13 -4
- data/src/core/lib/channel/channelz_registry.cc +7 -14
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +21 -31
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +444 -189
- data/src/core/lib/channel/promise_based_filter.h +160 -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_internal.cc +45 -10
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- 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 +12 -2
- 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.cc +206 -0
- data/src/core/lib/event_engine/iomgr_engine.h +118 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- 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/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 -1
- 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 +8 -4
- 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 +8 -0
- data/src/core/lib/gprpp/time.h +6 -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 +29 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +88 -81
- data/src/core/lib/http/httpcli.h +39 -7
- data/src/core/lib/http/httpcli_security_connector.cc +3 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +6 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/ev_posix.cc +1 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- 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 +0 -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/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 +8 -14
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
- 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_cfstream.cc +10 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
- data/src/core/lib/iomgr/tcp_posix.cc +9 -27
- data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
- data/src/core/lib/iomgr/tcp_windows.cc +7 -4
- 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/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +6 -6
- 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 +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 +2 -0
- data/src/core/lib/promise/sleep.h +10 -0
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver_factory.h +1 -2
- data/src/core/lib/resolver/server_address.cc +9 -3
- data/src/core/lib/resolver/server_address.h +4 -4
- 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 +47 -5
- data/src/core/lib/resource_quota/memory_quota.h +24 -5
- 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/grpc_server_authz_filter.cc +3 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
- data/src/core/lib/security/credentials/credentials.h +17 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
- data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
- data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
- data/src/core/lib/security/transport/security_handshaker.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +4 -1
- data/src/core/lib/service_config/service_config_impl.cc +7 -0
- data/src/core/lib/service_config/service_config_impl.h +9 -2
- data/src/core/lib/service_config/service_config_parser.cc +8 -0
- 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 +50 -23
- data/src/core/lib/slice/slice_buffer.h +106 -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_split.cc +3 -0
- data/src/core/lib/slice/slice_split.h +0 -4
- data/src/core/lib/slice/slice_string_helpers.cc +4 -0
- data/src/core/lib/slice/slice_string_helpers.h +1 -4
- 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 +41 -26
- data/src/core/lib/surface/call.h +16 -2
- 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 +94 -57
- 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 +14 -6
- data/src/core/lib/surface/completion_queue.h +5 -1
- 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 -45
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +64 -110
- data/src/core/lib/surface/lame_client.h +40 -2
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +69 -56
- data/src/core/lib/surface/server.h +39 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -5
- 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/byte_stream.cc +4 -3
- data/src/core/lib/transport/byte_stream.h +5 -1
- 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 +4 -2
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
- 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 +24 -10
- 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 -17
- data/src/core/lib/transport/transport.h +28 -2
- data/src/core/lib/transport/transport_impl.h +10 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -10
- 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/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/ruby/ext/grpc/extconf.rb +2 -2
- 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/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
- metadata +36 -29
- 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/promise.h +0 -51
- 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
@@ -177,15 +177,10 @@ struct tcp_info {
|
|
177
177
|
/* Returns true if kernel is capable of supporting errqueue and timestamping.
|
178
178
|
* Currently allowing only linux kernels above 4.0.0
|
179
179
|
*/
|
180
|
-
bool
|
180
|
+
bool KernelSupportsErrqueue();
|
181
181
|
|
182
182
|
} /* namespace grpc_core */
|
183
183
|
|
184
184
|
#endif /* GRPC_POSIX_SOCKET_TCP */
|
185
185
|
|
186
|
-
namespace grpc_core {
|
187
|
-
/* Initializes errqueue support */
|
188
|
-
void grpc_errqueue_init();
|
189
|
-
} /* namespace grpc_core */
|
190
|
-
|
191
186
|
#endif /* GRPC_CORE_LIB_IOMGR_INTERNAL_ERRQUEUE_H */
|
data/src/core/lib/iomgr/iomgr.cc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2022 gRPC authors.
|
2
2
|
//
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
// you may not use this file except in compliance with the License.
|
@@ -11,18 +11,15 @@
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
14
|
|
16
|
-
#
|
17
|
-
#
|
15
|
+
#ifndef GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
|
16
|
+
#define GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
|
17
|
+
|
18
|
+
// A bunch of forward declarations that are useful to higher level things that
|
19
|
+
// don't want to depend on all of iomgr.
|
18
20
|
|
19
|
-
#include
|
21
|
+
#include <grpc/support/port_platform.h>
|
20
22
|
|
21
|
-
|
22
|
-
/* The libuv grpc code currently does not have the code to probe for this,
|
23
|
-
* so we assume for now that IPv6 is always available in contexts where this
|
24
|
-
* code will be used. */
|
25
|
-
return true;
|
26
|
-
}
|
23
|
+
typedef struct grpc_pollset_set grpc_pollset_set;
|
27
24
|
|
28
|
-
#endif
|
25
|
+
#endif // GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
24
25
|
#include "src/core/lib/iomgr/pollset.h"
|
25
26
|
|
26
27
|
/* A grpc_pollset_set is a set of pollsets that are interested in an
|
@@ -28,8 +29,6 @@
|
|
28
29
|
fd's (etc) that have been registered with the set_set to that pollset.
|
29
30
|
Registering fd's automatically adds them to all current pollsets. */
|
30
31
|
|
31
|
-
typedef struct grpc_pollset_set grpc_pollset_set;
|
32
|
-
|
33
32
|
typedef struct grpc_pollset_set_vtable {
|
34
33
|
grpc_pollset_set* (*create)(void);
|
35
34
|
void (*destroy)(grpc_pollset_set* pollset_set);
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -25,9 +25,7 @@
|
|
25
25
|
#ifdef GPR_WINDOWS
|
26
26
|
#define GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY 1
|
27
27
|
#endif
|
28
|
-
#if defined(
|
29
|
-
// Do Nothing
|
30
|
-
#elif defined(GPR_WINDOWS)
|
28
|
+
#if defined(GPR_WINDOWS)
|
31
29
|
#define GRPC_WINSOCK_SOCKET 1
|
32
30
|
#define GRPC_WINDOWS_SOCKETUTILS 1
|
33
31
|
#define GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER 1
|
@@ -155,6 +153,17 @@
|
|
155
153
|
#define GRPC_POSIX_SOCKET 1
|
156
154
|
#define GRPC_POSIX_SOCKETUTILS 1
|
157
155
|
#define GRPC_POSIX_WAKEUP_FD 1
|
156
|
+
#elif defined(GPR_NETBSD)
|
157
|
+
#define GRPC_HAVE_ARPA_NAMESER 1
|
158
|
+
#define GRPC_HAVE_IFADDRS 1
|
159
|
+
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
|
160
|
+
#define GRPC_HAVE_SO_NOSIGPIPE 1
|
161
|
+
#define GRPC_HAVE_UNIX_SOCKET 1
|
162
|
+
#define GRPC_POSIX_FORK 1
|
163
|
+
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
164
|
+
#define GRPC_POSIX_SOCKET 1
|
165
|
+
#define GRPC_POSIX_SOCKETUTILS 1
|
166
|
+
#define GRPC_POSIX_WAKEUP_FD 1
|
158
167
|
#elif defined(GPR_NACL)
|
159
168
|
#define GRPC_HAVE_ARPA_NAMESER 1
|
160
169
|
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
@@ -177,15 +186,25 @@
|
|
177
186
|
// TODO(rudominer) Check this does something we want.
|
178
187
|
#define GRPC_POSIX_SOCKETUTILS 1
|
179
188
|
#define GRPC_TIMER_USE_GENERIC 1
|
189
|
+
#elif defined(GPR_HAIKU)
|
190
|
+
#define GRPC_HAVE_ARPA_NAMESER 1
|
191
|
+
#define GRPC_HAVE_IFADDRS 1
|
192
|
+
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
|
193
|
+
#define GRPC_HAVE_UNIX_SOCKET 1
|
194
|
+
#define GRPC_POSIX_FORK 1
|
195
|
+
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
196
|
+
#define GRPC_POSIX_SOCKET 1
|
197
|
+
#define GRPC_POSIX_SOCKETUTILS 1
|
198
|
+
#define GRPC_POSIX_WAKEUP_FD 1
|
180
199
|
#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
|
181
200
|
#error "Platform not recognized"
|
182
201
|
#endif
|
183
202
|
|
184
|
-
#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) +
|
185
|
-
defined(GRPC_CFSTREAM)
|
203
|
+
#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
|
204
|
+
defined(GRPC_CFSTREAM) != \
|
186
205
|
1
|
187
206
|
#error \
|
188
|
-
"Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GRPC_CFSTREAM
|
207
|
+
"Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GRPC_CFSTREAM"
|
189
208
|
#endif
|
190
209
|
|
191
210
|
#ifdef GRPC_POSIX_SOCKET
|
@@ -19,6 +19,8 @@
|
|
19
19
|
|
20
20
|
#include "src/core/lib/iomgr/resolve_address.h"
|
21
21
|
|
22
|
+
#include "absl/strings/str_cat.h"
|
23
|
+
|
22
24
|
#include <grpc/event_engine/event_engine.h>
|
23
25
|
#include <grpc/support/alloc.h>
|
24
26
|
|
@@ -29,8 +31,14 @@ namespace {
|
|
29
31
|
DNSResolver* g_dns_resolver;
|
30
32
|
}
|
31
33
|
|
34
|
+
constexpr DNSResolver::TaskHandle DNSResolver::kNullHandle;
|
35
|
+
|
32
36
|
void SetDNSResolver(DNSResolver* resolver) { g_dns_resolver = resolver; }
|
33
37
|
|
34
38
|
DNSResolver* GetDNSResolver() { return g_dns_resolver; }
|
35
39
|
|
40
|
+
std::string DNSResolver::HandleToString(TaskHandle handle) {
|
41
|
+
return absl::StrCat("{", handle.keys[0], ",", handle.keys[1], "}");
|
42
|
+
}
|
43
|
+
|
36
44
|
} // namespace grpc_core
|
@@ -25,6 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "absl/status/statusor.h"
|
27
27
|
|
28
|
+
#include <grpc/event_engine/event_engine.h>
|
29
|
+
|
28
30
|
#include "src/core/lib/gprpp/orphanable.h"
|
29
31
|
#include "src/core/lib/iomgr/pollset_set.h"
|
30
32
|
#include "src/core/lib/iomgr/port.h"
|
@@ -39,37 +41,42 @@ constexpr int kDefaultSecurePortInt = 443;
|
|
39
41
|
// A singleton class used for async and blocking DNS resolution
|
40
42
|
class DNSResolver {
|
41
43
|
public:
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
class Request : public InternallyRefCounted<Request> {
|
46
|
-
public:
|
47
|
-
// Begins async DNS resolution
|
48
|
-
virtual void Start() = 0;
|
49
|
-
};
|
44
|
+
using TaskHandle = ::grpc_event_engine::experimental::EventEngine::
|
45
|
+
DNSResolver::LookupTaskHandle;
|
46
|
+
static constexpr TaskHandle kNullHandle{0, 0};
|
50
47
|
|
51
48
|
virtual ~DNSResolver() {}
|
52
49
|
|
50
|
+
static std::string HandleToString(TaskHandle handle);
|
51
|
+
|
53
52
|
// Asynchronously resolve name. Use \a default_port if a port isn't designated
|
54
53
|
// in \a name, otherwise use the port in \a name. On completion, \a on_done is
|
55
54
|
// invoked with the result.
|
56
55
|
//
|
57
56
|
// Note for implementations: calls may acquire locks in \a on_done which
|
58
|
-
// were previously held while
|
59
|
-
// implementations must not invoke \a on_done inline from the call
|
60
|
-
//
|
61
|
-
// this.
|
62
|
-
|
57
|
+
// were previously held while starting the request. Therefore,
|
58
|
+
// implementations must not invoke \a on_done inline from the call site that
|
59
|
+
// starts the request. The DNSCallbackExecCtxScheduler utility may help
|
60
|
+
// address this.
|
61
|
+
//
|
62
|
+
// \a interested_parties may be deleted after a request is cancelled.
|
63
|
+
virtual TaskHandle ResolveName(
|
63
64
|
absl::string_view name, absl::string_view default_port,
|
64
65
|
grpc_pollset_set* interested_parties,
|
65
66
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
66
|
-
on_done)
|
67
|
+
on_done) = 0;
|
67
68
|
|
68
69
|
// Resolve name in a blocking fashion. Use \a default_port if a port isn't
|
69
70
|
// designated in \a name, otherwise use the port in \a name.
|
70
71
|
virtual absl::StatusOr<std::vector<grpc_resolved_address>>
|
71
72
|
ResolveNameBlocking(absl::string_view name,
|
72
73
|
absl::string_view default_port) = 0;
|
74
|
+
|
75
|
+
// This shares the same semantics with \a EventEngine::Cancel: successfully
|
76
|
+
// cancelled lookups will not have their callbacks executed, and this
|
77
|
+
// method returns true. If a TaskHandle is unknown, this method should return
|
78
|
+
// false.
|
79
|
+
virtual bool Cancel(TaskHandle handle) = 0;
|
73
80
|
};
|
74
81
|
|
75
82
|
// Override the active DNS resolver which should be used for all DNS
|
@@ -26,9 +26,8 @@
|
|
26
26
|
|
27
27
|
namespace grpc_core {
|
28
28
|
|
29
|
-
// A fire and forget class
|
30
|
-
//
|
31
|
-
// necessary to avoid lock inversion related problems.
|
29
|
+
// A fire and forget class to schedule DNS resolution callbacks on the ExecCtx,
|
30
|
+
// which is frequently necessary to avoid lock inversion related problems.
|
32
31
|
class DNSCallbackExecCtxScheduler {
|
33
32
|
public:
|
34
33
|
DNSCallbackExecCtxScheduler(
|
@@ -45,7 +45,7 @@
|
|
45
45
|
namespace grpc_core {
|
46
46
|
namespace {
|
47
47
|
|
48
|
-
class NativeDNSRequest
|
48
|
+
class NativeDNSRequest {
|
49
49
|
public:
|
50
50
|
NativeDNSRequest(
|
51
51
|
absl::string_view name, absl::string_view default_port,
|
@@ -53,18 +53,9 @@ class NativeDNSRequest : public DNSResolver::Request {
|
|
53
53
|
on_done)
|
54
54
|
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
55
55
|
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
56
|
-
}
|
57
|
-
|
58
|
-
// Starts the resolution
|
59
|
-
void Start() override {
|
60
|
-
Ref().release(); // ref held by callback
|
61
56
|
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
|
62
57
|
}
|
63
58
|
|
64
|
-
// This is a no-op for the native resolver. Note
|
65
|
-
// that no I/O polling is required for the resolution to finish.
|
66
|
-
void Orphan() override { Unref(); }
|
67
|
-
|
68
59
|
private:
|
69
60
|
// Callback to be passed to grpc Executor to asynch-ify
|
70
61
|
// ResolveNameBlocking
|
@@ -74,7 +65,7 @@ class NativeDNSRequest : public DNSResolver::Request {
|
|
74
65
|
GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
|
75
66
|
// running inline is safe since we've already been scheduled on the executor
|
76
67
|
r->on_done_(std::move(result));
|
77
|
-
r
|
68
|
+
delete r;
|
78
69
|
}
|
79
70
|
|
80
71
|
const std::string name_;
|
@@ -91,13 +82,14 @@ NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
|
|
91
82
|
return instance;
|
92
83
|
}
|
93
84
|
|
94
|
-
|
85
|
+
DNSResolver::TaskHandle NativeDNSResolver::ResolveName(
|
95
86
|
absl::string_view name, absl::string_view default_port,
|
96
87
|
grpc_pollset_set* /* interested_parties */,
|
97
88
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
98
89
|
on_done) {
|
99
|
-
|
100
|
-
|
90
|
+
// self-deleting class
|
91
|
+
new NativeDNSRequest(name, default_port, std::move(on_done));
|
92
|
+
return kNullHandle;
|
101
93
|
}
|
102
94
|
|
103
95
|
absl::StatusOr<std::vector<grpc_resolved_address>>
|
@@ -181,6 +173,8 @@ done:
|
|
181
173
|
return error_result;
|
182
174
|
}
|
183
175
|
|
176
|
+
bool NativeDNSResolver::Cancel(TaskHandle /*handle*/) { return false; }
|
177
|
+
|
184
178
|
} // namespace grpc_core
|
185
179
|
|
186
180
|
#endif
|
@@ -32,14 +32,17 @@ class NativeDNSResolver : public DNSResolver {
|
|
32
32
|
// Gets the singleton instance, creating it first if it doesn't exist
|
33
33
|
static NativeDNSResolver* GetOrCreate();
|
34
34
|
|
35
|
-
|
35
|
+
TaskHandle ResolveName(
|
36
36
|
absl::string_view name, absl::string_view default_port,
|
37
|
-
grpc_pollset_set* interested_parties
|
37
|
+
grpc_pollset_set* /* interested_parties */,
|
38
38
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
39
39
|
on_done) override;
|
40
40
|
|
41
41
|
absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
|
42
42
|
absl::string_view name, absl::string_view default_port) override;
|
43
|
+
|
44
|
+
// NativeDNSResolver does not support cancellation.
|
45
|
+
bool Cancel(TaskHandle handle) override;
|
43
46
|
};
|
44
47
|
|
45
48
|
} // namespace grpc_core
|
@@ -48,7 +48,7 @@
|
|
48
48
|
namespace grpc_core {
|
49
49
|
namespace {
|
50
50
|
|
51
|
-
class NativeDNSRequest
|
51
|
+
class NativeDNSRequest {
|
52
52
|
public:
|
53
53
|
NativeDNSRequest(
|
54
54
|
absl::string_view name, absl::string_view default_port,
|
@@ -56,18 +56,9 @@ class NativeDNSRequest : public DNSResolver::Request {
|
|
56
56
|
on_done)
|
57
57
|
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
|
58
58
|
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
|
59
|
-
}
|
60
|
-
|
61
|
-
// Starts the resolution
|
62
|
-
void Start() override {
|
63
|
-
Ref().release(); // ref held by callback
|
64
59
|
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
|
65
60
|
}
|
66
61
|
|
67
|
-
// This is a no-op for the native resolver. Note
|
68
|
-
// that no I/O polling is required for the resolution to finish.
|
69
|
-
void Orphan() override { Unref(); }
|
70
|
-
|
71
62
|
private:
|
72
63
|
// Callback to be passed to grpc Executor to asynch-ify
|
73
64
|
// ResolveNameBlocking
|
@@ -77,7 +68,7 @@ class NativeDNSRequest : public DNSResolver::Request {
|
|
77
68
|
GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
|
78
69
|
// running inline is safe since we've already been scheduled on the executor
|
79
70
|
r->on_done_(std::move(result));
|
80
|
-
r
|
71
|
+
delete r;
|
81
72
|
}
|
82
73
|
|
83
74
|
const std::string name_;
|
@@ -94,13 +85,13 @@ NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
|
|
94
85
|
return instance;
|
95
86
|
}
|
96
87
|
|
97
|
-
|
88
|
+
DNSResolver::TaskHandle NativeDNSResolver::ResolveName(
|
98
89
|
absl::string_view name, absl::string_view default_port,
|
99
90
|
grpc_pollset_set* /* interested_parties */,
|
100
91
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
101
92
|
on_done) {
|
102
|
-
|
103
|
-
|
93
|
+
new NativeDNSRequest(name, default_port, std::move(on_done));
|
94
|
+
return kNullHandle;
|
104
95
|
}
|
105
96
|
|
106
97
|
absl::StatusOr<std::vector<grpc_resolved_address>>
|
@@ -166,6 +157,8 @@ done:
|
|
166
157
|
return error_result;
|
167
158
|
}
|
168
159
|
|
160
|
+
bool NativeDNSResolver::Cancel(TaskHandle /*handle*/) { return false; }
|
161
|
+
|
169
162
|
} // namespace grpc_core
|
170
163
|
|
171
164
|
#endif
|
@@ -32,14 +32,17 @@ class NativeDNSResolver : public DNSResolver {
|
|
32
32
|
// Gets the singleton instance, creating it first if it doesn't exist
|
33
33
|
static NativeDNSResolver* GetOrCreate();
|
34
34
|
|
35
|
-
|
35
|
+
TaskHandle ResolveName(
|
36
36
|
absl::string_view name, absl::string_view default_port,
|
37
|
-
grpc_pollset_set* interested_parties
|
37
|
+
grpc_pollset_set* /* interested_parties */,
|
38
38
|
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
39
39
|
on_done) override;
|
40
40
|
|
41
41
|
absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
|
42
42
|
absl::string_view name, absl::string_view default_port) override;
|
43
|
+
|
44
|
+
// NativeDNSResolver does not support cancellation.
|
45
|
+
bool Cancel(TaskHandle handle) override;
|
43
46
|
};
|
44
47
|
|
45
48
|
} // namespace grpc_core
|
@@ -25,9 +25,8 @@
|
|
25
25
|
|
26
26
|
#include <grpc/support/port_platform.h>
|
27
27
|
|
28
|
-
#include "src/core/lib/event_engine/sockaddr.h"
|
29
28
|
#include "src/core/lib/iomgr/port.h"
|
30
|
-
#include "src/core/lib/iomgr/sockaddr_posix.h"
|
31
|
-
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
29
|
+
#include "src/core/lib/iomgr/sockaddr_posix.h" // IWYU pragma: export
|
30
|
+
#include "src/core/lib/iomgr/sockaddr_windows.h" // IWYU pragma: export
|
32
31
|
|
33
32
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_H */
|
@@ -441,9 +441,10 @@ int grpc_ipv6_loopback_available(void) {
|
|
441
441
|
static grpc_error_handle error_for_fd(int fd,
|
442
442
|
const grpc_resolved_address* addr) {
|
443
443
|
if (fd >= 0) return GRPC_ERROR_NONE;
|
444
|
-
|
444
|
+
auto addr_str = grpc_sockaddr_to_string(addr, false);
|
445
445
|
grpc_error_handle err = grpc_error_set_str(
|
446
|
-
GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS,
|
446
|
+
GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS,
|
447
|
+
addr_str.ok() ? addr_str.value() : addr_str.status().ToString());
|
447
448
|
return err;
|
448
449
|
}
|
449
450
|
|
@@ -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);
|
@@ -154,10 +154,18 @@ static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
|
|
154
154
|
const grpc_channel_args* channel_args,
|
155
155
|
const grpc_resolved_address* resolved_addr,
|
156
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;
|
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);
|
@@ -277,19 +277,26 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
277
277
|
addr->len);
|
278
278
|
} while (err < 0 && errno == EINTR);
|
279
279
|
|
280
|
-
|
280
|
+
auto addr_uri = grpc_sockaddr_to_uri(addr);
|
281
|
+
if (!addr_uri.ok()) {
|
282
|
+
grpc_error_handle error =
|
283
|
+
GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
|
284
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
285
|
+
return;
|
286
|
+
}
|
287
|
+
|
288
|
+
std::string name = absl::StrCat("tcp-client:", addr_uri.value());
|
281
289
|
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
|
282
290
|
|
283
291
|
if (err >= 0) {
|
284
|
-
*ep = grpc_tcp_client_create_from_fd(fdobj, channel_args,
|
285
|
-
grpc_sockaddr_to_uri(addr));
|
292
|
+
*ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_uri.value());
|
286
293
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
287
294
|
return;
|
288
295
|
}
|
289
296
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
290
297
|
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
|
291
298
|
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
292
|
-
|
299
|
+
addr_uri.value());
|
293
300
|
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
|
294
301
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
295
302
|
return;
|
@@ -302,7 +309,7 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
302
309
|
ac->ep = ep;
|
303
310
|
ac->fd = fdobj;
|
304
311
|
ac->interested_parties = interested_parties;
|
305
|
-
ac->addr_str =
|
312
|
+
ac->addr_str = addr_uri.value();
|
306
313
|
gpr_mu_init(&ac->mu);
|
307
314
|
ac->refs = 2;
|
308
315
|
GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
|
@@ -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
|
|
@@ -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);
|
@@ -213,11 +220,11 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
213
220
|
|
214
221
|
failure:
|
215
222
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
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);
|