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
@@ -1,172 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
|
-
|
16
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
-
#include "absl/strings/string_view.h"
|
18
|
-
|
19
|
-
#include <grpc/event_engine/event_engine.h>
|
20
|
-
#include <grpc/slice.h>
|
21
|
-
#include <grpc/slice_buffer.h>
|
22
|
-
#include <grpc/support/time.h>
|
23
|
-
|
24
|
-
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
25
|
-
#include "src/core/lib/channel/channel_args.h"
|
26
|
-
#include "src/core/lib/iomgr/endpoint.h"
|
27
|
-
#include "src/core/lib/iomgr/error.h"
|
28
|
-
#include "src/core/lib/iomgr/event_engine/closure.h"
|
29
|
-
#include "src/core/lib/iomgr/event_engine/endpoint.h"
|
30
|
-
#include "src/core/lib/iomgr/event_engine/pollset.h"
|
31
|
-
#include "src/core/lib/iomgr/pollset.h"
|
32
|
-
#include "src/core/lib/iomgr/pollset_set.h"
|
33
|
-
#include "src/core/lib/iomgr/resource_quota.h"
|
34
|
-
#include "src/core/lib/transport/error_utils.h"
|
35
|
-
|
36
|
-
extern grpc_core::TraceFlag grpc_tcp_trace;
|
37
|
-
|
38
|
-
namespace {
|
39
|
-
|
40
|
-
using ::grpc_event_engine::experimental::EventEngine;
|
41
|
-
using ::grpc_event_engine::experimental::ResolvedAddressToURI;
|
42
|
-
using ::grpc_event_engine::experimental::SliceBuffer;
|
43
|
-
|
44
|
-
void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
45
|
-
grpc_closure* cb, bool /* urgent */) {
|
46
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
47
|
-
if (eeep->endpoint == nullptr) {
|
48
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
|
49
|
-
return;
|
50
|
-
}
|
51
|
-
SliceBuffer* read_buffer = new (&eeep->read_buffer) SliceBuffer(slices);
|
52
|
-
eeep->endpoint->Read(
|
53
|
-
[eeep, cb](absl::Status status) {
|
54
|
-
auto* read_buffer = reinterpret_cast<SliceBuffer*>(&eeep->read_buffer);
|
55
|
-
read_buffer->~SliceBuffer();
|
56
|
-
grpc_core::ExecCtx exec_ctx;
|
57
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
58
|
-
absl_status_to_grpc_error(status));
|
59
|
-
exec_ctx.Flush();
|
60
|
-
grpc_pollset_ee_broadcast_event();
|
61
|
-
},
|
62
|
-
read_buffer);
|
63
|
-
}
|
64
|
-
|
65
|
-
void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
66
|
-
grpc_closure* cb, void* arg) {
|
67
|
-
// TODO(hork): adapt arg to some metrics collection mechanism.
|
68
|
-
(void)arg;
|
69
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
70
|
-
if (eeep->endpoint == nullptr) {
|
71
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
|
72
|
-
return;
|
73
|
-
}
|
74
|
-
SliceBuffer* write_buffer = new (&eeep->write_buffer) SliceBuffer(slices);
|
75
|
-
eeep->endpoint->Write(
|
76
|
-
[eeep, cb](absl::Status status) {
|
77
|
-
auto* write_buffer =
|
78
|
-
reinterpret_cast<SliceBuffer*>(&eeep->write_buffer);
|
79
|
-
write_buffer->~SliceBuffer();
|
80
|
-
grpc_core::ExecCtx exec_ctx;
|
81
|
-
grpc_core::Closure::Run(DEBUG_LOCATION, cb,
|
82
|
-
absl_status_to_grpc_error(status));
|
83
|
-
exec_ctx.Flush();
|
84
|
-
grpc_pollset_ee_broadcast_event();
|
85
|
-
},
|
86
|
-
write_buffer);
|
87
|
-
}
|
88
|
-
void endpoint_add_to_pollset(grpc_endpoint* /* ep */,
|
89
|
-
grpc_pollset* /* pollset */) {}
|
90
|
-
void endpoint_add_to_pollset_set(grpc_endpoint* /* ep */,
|
91
|
-
grpc_pollset_set* /* pollset */) {}
|
92
|
-
void endpoint_delete_from_pollset_set(grpc_endpoint* /* ep */,
|
93
|
-
grpc_pollset_set* /* pollset */) {}
|
94
|
-
/// After shutdown, all endpoint operations except destroy are no-op,
|
95
|
-
/// and will return some kind of sane default (empty strings, nullptrs, etc). It
|
96
|
-
/// is the caller's responsibility to ensure that calls to endpoint_shutdown are
|
97
|
-
/// synchronized.
|
98
|
-
void endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
99
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
100
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
101
|
-
std::string str = grpc_error_std_string(why);
|
102
|
-
gpr_log(GPR_INFO, "TCP Endpoint %p shutdown why=%s", eeep->endpoint.get(),
|
103
|
-
str.c_str());
|
104
|
-
}
|
105
|
-
eeep->endpoint.reset();
|
106
|
-
}
|
107
|
-
|
108
|
-
void endpoint_destroy(grpc_endpoint* ep) {
|
109
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
110
|
-
delete eeep;
|
111
|
-
}
|
112
|
-
|
113
|
-
absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
|
114
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
115
|
-
if (eeep->endpoint == nullptr) {
|
116
|
-
return "";
|
117
|
-
}
|
118
|
-
if (eeep->peer_address.empty()) {
|
119
|
-
const EventEngine::ResolvedAddress& addr = eeep->endpoint->GetPeerAddress();
|
120
|
-
eeep->peer_address = ResolvedAddressToURI(addr);
|
121
|
-
}
|
122
|
-
return eeep->peer_address;
|
123
|
-
}
|
124
|
-
|
125
|
-
absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
|
126
|
-
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
127
|
-
if (eeep->endpoint == nullptr) {
|
128
|
-
return "";
|
129
|
-
}
|
130
|
-
if (eeep->local_address.empty()) {
|
131
|
-
const EventEngine::ResolvedAddress& addr =
|
132
|
-
eeep->endpoint->GetLocalAddress();
|
133
|
-
eeep->local_address = ResolvedAddressToURI(addr);
|
134
|
-
}
|
135
|
-
return eeep->local_address;
|
136
|
-
}
|
137
|
-
|
138
|
-
int endpoint_get_fd(grpc_endpoint* /* ep */) { return -1; }
|
139
|
-
|
140
|
-
bool endpoint_can_track_err(grpc_endpoint* /* ep */) { return false; }
|
141
|
-
|
142
|
-
grpc_endpoint_vtable grpc_event_engine_endpoint_vtable = {
|
143
|
-
endpoint_read,
|
144
|
-
endpoint_write,
|
145
|
-
endpoint_add_to_pollset,
|
146
|
-
endpoint_add_to_pollset_set,
|
147
|
-
endpoint_delete_from_pollset_set,
|
148
|
-
endpoint_shutdown,
|
149
|
-
endpoint_destroy,
|
150
|
-
endpoint_get_peer,
|
151
|
-
endpoint_get_local_address,
|
152
|
-
endpoint_get_fd,
|
153
|
-
endpoint_can_track_err};
|
154
|
-
|
155
|
-
} // namespace
|
156
|
-
|
157
|
-
grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create(
|
158
|
-
std::unique_ptr<EventEngine::Endpoint> ee_endpoint) {
|
159
|
-
auto endpoint = new grpc_event_engine_endpoint;
|
160
|
-
endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
|
161
|
-
endpoint->endpoint = std::move(ee_endpoint);
|
162
|
-
return endpoint;
|
163
|
-
}
|
164
|
-
|
165
|
-
grpc_endpoint* grpc_tcp_create(const grpc_channel_args* /* channel_args */,
|
166
|
-
absl::string_view /* peer_address */) {
|
167
|
-
auto endpoint = new grpc_event_engine_endpoint;
|
168
|
-
endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
|
169
|
-
return &endpoint->base;
|
170
|
-
}
|
171
|
-
|
172
|
-
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -1,52 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
15
|
-
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
16
|
-
|
17
|
-
#include <grpc/support/port_platform.h>
|
18
|
-
|
19
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
20
|
-
#include <grpc/event_engine/event_engine.h>
|
21
|
-
|
22
|
-
#include "src/core/lib/iomgr/endpoint.h"
|
23
|
-
#include "src/core/lib/iomgr/resource_quota.h"
|
24
|
-
|
25
|
-
struct grpc_event_engine_endpoint {
|
26
|
-
grpc_endpoint base;
|
27
|
-
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
|
28
|
-
endpoint;
|
29
|
-
std::string peer_address;
|
30
|
-
std::string local_address;
|
31
|
-
std::aligned_storage<
|
32
|
-
sizeof(grpc_event_engine::experimental::SliceBuffer),
|
33
|
-
alignof(grpc_event_engine::experimental::SliceBuffer)>::type read_buffer;
|
34
|
-
std::aligned_storage<
|
35
|
-
sizeof(grpc_event_engine::experimental::SliceBuffer),
|
36
|
-
alignof(grpc_event_engine::experimental::SliceBuffer)>::type write_buffer;
|
37
|
-
};
|
38
|
-
|
39
|
-
/// Creates an internal grpc_endpoint struct from an EventEngine Endpoint.
|
40
|
-
/// Server code needs to create grpc_endpoints after the EventEngine has made
|
41
|
-
/// connections.
|
42
|
-
grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create(
|
43
|
-
std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint> ee);
|
44
|
-
|
45
|
-
/// Creates a new internal grpc_endpoint struct, when no EventEngine Endpoint
|
46
|
-
/// has yet been created. This is used in client code before connections are
|
47
|
-
/// established. Takes ownership of the slice_allocator.
|
48
|
-
grpc_endpoint* grpc_tcp_create(const grpc_channel_args* channel_args,
|
49
|
-
absl::string_view peer_address);
|
50
|
-
|
51
|
-
#endif
|
52
|
-
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_ENDPOINT_H
|
@@ -1,85 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
|
-
|
16
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
-
#include <grpc/event_engine/event_engine.h>
|
18
|
-
|
19
|
-
#include "src/core/lib/debug/trace.h"
|
20
|
-
#include "src/core/lib/iomgr/closure.h"
|
21
|
-
#include "src/core/lib/iomgr/event_engine/resolver.h"
|
22
|
-
#include "src/core/lib/iomgr/iomgr_internal.h"
|
23
|
-
#include "src/core/lib/iomgr/tcp_client.h"
|
24
|
-
#include "src/core/lib/iomgr/tcp_server.h"
|
25
|
-
#include "src/core/lib/iomgr/timer.h"
|
26
|
-
#include "src/core/lib/surface/init.h"
|
27
|
-
|
28
|
-
extern grpc_tcp_client_vtable grpc_event_engine_tcp_client_vtable;
|
29
|
-
extern grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable;
|
30
|
-
extern grpc_timer_vtable grpc_event_engine_timer_vtable;
|
31
|
-
extern grpc_pollset_vtable grpc_event_engine_pollset_vtable;
|
32
|
-
extern grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable;
|
33
|
-
|
34
|
-
// Disabled by default. grpc_polling_trace must be defined in all iomgr
|
35
|
-
// implementations due to its usage in lockfree_event.
|
36
|
-
grpc_core::DebugOnlyTraceFlag grpc_polling_trace(false, "polling");
|
37
|
-
|
38
|
-
namespace {
|
39
|
-
|
40
|
-
using ::grpc_event_engine::experimental::EventEngine;
|
41
|
-
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
42
|
-
|
43
|
-
// TODO(nnoble): Instantiate the default EventEngine if none have been provided.
|
44
|
-
void iomgr_platform_init(void) {}
|
45
|
-
|
46
|
-
void iomgr_platform_flush(void) {}
|
47
|
-
|
48
|
-
void iomgr_platform_shutdown(void) {}
|
49
|
-
|
50
|
-
void iomgr_platform_shutdown_background_closure(void) {}
|
51
|
-
|
52
|
-
bool iomgr_platform_is_any_background_poller_thread(void) {
|
53
|
-
return grpc_event_engine::experimental::GetDefaultEventEngine()
|
54
|
-
->IsWorkerThread();
|
55
|
-
}
|
56
|
-
|
57
|
-
bool iomgr_platform_add_closure_to_background_poller(
|
58
|
-
grpc_closure* /* closure */, grpc_error_handle /* error */) {
|
59
|
-
return false;
|
60
|
-
}
|
61
|
-
|
62
|
-
grpc_iomgr_platform_vtable vtable = {
|
63
|
-
iomgr_platform_init,
|
64
|
-
iomgr_platform_flush,
|
65
|
-
iomgr_platform_shutdown,
|
66
|
-
iomgr_platform_shutdown_background_closure,
|
67
|
-
iomgr_platform_is_any_background_poller_thread,
|
68
|
-
iomgr_platform_add_closure_to_background_poller};
|
69
|
-
|
70
|
-
} // namespace
|
71
|
-
|
72
|
-
void grpc_set_default_iomgr_platform() {
|
73
|
-
grpc_set_tcp_client_impl(&grpc_event_engine_tcp_client_vtable);
|
74
|
-
grpc_set_tcp_server_impl(&grpc_event_engine_tcp_server_vtable);
|
75
|
-
grpc_set_timer_impl(&grpc_event_engine_timer_vtable);
|
76
|
-
grpc_set_pollset_vtable(&grpc_event_engine_pollset_vtable);
|
77
|
-
grpc_set_pollset_set_vtable(&grpc_event_engine_pollset_set_vtable);
|
78
|
-
grpc_core::SetDNSResolver(
|
79
|
-
grpc_core::experimental::EventEngineDNSResolver::GetOrCreate());
|
80
|
-
grpc_set_iomgr_platform_vtable(&vtable);
|
81
|
-
}
|
82
|
-
|
83
|
-
bool grpc_iomgr_run_in_background() { return false; }
|
84
|
-
|
85
|
-
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -1,87 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
|
-
|
16
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
-
#include <grpc/event_engine/event_engine.h>
|
18
|
-
|
19
|
-
#include "src/core/lib/iomgr/event_engine/pollset.h"
|
20
|
-
#include "src/core/lib/iomgr/iomgr_internal.h"
|
21
|
-
#include "src/core/lib/iomgr/pollset.h"
|
22
|
-
#include "src/core/lib/iomgr/pollset_set.h"
|
23
|
-
|
24
|
-
namespace {
|
25
|
-
|
26
|
-
static gpr_mu g_mu;
|
27
|
-
static gpr_cv g_cv;
|
28
|
-
|
29
|
-
// --- pollset vtable API ---
|
30
|
-
void pollset_global_init(void) {
|
31
|
-
gpr_mu_init(&g_mu);
|
32
|
-
gpr_cv_init(&g_cv);
|
33
|
-
}
|
34
|
-
void pollset_global_shutdown(void) {
|
35
|
-
gpr_cv_destroy(&g_cv);
|
36
|
-
gpr_mu_destroy(&g_mu);
|
37
|
-
}
|
38
|
-
void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { *mu = &g_mu; }
|
39
|
-
void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
40
|
-
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
41
|
-
}
|
42
|
-
void pollset_destroy(grpc_pollset* pollset) {}
|
43
|
-
grpc_error_handle pollset_work(grpc_pollset* pollset,
|
44
|
-
grpc_pollset_worker** worker,
|
45
|
-
grpc_core::Timestamp deadline) {
|
46
|
-
(void)worker;
|
47
|
-
gpr_cv_wait(&g_cv, &g_mu, deadline.as_timespec(GPR_CLOCK_REALTIME));
|
48
|
-
return GRPC_ERROR_NONE;
|
49
|
-
}
|
50
|
-
grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
51
|
-
grpc_pollset_worker* specific_worker) {
|
52
|
-
(void)pollset;
|
53
|
-
(void)specific_worker;
|
54
|
-
return GRPC_ERROR_NONE;
|
55
|
-
}
|
56
|
-
size_t pollset_size(void) { return 1; }
|
57
|
-
|
58
|
-
// --- pollset_set vtable API ---
|
59
|
-
grpc_pollset_set* pollset_set_create(void) { return nullptr; }
|
60
|
-
void pollset_set_destroy(grpc_pollset_set* pollset_set) {}
|
61
|
-
void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
|
62
|
-
grpc_pollset* pollset) {}
|
63
|
-
|
64
|
-
void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
|
65
|
-
grpc_pollset* pollset) {}
|
66
|
-
void pollset_set_add_pollset_set(grpc_pollset_set* bag,
|
67
|
-
grpc_pollset_set* item) {}
|
68
|
-
void pollset_set_del_pollset_set(grpc_pollset_set* bag,
|
69
|
-
grpc_pollset_set* item) {}
|
70
|
-
|
71
|
-
} // namespace
|
72
|
-
|
73
|
-
void grpc_pollset_ee_broadcast_event() { gpr_cv_signal(&g_cv); }
|
74
|
-
|
75
|
-
// --- vtables ---
|
76
|
-
grpc_pollset_vtable grpc_event_engine_pollset_vtable = {
|
77
|
-
pollset_global_init, pollset_global_shutdown,
|
78
|
-
pollset_init, pollset_shutdown,
|
79
|
-
pollset_destroy, pollset_work,
|
80
|
-
pollset_kick, pollset_size};
|
81
|
-
|
82
|
-
grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable = {
|
83
|
-
pollset_set_create, pollset_set_destroy,
|
84
|
-
pollset_set_add_pollset, pollset_set_del_pollset,
|
85
|
-
pollset_set_add_pollset_set, pollset_set_del_pollset_set};
|
86
|
-
|
87
|
-
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -1,51 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_PROMISE_H
|
15
|
-
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_PROMISE_H
|
16
|
-
#include <grpc/support/port_platform.h>
|
17
|
-
|
18
|
-
#include "src/core/lib/gprpp/sync.h"
|
19
|
-
|
20
|
-
namespace grpc_event_engine {
|
21
|
-
namespace experimental {
|
22
|
-
|
23
|
-
/// A minimal promise implementation.
|
24
|
-
///
|
25
|
-
/// This is light-duty, syntactical sugar around cv wait & signal, which is
|
26
|
-
/// useful in some cases. A more robust implementation is being worked on
|
27
|
-
/// separately.
|
28
|
-
template <typename T>
|
29
|
-
class Promise {
|
30
|
-
public:
|
31
|
-
T& Get() {
|
32
|
-
absl::MutexLock lock(&mu_);
|
33
|
-
cv_.Wait(&mu_);
|
34
|
-
return val_;
|
35
|
-
}
|
36
|
-
void Set(T&& val) {
|
37
|
-
absl::MutexLock lock(&mu_);
|
38
|
-
val_ = std::move(val);
|
39
|
-
cv_.Signal();
|
40
|
-
}
|
41
|
-
|
42
|
-
private:
|
43
|
-
absl::Mutex mu_;
|
44
|
-
absl::CondVar cv_;
|
45
|
-
T val_;
|
46
|
-
};
|
47
|
-
|
48
|
-
} // namespace experimental
|
49
|
-
} // namespace grpc_event_engine
|
50
|
-
|
51
|
-
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_PROMISE_H
|
@@ -1,47 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
|
-
|
16
|
-
#include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
|
17
|
-
|
18
|
-
#include <grpc/event_engine/event_engine.h>
|
19
|
-
|
20
|
-
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
21
|
-
#include "src/core/lib/iomgr/resolve_address.h"
|
22
|
-
|
23
|
-
namespace grpc_event_engine {
|
24
|
-
namespace experimental {
|
25
|
-
|
26
|
-
EventEngine::ResolvedAddress CreateResolvedAddress(
|
27
|
-
const grpc_resolved_address& addr) {
|
28
|
-
return EventEngine::ResolvedAddress(
|
29
|
-
reinterpret_cast<const sockaddr*>(addr.addr), addr.len);
|
30
|
-
}
|
31
|
-
|
32
|
-
grpc_resolved_address CreateGRPCResolvedAddress(
|
33
|
-
const EventEngine::ResolvedAddress& ra) {
|
34
|
-
grpc_resolved_address grpc_addr;
|
35
|
-
memcpy(grpc_addr.addr, ra.address(), ra.size());
|
36
|
-
grpc_addr.len = ra.size();
|
37
|
-
return grpc_addr;
|
38
|
-
}
|
39
|
-
|
40
|
-
// TODO(ctiller): Move this to somewhere more permanent as we're deleting iomgr.
|
41
|
-
std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr) {
|
42
|
-
auto gra = CreateGRPCResolvedAddress(addr);
|
43
|
-
return grpc_sockaddr_to_uri(&gra);
|
44
|
-
}
|
45
|
-
|
46
|
-
} // namespace experimental
|
47
|
-
} // namespace grpc_event_engine
|
@@ -1,37 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
|
15
|
-
#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
|
16
|
-
|
17
|
-
#include <grpc/support/port_platform.h>
|
18
|
-
|
19
|
-
#include <grpc/event_engine/event_engine.h>
|
20
|
-
|
21
|
-
#include "src/core/lib/iomgr/resolve_address.h"
|
22
|
-
|
23
|
-
namespace grpc_event_engine {
|
24
|
-
namespace experimental {
|
25
|
-
|
26
|
-
EventEngine::ResolvedAddress CreateResolvedAddress(
|
27
|
-
const grpc_resolved_address& addr);
|
28
|
-
|
29
|
-
grpc_resolved_address CreateGRPCResolvedAddress(
|
30
|
-
const EventEngine::ResolvedAddress& ra);
|
31
|
-
|
32
|
-
std::string ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr);
|
33
|
-
|
34
|
-
} // namespace experimental
|
35
|
-
} // namespace grpc_event_engine
|
36
|
-
|
37
|
-
#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
|
@@ -1,133 +0,0 @@
|
|
1
|
-
// Copyright 2021 The gRPC Authors
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
#include <grpc/support/port_platform.h>
|
15
|
-
|
16
|
-
#ifdef GRPC_USE_EVENT_ENGINE
|
17
|
-
#include "absl/functional/bind_front.h"
|
18
|
-
|
19
|
-
#include <grpc/event_engine/event_engine.h>
|
20
|
-
|
21
|
-
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
22
|
-
#include "src/core/lib/event_engine/event_engine_factory.h"
|
23
|
-
#include "src/core/lib/gprpp/sync.h"
|
24
|
-
#include "src/core/lib/iomgr/error.h"
|
25
|
-
#include "src/core/lib/iomgr/event_engine/promise.h"
|
26
|
-
#include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
|
27
|
-
#include "src/core/lib/iomgr/event_engine/resolver.h"
|
28
|
-
#include "src/core/lib/iomgr/resolve_address.h"
|
29
|
-
#include "src/core/lib/iomgr/resolve_address_impl.h"
|
30
|
-
#include "src/core/lib/iomgr/work_serializer.h"
|
31
|
-
#include "src/core/lib/surface/init.h"
|
32
|
-
#include "src/core/lib/transport/error_utils.h"
|
33
|
-
|
34
|
-
namespace grpc_core {
|
35
|
-
namespace experimental {
|
36
|
-
namespace {
|
37
|
-
using ::grpc_event_engine::experimental::CreateGRPCResolvedAddress;
|
38
|
-
using ::grpc_event_engine::experimental::EventEngine;
|
39
|
-
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
40
|
-
using ::grpc_event_engine::experimental::Promise;
|
41
|
-
|
42
|
-
/// A fire-and-forget class representing an individual DNS request.
|
43
|
-
///
|
44
|
-
/// This provides a place to store the ownership of the DNSResolver object until
|
45
|
-
/// the request is complete.
|
46
|
-
class EventEngineDNSRequest : DNSRequest {
|
47
|
-
public:
|
48
|
-
EventEngineDNSRequest(std::unique_ptr<EventEngine::DNSResolver> dns_resolver,
|
49
|
-
absl::string_view name, absl::string_view default_port,
|
50
|
-
grpc_closure* on_done,
|
51
|
-
std::vector<grpc_resolved_address>* addresses)
|
52
|
-
: dns_resolver_(std::move(dns_resolver)),
|
53
|
-
name_(std::string(name)),
|
54
|
-
default_port_(std::string(default_port)),
|
55
|
-
on_done_(std::move(on_done)) {}
|
56
|
-
|
57
|
-
void Start() override {
|
58
|
-
if (dns_resolver_ == nullptr) {
|
59
|
-
new DNSCallbackExecCtxScheduler(
|
60
|
-
std::move(on_done_),
|
61
|
-
absl::UnknownError("Failed to get DNS Resolver."));
|
62
|
-
return;
|
63
|
-
}
|
64
|
-
Ref().release(); // ref held by pending resolution
|
65
|
-
dns_resolver_->LookupHostname(
|
66
|
-
absl::bind_front(&EventEngineDNSRequest::OnLookupComplete, this), name_,
|
67
|
-
default_port_, absl::InfiniteFuture());
|
68
|
-
}
|
69
|
-
|
70
|
-
// TODO(hork): implement cancellation; currently it's a no-op
|
71
|
-
void Orphan() override { Unref(); }
|
72
|
-
|
73
|
-
private:
|
74
|
-
void OnLookupComplete(
|
75
|
-
absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> addresses) {
|
76
|
-
ExecCtx exec_ctx;
|
77
|
-
// Convert addresses to iomgr form.
|
78
|
-
std::vector<grpc_resolved_address> result;
|
79
|
-
results.reserve(addresses->size());
|
80
|
-
for (size_t i = 0; i < addresses->size(); ++i) {
|
81
|
-
results.push_back(CreateGRPCResolvedAddress(addresses[i]));
|
82
|
-
}
|
83
|
-
if (addresses.ok()) {
|
84
|
-
on_done_(std::move(result));
|
85
|
-
} else {
|
86
|
-
on_done_(addresses.status());
|
87
|
-
}
|
88
|
-
Unref();
|
89
|
-
}
|
90
|
-
|
91
|
-
std::unique_ptr<EventEngine::DNSResolver> dns_resolver_;
|
92
|
-
const std::string name_;
|
93
|
-
const std::string default_port_;
|
94
|
-
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
95
|
-
on_done_;
|
96
|
-
};
|
97
|
-
|
98
|
-
} // namespace
|
99
|
-
|
100
|
-
DNSResolver* EventEngineDNSResolver::GetOrCreate() {
|
101
|
-
static EventEngineDNSResolver* instance = new EventEngineDNSResolver();
|
102
|
-
return instance;
|
103
|
-
}
|
104
|
-
|
105
|
-
OrphanablePtr<DNSResolver::Request> EventEngineDNSResolver::ResolveName(
|
106
|
-
absl::string_view name, absl::string_view default_port,
|
107
|
-
grpc_pollset_set* /* interested_parties */,
|
108
|
-
std::function<void(absl::StatusOr<std::vector<grpc_resolved_address>>)>
|
109
|
-
on_done) {
|
110
|
-
std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
|
111
|
-
GetDefaultEventEngine()->GetDNSResolver();
|
112
|
-
return MakeOrphanable<EventEngineDNSRequest>(
|
113
|
-
std::move(dns_resolver), name, default_port, std::move(on_done));
|
114
|
-
}
|
115
|
-
|
116
|
-
absl::StatusOr<std::vector<grpc_resolved_address>>
|
117
|
-
EventEngineDNSResolver::ResolveNameBlocking(absl::string_view name,
|
118
|
-
absl::string_view default_port) {
|
119
|
-
grpc_closure on_done;
|
120
|
-
Promise<absl::StatusOr<std::vector<grpc_resolved_address>>> evt;
|
121
|
-
auto r = ResolveName(
|
122
|
-
name, default_port,
|
123
|
-
[&evt](void(absl::StatusOr<std::vector<grpc_resolved_address>> result) {
|
124
|
-
evt.Set(std::move(result));
|
125
|
-
}));
|
126
|
-
r->Start();
|
127
|
-
return evt.Get();
|
128
|
-
}
|
129
|
-
|
130
|
-
} // namespace experimental
|
131
|
-
} // namespace grpc_core
|
132
|
-
|
133
|
-
#endif // GRPC_USE_EVENT_ENGINE
|