grpc 1.49.0.pre1-x86_64-linux → 1.50.0.pre1-x86_64-linux
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +54 -153
- data/include/grpc/event_engine/endpoint_config.h +11 -5
- data/include/grpc/event_engine/event_engine.h +1 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
- data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
- data/include/grpc/impl/codegen/atm_windows.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
- data/src/core/ext/filters/client_channel/client_channel.cc +41 -22
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -16
- data/src/core/ext/filters/client_channel/http_proxy.cc +12 -19
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +114 -103
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +20 -11
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +106 -108
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +16 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +20 -13
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +165 -257
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +218 -231
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +389 -444
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +16 -16
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -96
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +38 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +106 -186
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +106 -93
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +170 -218
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +38 -18
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +84 -37
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +11 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +5 -3
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -4
- data/src/core/ext/filters/client_channel/retry_filter.cc +25 -29
- data/src/core/ext/filters/client_channel/subchannel.cc +38 -33
- data/src/core/ext/filters/client_channel/subchannel.h +12 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +1 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +23 -16
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +1 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +12 -8
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +32 -26
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +25 -130
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +83 -51
- data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -20
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +28 -28
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -3
- data/src/core/ext/xds/certificate_provider_store.cc +63 -3
- data/src/core/ext/xds/certificate_provider_store.h +9 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/xds_api.cc +21 -17
- data/src/core/ext/xds/xds_api.h +7 -0
- data/src/core/ext/xds/xds_bootstrap.cc +5 -537
- data/src/core/ext/xds/xds_bootstrap.h +39 -111
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
- data/src/core/ext/xds/xds_client.cc +219 -145
- data/src/core/ext/xds/xds_client.h +19 -17
- data/src/core/ext/xds/xds_client_grpc.cc +18 -80
- data/src/core/ext/xds/xds_client_grpc.h +2 -25
- data/src/core/ext/xds/xds_client_stats.cc +4 -4
- data/src/core/ext/xds/xds_cluster.cc +87 -79
- data/src/core/ext/xds/xds_cluster.h +5 -5
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +3 -1
- data/src/core/ext/xds/xds_common_types.cc +13 -5
- data/src/core/ext/xds/xds_endpoint.cc +8 -6
- data/src/core/ext/xds/xds_endpoint.h +3 -4
- data/src/core/ext/xds/xds_lb_policy_registry.cc +4 -2
- data/src/core/ext/xds/xds_listener.cc +25 -20
- data/src/core/ext/xds/xds_listener.h +3 -4
- data/src/core/ext/xds/xds_resource_type.h +11 -8
- data/src/core/ext/xds/xds_route_config.cc +15 -16
- data/src/core/ext/xds/xds_route_config.h +3 -3
- data/src/core/ext/xds/xds_server_config_fetcher.cc +7 -5
- data/src/core/ext/xds/xds_transport_grpc.cc +15 -7
- data/src/core/lib/backoff/backoff.cc +2 -4
- data/src/core/lib/channel/call_finalization.h +1 -3
- data/src/core/lib/channel/channel_args.h +114 -14
- data/src/core/lib/channel/channel_trace.cc +3 -4
- data/src/core/lib/channel/promise_based_filter.cc +18 -19
- data/src/core/lib/channel/status_util.cc +27 -0
- data/src/core/lib/channel/status_util.h +10 -0
- data/src/core/lib/config/core_configuration.cc +5 -1
- data/src/core/lib/config/core_configuration.h +33 -0
- data/src/core/lib/debug/stats.cc +26 -30
- data/src/core/lib/debug/stats.h +2 -12
- data/src/core/lib/debug/stats_data.cc +118 -614
- data/src/core/lib/debug/stats_data.h +67 -465
- data/src/core/lib/debug/trace.cc +0 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
- data/src/core/lib/event_engine/forkable.cc +19 -16
- data/src/core/lib/event_engine/poller.h +14 -12
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +53 -32
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +23 -1
- data/src/core/lib/event_engine/thread_pool.cc +131 -94
- data/src/core/lib/event_engine/thread_pool.h +56 -23
- data/src/core/lib/event_engine/time_util.cc +30 -0
- data/src/core/lib/event_engine/time_util.h +32 -0
- data/src/core/lib/event_engine/utils.cc +0 -5
- data/src/core/lib/event_engine/utils.h +0 -4
- data/src/core/lib/event_engine/windows/iocp.cc +13 -7
- data/src/core/lib/event_engine/windows/iocp.h +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
- data/src/core/lib/experiments/config.cc +146 -0
- data/src/core/lib/experiments/config.h +43 -0
- data/src/core/lib/experiments/experiments.cc +75 -0
- data/src/core/lib/experiments/experiments.h +56 -0
- data/src/core/lib/gpr/alloc.cc +1 -9
- data/src/core/lib/gpr/log_windows.cc +0 -1
- data/src/core/lib/gpr/string_util_windows.cc +3 -30
- data/src/core/lib/gpr/sync_abseil.cc +0 -14
- data/src/core/lib/gpr/sync_posix.cc +0 -14
- data/src/core/lib/gpr/time_posix.cc +0 -6
- data/src/core/lib/gpr/time_precise.h +1 -1
- data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
- data/src/core/lib/gpr/useful.h +11 -0
- data/src/core/lib/{gpr → gprpp}/env.h +25 -12
- data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
- data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
- data/src/core/lib/gprpp/env_windows.cc +56 -0
- data/src/core/lib/gprpp/fork.cc +14 -22
- data/src/core/lib/gprpp/fork.h +0 -8
- data/src/core/lib/gprpp/global_config_env.cc +7 -6
- data/src/core/lib/gprpp/notification.h +67 -0
- data/src/core/lib/gprpp/packed_table.h +40 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +20 -33
- data/src/core/lib/gprpp/sorted_pack.h +98 -0
- data/src/core/lib/gprpp/status_helper.h +6 -0
- data/src/core/lib/gprpp/table.h +9 -1
- data/src/core/lib/gprpp/tchar.cc +49 -0
- data/src/core/lib/gprpp/tchar.h +33 -0
- data/src/core/lib/gprpp/time.cc +21 -0
- data/src/core/lib/gprpp/time.h +55 -0
- data/src/core/lib/gprpp/validation_errors.cc +61 -0
- data/src/core/lib/gprpp/validation_errors.h +110 -0
- data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +3 -3
- data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper_registry.cc +14 -36
- data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
- data/src/core/lib/iomgr/call_combiner.cc +0 -8
- data/src/core/lib/iomgr/closure.h +0 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -10
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
- data/src/core/lib/iomgr/ev_poll_posix.cc +2 -17
- data/src/core/lib/iomgr/exec_ctx.cc +0 -10
- data/src/core/lib/iomgr/exec_ctx.h +7 -31
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +6 -8
- data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
- data/src/core/lib/iomgr/pollset.h +1 -1
- data/src/core/lib/iomgr/pollset_set.h +0 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -0
- data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +5 -0
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
- data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
- data/src/core/lib/iomgr/tcp_client.cc +6 -7
- data/src/core/lib/iomgr/tcp_client.h +11 -11
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
- data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +131 -114
- data/src/core/lib/iomgr/tcp_posix.h +3 -1
- data/src/core/lib/iomgr/tcp_server.cc +5 -4
- data/src/core/lib/iomgr/tcp_server.h +9 -6
- data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
- data/src/core/lib/iomgr/tcp_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.h +0 -1
- data/src/core/lib/iomgr/timer_generic.cc +4 -4
- data/src/core/lib/iomgr/timer_manager.cc +1 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
- data/src/core/lib/json/json_object_loader.cc +21 -52
- data/src/core/lib/json/json_object_loader.h +56 -76
- data/src/core/lib/json/json_util.cc +2 -1
- data/src/core/lib/load_balancing/lb_policy.h +5 -5
- data/src/core/lib/load_balancing/lb_policy_registry.cc +29 -55
- data/src/core/lib/load_balancing/lb_policy_registry.h +23 -11
- data/src/core/lib/promise/activity.h +2 -3
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/sleep.cc +16 -4
- data/src/core/lib/promise/sleep.h +8 -2
- data/src/core/lib/resolver/resolver.h +13 -3
- data/src/core/lib/resource_quota/api.cc +9 -0
- data/src/core/lib/resource_quota/api.h +6 -0
- data/src/core/lib/resource_quota/arena.cc +1 -3
- data/src/core/lib/resource_quota/memory_quota.cc +8 -24
- data/src/core/lib/resource_quota/memory_quota.h +6 -19
- data/src/core/lib/resource_quota/periodic_update.cc +2 -3
- data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +15 -16
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +6 -6
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -2
- data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
- data/src/core/lib/security/transport/client_auth_filter.cc +12 -1
- data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
- data/src/core/lib/surface/call.cc +1 -11
- data/src/core/lib/surface/channel.cc +3 -2
- data/src/core/lib/surface/completion_queue.cc +16 -28
- data/src/core/lib/surface/completion_queue.h +1 -1
- data/src/core/lib/surface/completion_queue_factory.cc +5 -0
- data/src/core/lib/surface/init.cc +16 -11
- data/src/core/lib/surface/init_internally.cc +24 -0
- data/src/core/lib/surface/init_internally.h +28 -0
- data/src/core/lib/surface/server.cc +1 -7
- data/src/core/lib/surface/server.h +4 -6
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -3
- data/src/core/lib/transport/metadata_batch.cc +2 -3
- data/src/core/lib/transport/metadata_batch.h +9 -7
- data/src/core/lib/transport/parsed_metadata.h +4 -2
- data/src/core/lib/transport/status_conversion.cc +1 -3
- data/src/core/lib/transport/tcp_connect_handshaker.cc +9 -5
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_impl.h +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- 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/src/ruby/spec/channel_spec.rb +5 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
- data/src/ruby/spec/user_agent_spec.rb +1 -1
- metadata +32 -19
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -56
- data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
- data/src/core/ext/xds/certificate_provider_registry.h +0 -59
- data/src/core/lib/event_engine/promise.h +0 -78
- data/src/core/lib/gpr/env_windows.cc +0 -74
- data/src/core/lib/gpr/string_windows.h +0 -32
- data/src/core/lib/profiling/basic_timers.cc +0 -295
- data/src/core/lib/profiling/stap_timers.cc +0 -50
- data/src/core/lib/profiling/timers.h +0 -94
- data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
@@ -21,15 +21,14 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
-
#include <
|
25
|
-
#include <unistd.h>
|
26
|
-
|
24
|
+
#include <grpc/event_engine/endpoint_config.h>
|
27
25
|
#include <grpc/impl/codegen/grpc_types.h>
|
28
26
|
|
29
27
|
#include "src/core/lib/iomgr/error.h"
|
30
28
|
#include "src/core/lib/iomgr/resolve_address.h"
|
31
29
|
#include "src/core/lib/iomgr/socket_factory_posix.h"
|
32
30
|
#include "src/core/lib/iomgr/socket_mutator.h"
|
31
|
+
#include "src/core/lib/resource_quota/resource_quota.h"
|
33
32
|
|
34
33
|
#ifdef GRPC_LINUX_ERRQUEUE
|
35
34
|
#ifndef SO_ZEROCOPY
|
@@ -40,6 +39,98 @@
|
|
40
39
|
#endif
|
41
40
|
#endif /* ifdef GRPC_LINUX_ERRQUEUE */
|
42
41
|
|
42
|
+
namespace grpc_core {
|
43
|
+
|
44
|
+
struct PosixTcpOptions {
|
45
|
+
static constexpr int kDefaultReadChunkSize = 8192;
|
46
|
+
static constexpr int kDefaultMinReadChunksize = 256;
|
47
|
+
static constexpr int kDefaultMaxReadChunksize = 4 * 1024 * 1024;
|
48
|
+
static constexpr int kZerocpTxEnabledDefault = 0;
|
49
|
+
static constexpr int kMaxChunkSize = 32 * 1024 * 1024;
|
50
|
+
static constexpr int kDefaultMaxSends = 4;
|
51
|
+
static constexpr size_t kDefaultSendBytesThreshold = 16 * 1024;
|
52
|
+
int tcp_read_chunk_size = kDefaultReadChunkSize;
|
53
|
+
int tcp_min_read_chunk_size = kDefaultMinReadChunksize;
|
54
|
+
int tcp_max_read_chunk_size = kDefaultMaxReadChunksize;
|
55
|
+
int tcp_tx_zerocopy_send_bytes_threshold = kDefaultSendBytesThreshold;
|
56
|
+
int tcp_tx_zerocopy_max_simultaneous_sends = kDefaultMaxSends;
|
57
|
+
bool tcp_tx_zero_copy_enabled = kZerocpTxEnabledDefault;
|
58
|
+
int keep_alive_time_ms = 0;
|
59
|
+
int keep_alive_timeout_ms = 0;
|
60
|
+
bool expand_wildcard_addrs = false;
|
61
|
+
bool allow_reuse_port = false;
|
62
|
+
RefCountedPtr<ResourceQuota> resource_quota;
|
63
|
+
struct grpc_socket_mutator* socket_mutator = nullptr;
|
64
|
+
PosixTcpOptions() = default;
|
65
|
+
// Move ctor
|
66
|
+
PosixTcpOptions(PosixTcpOptions&& other) noexcept {
|
67
|
+
socket_mutator = absl::exchange(other.socket_mutator, nullptr);
|
68
|
+
resource_quota = std::move(other.resource_quota);
|
69
|
+
CopyIntegerOptions(other);
|
70
|
+
}
|
71
|
+
// Move assignment
|
72
|
+
PosixTcpOptions& operator=(PosixTcpOptions&& other) noexcept {
|
73
|
+
if (socket_mutator != nullptr) {
|
74
|
+
grpc_socket_mutator_unref(socket_mutator);
|
75
|
+
}
|
76
|
+
socket_mutator = absl::exchange(other.socket_mutator, nullptr);
|
77
|
+
resource_quota = std::move(other.resource_quota);
|
78
|
+
CopyIntegerOptions(other);
|
79
|
+
return *this;
|
80
|
+
}
|
81
|
+
// Copy ctor
|
82
|
+
PosixTcpOptions(const PosixTcpOptions& other) {
|
83
|
+
if (other.socket_mutator != nullptr) {
|
84
|
+
socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
|
85
|
+
}
|
86
|
+
resource_quota = other.resource_quota;
|
87
|
+
CopyIntegerOptions(other);
|
88
|
+
}
|
89
|
+
// Copy assignment
|
90
|
+
PosixTcpOptions& operator=(const PosixTcpOptions& other) {
|
91
|
+
if (&other == this) {
|
92
|
+
return *this;
|
93
|
+
}
|
94
|
+
if (socket_mutator != nullptr) {
|
95
|
+
grpc_socket_mutator_unref(socket_mutator);
|
96
|
+
socket_mutator = nullptr;
|
97
|
+
}
|
98
|
+
if (other.socket_mutator != nullptr) {
|
99
|
+
socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
|
100
|
+
}
|
101
|
+
resource_quota = other.resource_quota;
|
102
|
+
CopyIntegerOptions(other);
|
103
|
+
return *this;
|
104
|
+
}
|
105
|
+
// Destructor.
|
106
|
+
~PosixTcpOptions() {
|
107
|
+
if (socket_mutator != nullptr) {
|
108
|
+
grpc_socket_mutator_unref(socket_mutator);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
private:
|
113
|
+
void CopyIntegerOptions(const PosixTcpOptions& other) {
|
114
|
+
tcp_read_chunk_size = other.tcp_read_chunk_size;
|
115
|
+
tcp_min_read_chunk_size = other.tcp_min_read_chunk_size;
|
116
|
+
tcp_max_read_chunk_size = other.tcp_max_read_chunk_size;
|
117
|
+
tcp_tx_zerocopy_send_bytes_threshold =
|
118
|
+
other.tcp_tx_zerocopy_send_bytes_threshold;
|
119
|
+
tcp_tx_zerocopy_max_simultaneous_sends =
|
120
|
+
other.tcp_tx_zerocopy_max_simultaneous_sends;
|
121
|
+
tcp_tx_zero_copy_enabled = other.tcp_tx_zero_copy_enabled;
|
122
|
+
keep_alive_time_ms = other.keep_alive_time_ms;
|
123
|
+
keep_alive_timeout_ms = other.keep_alive_timeout_ms;
|
124
|
+
expand_wildcard_addrs = other.expand_wildcard_addrs;
|
125
|
+
allow_reuse_port = other.allow_reuse_port;
|
126
|
+
}
|
127
|
+
};
|
128
|
+
|
129
|
+
} // namespace grpc_core
|
130
|
+
|
131
|
+
grpc_core::PosixTcpOptions TcpOptionsFromEndpointConfig(
|
132
|
+
const grpc_event_engine::experimental::EndpointConfig& config);
|
133
|
+
|
43
134
|
/* a wrapper for accept or accept4 */
|
44
135
|
int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
|
45
136
|
int cloexec);
|
@@ -70,7 +161,7 @@ void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client);
|
|
70
161
|
|
71
162
|
/* Set TCP_USER_TIMEOUT */
|
72
163
|
grpc_error_handle grpc_set_socket_tcp_user_timeout(
|
73
|
-
int fd, const
|
164
|
+
int fd, const grpc_core::PosixTcpOptions& options, bool is_client);
|
74
165
|
|
75
166
|
/* Returns true if this system can create AF_INET6 sockets bound to ::1.
|
76
167
|
The value is probed once, and cached for the life of the process.
|
@@ -104,9 +195,10 @@ grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes);
|
|
104
195
|
grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
|
105
196
|
grpc_socket_mutator* mutator);
|
106
197
|
|
107
|
-
/* Extracts the first socket mutator from
|
198
|
+
/* Extracts the first socket mutator from config if any and applies on the fd.
|
199
|
+
*/
|
108
200
|
grpc_error_handle grpc_apply_socket_mutator_in_args(
|
109
|
-
int fd, grpc_fd_usage usage, const
|
201
|
+
int fd, grpc_fd_usage usage, const grpc_core::PosixTcpOptions& options);
|
110
202
|
|
111
203
|
/* An enum to keep track of IPv4/IPv6 socket modes.
|
112
204
|
|
@@ -22,14 +22,13 @@
|
|
22
22
|
|
23
23
|
grpc_tcp_client_vtable* grpc_tcp_client_impl;
|
24
24
|
|
25
|
-
int64_t grpc_tcp_client_connect(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
grpc_core::Timestamp deadline) {
|
25
|
+
int64_t grpc_tcp_client_connect(
|
26
|
+
grpc_closure* on_connect, grpc_endpoint** endpoint,
|
27
|
+
grpc_pollset_set* interested_parties,
|
28
|
+
const grpc_event_engine::experimental::EndpointConfig& config,
|
29
|
+
const grpc_resolved_address* addr, grpc_core::Timestamp deadline) {
|
31
30
|
return grpc_tcp_client_impl->connect(on_connect, endpoint, interested_parties,
|
32
|
-
|
31
|
+
config, addr, deadline);
|
33
32
|
}
|
34
33
|
|
35
34
|
bool grpc_tcp_client_cancel_connect(int64_t connection_handle) {
|
@@ -21,6 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <grpc/event_engine/endpoint_config.h>
|
24
25
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
26
|
#include <grpc/support/time.h>
|
26
27
|
|
@@ -30,11 +31,11 @@
|
|
30
31
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
31
32
|
|
32
33
|
typedef struct grpc_tcp_client_vtable {
|
33
|
-
int64_t (*connect)(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
int64_t (*connect)(
|
35
|
+
grpc_closure* on_connect, grpc_endpoint** endpoint,
|
36
|
+
grpc_pollset_set* interested_parties,
|
37
|
+
const grpc_event_engine::experimental::EndpointConfig& config,
|
38
|
+
const grpc_resolved_address* addr, grpc_core::Timestamp deadline);
|
38
39
|
bool (*cancel_connect)(int64_t connection_handle);
|
39
40
|
} grpc_tcp_client_vtable;
|
40
41
|
|
@@ -45,12 +46,11 @@ typedef struct grpc_tcp_client_vtable {
|
|
45
46
|
in this connection being established (in order to continue their work). It
|
46
47
|
returns a handle to the connect operation which can be used to cancel the
|
47
48
|
connection attempt. */
|
48
|
-
int64_t grpc_tcp_client_connect(
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
grpc_core::Timestamp deadline);
|
49
|
+
int64_t grpc_tcp_client_connect(
|
50
|
+
grpc_closure* on_connect, grpc_endpoint** endpoint,
|
51
|
+
grpc_pollset_set* interested_parties,
|
52
|
+
const grpc_event_engine::experimental::EndpointConfig& config,
|
53
|
+
const grpc_resolved_address* addr, grpc_core::Timestamp deadline);
|
54
54
|
|
55
55
|
// Returns true if a connect attempt corresponding to the provided handle
|
56
56
|
// is successfully cancelled. Otherwise it returns false. If the connect
|
@@ -27,12 +27,12 @@
|
|
27
27
|
#include <netinet/in.h>
|
28
28
|
#include <string.h>
|
29
29
|
|
30
|
+
#include <grpc/event_engine/endpoint_config.h>
|
30
31
|
#include <grpc/support/alloc.h>
|
31
32
|
#include <grpc/support/log.h>
|
32
33
|
#include <grpc/support/sync.h>
|
33
34
|
|
34
35
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
35
|
-
#include "src/core/lib/channel/channel_args.h"
|
36
36
|
#include "src/core/lib/gprpp/host_port.h"
|
37
37
|
#include "src/core/lib/iomgr/cfstream_handle.h"
|
38
38
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -149,11 +149,11 @@ static void ParseResolvedAddress(const grpc_resolved_address* addr,
|
|
149
149
|
*port = grpc_sockaddr_get_port(addr);
|
150
150
|
}
|
151
151
|
|
152
|
-
static int64_t CFStreamClientConnect(
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
152
|
+
static int64_t CFStreamClientConnect(
|
153
|
+
grpc_closure* closure, grpc_endpoint** ep,
|
154
|
+
grpc_pollset_set* interested_parties,
|
155
|
+
const grpc_event_engine::experimental::EndpointConfig& /*config*/,
|
156
|
+
const grpc_resolved_address* resolved_addr, grpc_core::Timestamp deadline) {
|
157
157
|
auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
|
158
158
|
if (!addr_uri.ok()) {
|
159
159
|
grpc_error_handle error =
|
@@ -35,7 +35,6 @@
|
|
35
35
|
#include <grpc/support/time.h>
|
36
36
|
|
37
37
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
38
|
-
#include "src/core/lib/channel/channel_args.h"
|
39
38
|
#include "src/core/lib/gpr/string.h"
|
40
39
|
#include "src/core/lib/iomgr/ev_posix.h"
|
41
40
|
#include "src/core/lib/iomgr/executor.h"
|
@@ -51,6 +50,8 @@
|
|
51
50
|
|
52
51
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
53
52
|
|
53
|
+
using ::grpc_event_engine::experimental::EndpointConfig;
|
54
|
+
|
54
55
|
struct async_connect {
|
55
56
|
gpr_mu mu;
|
56
57
|
grpc_fd* fd;
|
@@ -62,9 +63,9 @@ struct async_connect {
|
|
62
63
|
std::string addr_str;
|
63
64
|
grpc_endpoint** ep;
|
64
65
|
grpc_closure* closure;
|
65
|
-
grpc_channel_args* channel_args;
|
66
66
|
int64_t connection_handle;
|
67
67
|
bool connect_cancelled;
|
68
|
+
grpc_core::PosixTcpOptions options;
|
68
69
|
};
|
69
70
|
|
70
71
|
struct ConnectionShard {
|
@@ -90,9 +91,9 @@ void grpc_tcp_client_global_init() {
|
|
90
91
|
gpr_once_init(&g_tcp_client_posix_init, do_tcp_client_global_init);
|
91
92
|
}
|
92
93
|
|
93
|
-
static grpc_error_handle prepare_socket(
|
94
|
-
|
95
|
-
|
94
|
+
static grpc_error_handle prepare_socket(
|
95
|
+
const grpc_resolved_address* addr, int fd,
|
96
|
+
const grpc_core::PosixTcpOptions& options) {
|
96
97
|
grpc_error_handle err = GRPC_ERROR_NONE;
|
97
98
|
|
98
99
|
GPR_ASSERT(fd >= 0);
|
@@ -106,15 +107,14 @@ static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
|
|
106
107
|
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
107
108
|
err = grpc_set_socket_reuse_addr(fd, 1);
|
108
109
|
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
109
|
-
err = grpc_set_socket_tcp_user_timeout(fd,
|
110
|
-
true /* is_client */);
|
110
|
+
err = grpc_set_socket_tcp_user_timeout(fd, options, true /* is_client */);
|
111
111
|
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
112
112
|
}
|
113
113
|
err = grpc_set_socket_no_sigpipe_if_possible(fd);
|
114
114
|
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
115
115
|
|
116
116
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
|
117
|
-
|
117
|
+
options);
|
118
118
|
if (!GRPC_ERROR_IS_NONE(err)) goto error;
|
119
119
|
|
120
120
|
goto done;
|
@@ -143,15 +143,20 @@ static void tc_on_alarm(void* acp, grpc_error_handle error) {
|
|
143
143
|
gpr_mu_unlock(&ac->mu);
|
144
144
|
if (done) {
|
145
145
|
gpr_mu_destroy(&ac->mu);
|
146
|
-
grpc_channel_args_destroy(ac->channel_args);
|
147
146
|
delete ac;
|
148
147
|
}
|
149
148
|
}
|
150
149
|
|
151
|
-
grpc_endpoint* grpc_tcp_client_create_from_fd(
|
152
|
-
grpc_fd* fd, const
|
150
|
+
static grpc_endpoint* grpc_tcp_client_create_from_fd(
|
151
|
+
grpc_fd* fd, const grpc_core::PosixTcpOptions& options,
|
152
|
+
absl::string_view addr_str) {
|
153
|
+
return grpc_tcp_create(fd, options, addr_str);
|
154
|
+
}
|
155
|
+
|
156
|
+
grpc_endpoint* grpc_tcp_create_from_fd(
|
157
|
+
grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
|
153
158
|
absl::string_view addr_str) {
|
154
|
-
return grpc_tcp_create(fd,
|
159
|
+
return grpc_tcp_create(fd, TcpOptionsFromEndpointConfig(config), addr_str);
|
155
160
|
}
|
156
161
|
|
157
162
|
static void on_writable(void* acp, grpc_error_handle error) {
|
@@ -207,7 +212,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
207
212
|
switch (so_error) {
|
208
213
|
case 0:
|
209
214
|
grpc_pollset_set_del_fd(ac->interested_parties, fd);
|
210
|
-
*ep = grpc_tcp_client_create_from_fd(fd, ac->
|
215
|
+
*ep = grpc_tcp_client_create_from_fd(fd, ac->options, ac->addr_str);
|
211
216
|
fd = nullptr;
|
212
217
|
break;
|
213
218
|
case ENOBUFS:
|
@@ -269,7 +274,6 @@ finish:
|
|
269
274
|
// This is safe even outside the lock, because "done", the sentinel, is
|
270
275
|
// populated *inside* the lock.
|
271
276
|
gpr_mu_destroy(&ac->mu);
|
272
|
-
grpc_channel_args_destroy(ac->channel_args);
|
273
277
|
delete ac;
|
274
278
|
}
|
275
279
|
// Push async connect closure to the executor since this may actually be
|
@@ -284,8 +288,9 @@ finish:
|
|
284
288
|
}
|
285
289
|
|
286
290
|
grpc_error_handle grpc_tcp_client_prepare_fd(
|
287
|
-
const
|
288
|
-
grpc_resolved_address*
|
291
|
+
const grpc_core::PosixTcpOptions& options,
|
292
|
+
const grpc_resolved_address* addr, grpc_resolved_address* mapped_addr,
|
293
|
+
int* fd) {
|
289
294
|
grpc_dualstack_mode dsmode;
|
290
295
|
grpc_error_handle error;
|
291
296
|
*fd = -1;
|
@@ -306,8 +311,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
306
311
|
memcpy(mapped_addr, addr, sizeof(*mapped_addr));
|
307
312
|
}
|
308
313
|
}
|
309
|
-
if ((error = prepare_socket(mapped_addr, *fd,
|
310
|
-
GRPC_ERROR_NONE) {
|
314
|
+
if ((error = prepare_socket(mapped_addr, *fd, options)) != GRPC_ERROR_NONE) {
|
311
315
|
return error;
|
312
316
|
}
|
313
317
|
return GRPC_ERROR_NONE;
|
@@ -315,8 +319,9 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
315
319
|
|
316
320
|
int64_t grpc_tcp_client_create_from_prepared_fd(
|
317
321
|
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
|
318
|
-
const
|
319
|
-
grpc_core::Timestamp deadline,
|
322
|
+
const grpc_core::PosixTcpOptions& options,
|
323
|
+
const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
|
324
|
+
grpc_endpoint** ep) {
|
320
325
|
int err;
|
321
326
|
do {
|
322
327
|
err = connect(fd, reinterpret_cast<const grpc_sockaddr*>(addr->addr),
|
@@ -342,7 +347,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
|
|
342
347
|
if (err >= 0) {
|
343
348
|
// Connection already succeded. Return 0 to discourage any cancellation
|
344
349
|
// attempts.
|
345
|
-
*ep = grpc_tcp_client_create_from_fd(fdobj,
|
350
|
+
*ep = grpc_tcp_client_create_from_fd(fdobj, options, addr_uri.value());
|
346
351
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
347
352
|
return 0;
|
348
353
|
}
|
@@ -371,7 +376,7 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
|
|
371
376
|
ac->refs = 2;
|
372
377
|
GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
|
373
378
|
grpc_schedule_on_exec_ctx);
|
374
|
-
ac->
|
379
|
+
ac->options = options;
|
375
380
|
|
376
381
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
377
382
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: asynchronously connecting fd %p",
|
@@ -395,21 +400,21 @@ int64_t grpc_tcp_client_create_from_prepared_fd(
|
|
395
400
|
|
396
401
|
static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
397
402
|
grpc_pollset_set* interested_parties,
|
398
|
-
const
|
403
|
+
const EndpointConfig& config,
|
399
404
|
const grpc_resolved_address* addr,
|
400
405
|
grpc_core::Timestamp deadline) {
|
401
406
|
grpc_resolved_address mapped_addr;
|
407
|
+
grpc_core::PosixTcpOptions options(TcpOptionsFromEndpointConfig(config));
|
402
408
|
int fd = -1;
|
403
409
|
grpc_error_handle error;
|
404
410
|
*ep = nullptr;
|
405
|
-
if ((error = grpc_tcp_client_prepare_fd(
|
406
|
-
|
411
|
+
if ((error = grpc_tcp_client_prepare_fd(options, addr, &mapped_addr, &fd)) !=
|
412
|
+
GRPC_ERROR_NONE) {
|
407
413
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
408
414
|
return 0;
|
409
415
|
}
|
410
|
-
return grpc_tcp_client_create_from_prepared_fd(
|
411
|
-
|
412
|
-
deadline, ep);
|
416
|
+
return grpc_tcp_client_create_from_prepared_fd(
|
417
|
+
interested_parties, closure, fd, options, &mapped_addr, deadline, ep);
|
413
418
|
}
|
414
419
|
|
415
420
|
static bool tcp_cancel_connect(int64_t connection_handle) {
|
@@ -458,7 +463,6 @@ static bool tcp_cancel_connect(int64_t connection_handle) {
|
|
458
463
|
// This is safe even outside the lock, because "done", the sentinel, is
|
459
464
|
// populated *inside* the lock.
|
460
465
|
gpr_mu_destroy(&ac->mu);
|
461
|
-
grpc_channel_args_destroy(ac->channel_args);
|
462
466
|
delete ac;
|
463
467
|
}
|
464
468
|
return connection_cancel_success;
|
@@ -23,23 +23,24 @@
|
|
23
23
|
|
24
24
|
#include "src/core/lib/iomgr/endpoint.h"
|
25
25
|
#include "src/core/lib/iomgr/ev_posix.h"
|
26
|
+
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
26
27
|
#include "src/core/lib/iomgr/tcp_client.h"
|
27
28
|
|
28
29
|
/* Create an endpoint from a connected grpc_fd.
|
29
30
|
|
30
31
|
fd: a connected FD. Ownership is taken.
|
31
|
-
|
32
|
+
config: may contain custom settings for the endpoint
|
32
33
|
addr_str: destination address in printable format
|
33
34
|
slice_allocator: ownership is taken by client.
|
34
35
|
Returns: a new endpoint
|
35
36
|
*/
|
36
|
-
grpc_endpoint*
|
37
|
-
grpc_fd* fd, const
|
37
|
+
grpc_endpoint* grpc_tcp_create_from_fd(
|
38
|
+
grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
|
38
39
|
absl::string_view addr_str);
|
39
40
|
|
40
41
|
/* Return a configured, unbound, unconnected TCP client fd.
|
41
42
|
|
42
|
-
|
43
|
+
options: may contain custom settings for the fd
|
43
44
|
addr: the destination address
|
44
45
|
mapped_addr: out parameter. addr mapped to an address appropriate to the
|
45
46
|
type of socket FD created. For example, if addr is IPv4 and dual stack
|
@@ -48,8 +49,9 @@ grpc_endpoint* grpc_tcp_client_create_from_fd(
|
|
48
49
|
Returns: error, if any. Out parameters are not set on error
|
49
50
|
*/
|
50
51
|
grpc_error_handle grpc_tcp_client_prepare_fd(
|
51
|
-
const
|
52
|
-
grpc_resolved_address*
|
52
|
+
const grpc_core::PosixTcpOptions& options,
|
53
|
+
const grpc_resolved_address* addr, grpc_resolved_address* mapped_addr,
|
54
|
+
int* fd);
|
53
55
|
|
54
56
|
/* Connect a configured TCP client fd.
|
55
57
|
|
@@ -57,13 +59,14 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
|
|
57
59
|
connection being established (in order to continue their work
|
58
60
|
closure: called when complete. On success, *ep will be set.
|
59
61
|
fd: an FD returned from grpc_tcp_client_prepare_fd().
|
60
|
-
|
62
|
+
options: may contain custom settings for the endpoint
|
61
63
|
deadline: connection deadline
|
62
64
|
ep: out parameter. Set before closure is called if successful
|
63
65
|
*/
|
64
66
|
int64_t grpc_tcp_client_create_from_prepared_fd(
|
65
67
|
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
|
66
|
-
const
|
67
|
-
grpc_core::Timestamp deadline,
|
68
|
+
const grpc_core::PosixTcpOptions& options,
|
69
|
+
const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
|
70
|
+
grpc_endpoint** ep);
|
68
71
|
|
69
72
|
#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_POSIX_H */
|
@@ -24,13 +24,13 @@
|
|
24
24
|
|
25
25
|
#ifdef GRPC_WINSOCK_SOCKET
|
26
26
|
|
27
|
+
#include <grpc/event_engine/endpoint_config.h>
|
27
28
|
#include <grpc/slice_buffer.h>
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
30
31
|
#include <grpc/support/log_windows.h>
|
31
32
|
|
32
33
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
33
|
-
#include "src/core/lib/channel/channel_args.h"
|
34
34
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
35
35
|
#include "src/core/lib/iomgr/sockaddr.h"
|
36
36
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
@@ -38,8 +38,11 @@
|
|
38
38
|
#include "src/core/lib/iomgr/tcp_client.h"
|
39
39
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
40
40
|
#include "src/core/lib/iomgr/timer.h"
|
41
|
+
#include "src/core/lib/resource_quota/api.h"
|
41
42
|
#include "src/core/lib/slice/slice_internal.h"
|
42
43
|
|
44
|
+
using ::grpc_event_engine::experimental::EndpointConfig;
|
45
|
+
|
43
46
|
struct async_connect {
|
44
47
|
grpc_closure* on_done;
|
45
48
|
gpr_mu mu;
|
@@ -50,7 +53,6 @@ struct async_connect {
|
|
50
53
|
int refs;
|
51
54
|
grpc_closure on_connect;
|
52
55
|
grpc_endpoint** endpoint;
|
53
|
-
grpc_channel_args* channel_args;
|
54
56
|
};
|
55
57
|
|
56
58
|
static void async_connect_unlock_and_cleanup(async_connect* ac,
|
@@ -58,7 +60,6 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
|
|
58
60
|
int done = (--ac->refs == 0);
|
59
61
|
gpr_mu_unlock(&ac->mu);
|
60
62
|
if (done) {
|
61
|
-
grpc_channel_args_destroy(ac->channel_args);
|
62
63
|
gpr_mu_destroy(&ac->mu);
|
63
64
|
delete ac;
|
64
65
|
}
|
@@ -105,7 +106,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
105
106
|
error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
|
106
107
|
closesocket(socket->socket);
|
107
108
|
} else {
|
108
|
-
*ep = grpc_tcp_create(socket, ac->
|
109
|
+
*ep = grpc_tcp_create(socket, ac->addr_name);
|
109
110
|
socket = nullptr;
|
110
111
|
}
|
111
112
|
} else {
|
@@ -123,7 +124,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
123
124
|
notification request for the connection, and one timeout alert. */
|
124
125
|
static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
125
126
|
grpc_pollset_set* interested_parties,
|
126
|
-
const
|
127
|
+
const EndpointConfig& config,
|
127
128
|
const grpc_resolved_address* addr,
|
128
129
|
grpc_core::Timestamp deadline) {
|
129
130
|
SOCKET sock = INVALID_SOCKET;
|
@@ -208,7 +209,6 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
|
|
208
209
|
ac->refs = 2;
|
209
210
|
ac->addr_name = addr_uri.value();
|
210
211
|
ac->endpoint = endpoint;
|
211
|
-
ac->channel_args = grpc_channel_args_copy(channel_args);
|
212
212
|
GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx);
|
213
213
|
|
214
214
|
GRPC_CLOSURE_INIT(&ac->on_alarm, on_alarm, ac, grpc_schedule_on_exec_ctx);
|