grpc 1.18.0 → 1.22.0
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 +4731 -7404
- data/etc/roots.pem +146 -0
- data/include/grpc/grpc.h +11 -6
- data/include/grpc/grpc_security.h +297 -4
- data/include/grpc/grpc_security_constants.h +1 -1
- data/include/grpc/impl/codegen/byte_buffer.h +13 -0
- data/include/grpc/impl/codegen/gpr_types.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +30 -7
- data/include/grpc/impl/codegen/port_platform.h +88 -7
- data/include/grpc/impl/codegen/slice.h +2 -22
- data/include/grpc/impl/codegen/status.h +2 -1
- data/include/grpc/impl/codegen/sync_posix.h +18 -0
- data/include/grpc/slice.h +3 -3
- data/src/core/ext/filters/client_channel/backup_poller.cc +21 -16
- data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +3 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +2435 -1557
- data/src/core/ext/filters/client_channel/client_channel.h +2 -10
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -89
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +8 -33
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
- data/src/core/ext/filters/client_channel/client_channel_factory.h +19 -38
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +9 -11
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +59 -55
- data/src/core/ext/filters/client_channel/health/health_check_client.h +20 -9
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +146 -157
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +29 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +844 -859
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +16 -12
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +185 -312
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +143 -375
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +192 -245
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +1554 -955
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_secure.cc +0 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy.cc +115 -22
- data/src/core/ext/filters/client_channel/lb_policy.h +260 -129
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +5 -2
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +107 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -3
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +56 -0
- data/src/core/ext/filters/client_channel/parse_address.cc +24 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +121 -122
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +84 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +179 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +24 -10
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +111 -47
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +7 -13
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +39 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +0 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -64
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
- data/src/core/{lib/iomgr/network_status_tracker.cc → ext/filters/client_channel/resolver/dns/dns_resolver_selection.h} +8 -15
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +36 -82
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +111 -72
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +13 -8
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +28 -63
- data/src/core/ext/filters/client_channel/resolver.cc +54 -1
- data/src/core/ext/filters/client_channel/resolver.h +52 -23
- data/src/core/ext/filters/client_channel/resolver_factory.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_registry.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver_registry.h +5 -4
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +368 -241
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +58 -76
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +543 -0
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +139 -0
- data/src/core/ext/filters/client_channel/server_address.cc +4 -54
- data/src/core/ext/filters/client_channel/server_address.h +1 -13
- data/src/core/ext/filters/client_channel/service_config.cc +329 -0
- data/src/core/ext/filters/client_channel/service_config.h +205 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +803 -838
- data/src/core/ext/filters/client_channel/subchannel.h +295 -128
- data/src/core/ext/filters/client_channel/subchannel_interface.h +113 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +94 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +7 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +4 -3
- data/src/core/ext/filters/http/server/http_server_filter.cc +18 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +5 -2
- data/src/core/ext/filters/message_size/message_size_filter.cc +119 -77
- data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +13 -12
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +45 -47
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +134 -143
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +68 -21
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +156 -94
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -37
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +74 -55
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -11
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +7 -14
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -1
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +9 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +43 -30
- data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -70
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +70 -33
- data/src/core/ext/transport/inproc/inproc_transport.cc +26 -18
- data/src/core/lib/channel/channel_args.cc +2 -101
- data/src/core/lib/channel/channel_args.h +3 -37
- data/src/core/lib/channel/channel_stack.h +10 -6
- data/src/core/lib/channel/channel_trace.cc +4 -4
- data/src/core/lib/channel/channel_trace.h +4 -4
- data/src/core/lib/channel/channelz.cc +168 -38
- data/src/core/lib/channel/channelz.h +40 -44
- data/src/core/lib/channel/channelz_registry.cc +75 -107
- data/src/core/lib/channel/channelz_registry.h +10 -28
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/handshaker.cc +151 -218
- data/src/core/lib/channel/handshaker.h +110 -101
- data/src/core/lib/channel/handshaker_factory.h +11 -19
- data/src/core/lib/channel/handshaker_registry.cc +67 -51
- data/src/core/lib/channel/handshaker_registry.h +21 -16
- data/src/core/lib/compression/algorithm_metadata.h +3 -3
- data/src/core/lib/compression/compression.cc +14 -9
- data/src/core/lib/compression/compression_args.cc +127 -0
- data/src/core/lib/compression/compression_args.h +55 -0
- data/src/core/lib/compression/compression_internal.cc +16 -12
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/stream_compression.cc +3 -2
- data/src/core/lib/compression/stream_compression.h +2 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
- data/src/core/lib/debug/trace.cc +13 -7
- data/src/core/lib/debug/trace.h +14 -1
- data/src/core/lib/gpr/arena.h +13 -9
- data/src/core/lib/gpr/cpu_posix.cc +5 -3
- data/src/core/lib/gpr/env.h +3 -6
- data/src/core/lib/gpr/env_linux.cc +6 -1
- data/src/core/lib/gpr/env_posix.cc +5 -0
- data/src/core/lib/gpr/env_windows.cc +7 -5
- data/src/core/lib/gpr/log.cc +9 -13
- data/src/core/lib/gpr/log_posix.cc +2 -1
- data/src/core/lib/gpr/string.cc +20 -7
- data/src/core/lib/gpr/string.h +10 -3
- data/src/core/lib/gpr/sync_posix.cc +65 -4
- data/src/core/lib/gpr/time.cc +8 -0
- data/src/core/lib/gpr/time_posix.cc +21 -2
- data/src/core/lib/gprpp/arena.cc +103 -0
- data/src/core/lib/gprpp/arena.h +121 -0
- data/src/core/lib/gprpp/atomic.h +75 -5
- data/src/core/lib/gprpp/fork.cc +13 -32
- data/src/core/lib/gprpp/fork.h +5 -1
- data/src/core/lib/gprpp/global_config.h +96 -0
- data/src/core/lib/gprpp/global_config_custom.h +29 -0
- data/src/core/lib/gprpp/global_config_env.cc +135 -0
- data/src/core/lib/gprpp/global_config_env.h +131 -0
- data/src/core/lib/gprpp/global_config_generic.h +44 -0
- data/src/core/lib/gprpp/inlined_vector.h +8 -0
- data/src/core/lib/gprpp/map.h +436 -0
- data/src/core/lib/gprpp/memory.h +2 -2
- data/src/core/lib/gprpp/optional.h +48 -0
- data/src/core/lib/gprpp/orphanable.h +6 -5
- data/src/core/lib/gprpp/{mutex_lock.h → pair.h} +15 -19
- data/src/core/lib/gprpp/ref_counted.h +36 -17
- data/src/core/lib/gprpp/sync.h +126 -0
- data/src/core/lib/gprpp/thd.h +42 -7
- data/src/core/lib/gprpp/thd_posix.cc +31 -13
- data/src/core/lib/gprpp/thd_windows.cc +47 -34
- data/src/core/lib/http/httpcli.cc +6 -5
- data/src/core/lib/http/httpcli_security_connector.cc +13 -15
- data/src/core/lib/http/parser.cc +3 -2
- data/src/core/lib/http/parser.h +2 -1
- data/src/core/lib/iomgr/buffer_list.cc +182 -24
- data/src/core/lib/iomgr/buffer_list.h +72 -10
- data/src/core/lib/iomgr/call_combiner.cc +84 -90
- data/src/core/lib/iomgr/call_combiner.h +75 -82
- data/src/core/lib/iomgr/cfstream_handle.cc +203 -0
- data/src/core/lib/iomgr/cfstream_handle.h +86 -0
- data/src/core/lib/iomgr/combiner.cc +11 -3
- data/src/core/lib/iomgr/combiner.h +1 -1
- data/src/core/lib/iomgr/endpoint.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +3 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +375 -0
- data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
- data/src/core/lib/iomgr/error.cc +21 -17
- data/src/core/lib/iomgr/error.h +36 -6
- data/src/core/lib/iomgr/error_cfstream.cc +52 -0
- data/src/core/lib/iomgr/error_cfstream.h +31 -0
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +44 -28
- data/src/core/lib/iomgr/ev_epollex_linux.cc +173 -194
- data/src/core/lib/iomgr/ev_poll_posix.cc +16 -487
- data/src/core/lib/iomgr/ev_posix.cc +29 -19
- data/src/core/lib/iomgr/ev_posix.h +19 -3
- data/src/core/lib/iomgr/ev_windows.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -0
- data/src/core/lib/iomgr/exec_ctx.h +137 -8
- data/src/core/lib/iomgr/executor.cc +147 -95
- data/src/core/lib/iomgr/executor.h +55 -49
- data/src/core/lib/iomgr/fork_posix.cc +6 -5
- data/src/core/lib/{gprpp/atomic_with_std.h → iomgr/grpc_if_nametoindex.h} +8 -13
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
- data/src/core/lib/iomgr/{network_status_tracker.h → grpc_if_nametoindex_unsupported.cc} +15 -9
- data/src/core/lib/iomgr/internal_errqueue.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.h +105 -3
- data/src/core/lib/iomgr/iomgr.cc +20 -13
- data/src/core/lib/iomgr/iomgr.h +15 -0
- data/src/core/lib/iomgr/iomgr_custom.cc +17 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +10 -0
- data/src/core/lib/iomgr/iomgr_internal.h +12 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +19 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +93 -0
- data/src/core/lib/iomgr/iomgr_windows.cc +18 -2
- data/src/core/lib/iomgr/lockfree_event.cc +4 -4
- data/src/core/lib/iomgr/port.h +35 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +2 -1
- data/src/core/lib/iomgr/resource_quota.cc +40 -37
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +6 -2
- data/src/core/lib/iomgr/socket_windows.cc +19 -0
- data/src/core/lib/iomgr/socket_windows.h +8 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +216 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +10 -14
- data/src/core/lib/iomgr/tcp_posix.cc +256 -140
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +24 -0
- data/src/core/lib/iomgr/tcp_server_custom.cc +14 -12
- data/src/core/lib/iomgr/tcp_server_posix.cc +86 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +13 -11
- data/src/core/lib/iomgr/tcp_uv.cc +5 -7
- data/src/core/lib/iomgr/tcp_windows.cc +8 -14
- data/src/core/lib/iomgr/timer.h +2 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -16
- data/src/core/lib/iomgr/timer_manager.cc +20 -11
- data/src/core/lib/iomgr/udp_server.cc +8 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
- data/src/core/lib/json/json.cc +1 -4
- data/src/core/lib/profiling/basic_timers.cc +10 -4
- data/src/core/lib/security/context/security_context.cc +6 -7
- data/src/core/lib/security/context/security_context.h +3 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -0
- data/src/core/lib/security/credentials/credentials.h +9 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +10 -6
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -8
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +192 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +210 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +129 -0
- data/src/core/lib/security/credentials/tls/spiffe_credentials.h +62 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -12
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +7 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -8
- data/src/core/lib/security/security_connector/security_connector.cc +0 -1
- data/src/core/lib/security/security_connector/security_connector.h +3 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +39 -38
- data/src/core/lib/security/security_connector/ssl_utils.cc +164 -26
- data/src/core/lib/security/security_connector/ssl_utils.h +70 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +426 -0
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +122 -0
- data/src/core/lib/security/transport/auth_filters.h +5 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +55 -50
- data/src/core/lib/security/transport/secure_endpoint.cc +6 -6
- data/src/core/lib/security/transport/security_handshaker.cc +271 -303
- data/src/core/lib/security/transport/security_handshaker.h +11 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -3
- data/src/core/lib/slice/b64.h +2 -2
- data/src/core/lib/slice/percent_encoding.cc +3 -3
- data/src/core/lib/slice/percent_encoding.h +3 -3
- data/src/core/lib/slice/slice.cc +174 -122
- data/src/core/lib/slice/slice_buffer.cc +54 -21
- data/src/core/lib/slice/slice_hash_table.h +4 -4
- data/src/core/lib/slice/slice_intern.cc +49 -107
- data/src/core/lib/slice/slice_internal.h +264 -3
- data/src/core/lib/slice/slice_string_helpers.cc +10 -1
- data/src/core/lib/slice/slice_string_helpers.h +3 -1
- data/src/core/lib/slice/slice_utils.h +50 -0
- data/src/core/lib/slice/slice_weak_hash_table.h +6 -6
- data/src/core/lib/surface/api_trace.h +1 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +17 -0
- data/src/core/lib/surface/call.cc +67 -46
- data/src/core/lib/surface/call.h +7 -2
- data/src/core/lib/surface/call_details.cc +0 -1
- data/src/core/lib/surface/channel.cc +89 -97
- data/src/core/lib/surface/channel.h +60 -6
- data/src/core/lib/surface/channel_init.h +5 -0
- data/src/core/lib/surface/completion_queue.cc +221 -216
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +82 -33
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +5 -7
- data/src/core/lib/surface/server.cc +42 -47
- data/src/core/lib/surface/validate_metadata.cc +14 -8
- data/src/core/lib/surface/validate_metadata.h +13 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.cc +3 -3
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/connectivity_state.cc +10 -40
- data/src/core/lib/transport/connectivity_state.h +0 -8
- data/src/core/lib/transport/error_utils.cc +12 -0
- data/src/core/lib/transport/metadata.cc +258 -267
- data/src/core/lib/transport/metadata.h +227 -16
- data/src/core/lib/transport/metadata_batch.cc +1 -1
- data/src/core/lib/transport/metadata_batch.h +1 -1
- data/src/core/lib/transport/static_metadata.cc +477 -399
- data/src/core/lib/transport/static_metadata.h +273 -182
- data/src/core/lib/transport/status_metadata.cc +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -1
- data/src/core/lib/transport/transport.cc +39 -72
- data/src/core/lib/transport/transport.h +59 -24
- data/src/core/lib/transport/transport_impl.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -1
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +12 -10
- data/src/core/tsi/ssl_transport_security.h +24 -4
- data/src/ruby/bin/math_pb.rb +18 -16
- data/src/ruby/ext/grpc/extconf.rb +12 -4
- data/src/ruby/ext/grpc/rb_call_credentials.c +8 -5
- data/src/ruby/ext/grpc/rb_channel.c +14 -10
- data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc.c +23 -24
- data/src/ruby/ext/grpc/rb_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +24 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -0
- data/src/ruby/ext/grpc/rb_server.c +8 -4
- data/src/ruby/lib/grpc/errors.rb +22 -3
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +13 -10
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +58 -56
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
- data/src/ruby/spec/errors_spec.rb +141 -0
- data/third_party/cares/cares/ares.h +12 -0
- data/third_party/cares/cares/ares_create_query.c +5 -1
- data/third_party/cares/cares/ares_data.c +74 -73
- data/third_party/cares/cares/ares_destroy.c +6 -1
- data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
- data/third_party/cares/cares/ares_gethostbyname.c +15 -4
- data/third_party/cares/cares/ares_getnameinfo.c +11 -0
- data/third_party/cares/cares/ares_init.c +274 -173
- data/third_party/cares/cares/ares_library_init.c +21 -3
- data/third_party/cares/cares/ares_options.c +6 -2
- data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
- data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
- data/third_party/cares/cares/ares_platform.c +7 -0
- data/third_party/cares/cares/ares_private.h +19 -11
- data/third_party/cares/cares/ares_process.c +27 -2
- data/third_party/cares/cares/ares_rules.h +1 -1
- data/third_party/cares/cares/ares_search.c +7 -0
- data/third_party/cares/cares/ares_send.c +6 -0
- data/third_party/cares/cares/ares_strsplit.c +174 -0
- data/third_party/cares/cares/ares_strsplit.h +43 -0
- data/third_party/cares/cares/ares_version.h +4 -4
- data/third_party/cares/cares/config-win32.h +1 -1
- data/third_party/cares/cares/inet_ntop.c +2 -3
- data/third_party/cares/config_darwin/ares_config.h +3 -0
- data/third_party/cares/config_freebsd/ares_config.h +3 -0
- data/third_party/cares/config_linux/ares_config.h +3 -0
- data/third_party/cares/config_openbsd/ares_config.h +3 -0
- metadata +83 -48
- data/src/core/ext/filters/client_channel/request_routing.cc +0 -936
- data/src/core/ext/filters/client_channel/request_routing.h +0 -177
- data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -248
- data/src/core/ext/filters/client_channel/subchannel_index.h +0 -76
- data/src/core/lib/channel/handshaker_factory.cc +0 -42
- data/src/core/lib/gpr/arena.cc +0 -192
- data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
- data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
- data/src/core/lib/transport/service_config.cc +0 -106
- data/src/core/lib/transport/service_config.h +0 -249
@@ -55,9 +55,22 @@ static void iomgr_platform_shutdown_background_closure(void) {
|
|
55
55
|
grpc_shutdown_background_closure();
|
56
56
|
}
|
57
57
|
|
58
|
+
static bool iomgr_platform_is_any_background_poller_thread(void) {
|
59
|
+
return grpc_is_any_background_poller_thread();
|
60
|
+
}
|
61
|
+
|
62
|
+
static bool iomgr_platform_add_closure_to_background_poller(
|
63
|
+
grpc_closure* closure, grpc_error* error) {
|
64
|
+
return grpc_add_closure_to_background_poller(closure, error);
|
65
|
+
}
|
66
|
+
|
58
67
|
static grpc_iomgr_platform_vtable vtable = {
|
59
|
-
iomgr_platform_init,
|
60
|
-
|
68
|
+
iomgr_platform_init,
|
69
|
+
iomgr_platform_flush,
|
70
|
+
iomgr_platform_shutdown,
|
71
|
+
iomgr_platform_shutdown_background_closure,
|
72
|
+
iomgr_platform_is_any_background_poller_thread,
|
73
|
+
iomgr_platform_add_closure_to_background_poller};
|
61
74
|
|
62
75
|
void grpc_set_default_iomgr_platform() {
|
63
76
|
grpc_set_tcp_client_impl(&grpc_posix_tcp_client_vtable);
|
@@ -69,4 +82,8 @@ void grpc_set_default_iomgr_platform() {
|
|
69
82
|
grpc_set_iomgr_platform_vtable(&vtable);
|
70
83
|
}
|
71
84
|
|
85
|
+
bool grpc_iomgr_run_in_background() {
|
86
|
+
return grpc_event_engine_run_in_background();
|
87
|
+
}
|
88
|
+
|
72
89
|
#endif /* GRPC_POSIX_SOCKET_IOMGR */
|
@@ -0,0 +1,93 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/iomgr/port.h"
|
22
|
+
|
23
|
+
#ifdef GRPC_CFSTREAM_IOMGR
|
24
|
+
|
25
|
+
#include "src/core/lib/debug/trace.h"
|
26
|
+
#include "src/core/lib/iomgr/ev_posix.h"
|
27
|
+
#include "src/core/lib/iomgr/iomgr_internal.h"
|
28
|
+
#include "src/core/lib/iomgr/iomgr_posix.h"
|
29
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
30
|
+
#include "src/core/lib/iomgr/tcp_client.h"
|
31
|
+
#include "src/core/lib/iomgr/tcp_posix.h"
|
32
|
+
#include "src/core/lib/iomgr/tcp_server.h"
|
33
|
+
#include "src/core/lib/iomgr/timer.h"
|
34
|
+
|
35
|
+
static const char* grpc_cfstream_env_var = "grpc_cfstream";
|
36
|
+
|
37
|
+
extern grpc_tcp_server_vtable grpc_posix_tcp_server_vtable;
|
38
|
+
extern grpc_tcp_client_vtable grpc_posix_tcp_client_vtable;
|
39
|
+
extern grpc_tcp_client_vtable grpc_cfstream_client_vtable;
|
40
|
+
extern grpc_timer_vtable grpc_generic_timer_vtable;
|
41
|
+
extern grpc_pollset_vtable grpc_posix_pollset_vtable;
|
42
|
+
extern grpc_pollset_set_vtable grpc_posix_pollset_set_vtable;
|
43
|
+
extern grpc_address_resolver_vtable grpc_posix_resolver_vtable;
|
44
|
+
|
45
|
+
static void iomgr_platform_init(void) {
|
46
|
+
grpc_wakeup_fd_global_init();
|
47
|
+
grpc_event_engine_init();
|
48
|
+
}
|
49
|
+
|
50
|
+
static void iomgr_platform_flush(void) {}
|
51
|
+
|
52
|
+
static void iomgr_platform_shutdown(void) {
|
53
|
+
grpc_event_engine_shutdown();
|
54
|
+
grpc_wakeup_fd_global_destroy();
|
55
|
+
}
|
56
|
+
|
57
|
+
static void iomgr_platform_shutdown_background_closure(void) {
|
58
|
+
grpc_shutdown_background_closure();
|
59
|
+
}
|
60
|
+
|
61
|
+
static bool iomgr_platform_is_any_background_poller_thread(void) {
|
62
|
+
return grpc_is_any_background_poller_thread();
|
63
|
+
}
|
64
|
+
|
65
|
+
static bool iomgr_platform_add_closure_to_background_poller(
|
66
|
+
grpc_closure* closure, grpc_error* error) {
|
67
|
+
return grpc_add_closure_to_background_poller(closure, error);
|
68
|
+
}
|
69
|
+
|
70
|
+
static grpc_iomgr_platform_vtable vtable = {
|
71
|
+
iomgr_platform_init,
|
72
|
+
iomgr_platform_flush,
|
73
|
+
iomgr_platform_shutdown,
|
74
|
+
iomgr_platform_shutdown_background_closure,
|
75
|
+
iomgr_platform_is_any_background_poller_thread,
|
76
|
+
iomgr_platform_add_closure_to_background_poller};
|
77
|
+
|
78
|
+
void grpc_set_default_iomgr_platform() {
|
79
|
+
char* enable_cfstream = getenv(grpc_cfstream_env_var);
|
80
|
+
grpc_tcp_client_vtable* client_vtable = &grpc_posix_tcp_client_vtable;
|
81
|
+
if (enable_cfstream != nullptr && enable_cfstream[0] == '1') {
|
82
|
+
client_vtable = &grpc_cfstream_client_vtable;
|
83
|
+
}
|
84
|
+
grpc_set_tcp_client_impl(client_vtable);
|
85
|
+
grpc_set_tcp_server_impl(&grpc_posix_tcp_server_vtable);
|
86
|
+
grpc_set_timer_impl(&grpc_generic_timer_vtable);
|
87
|
+
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
|
88
|
+
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
|
89
|
+
grpc_set_resolver_impl(&grpc_posix_resolver_vtable);
|
90
|
+
grpc_set_iomgr_platform_vtable(&vtable);
|
91
|
+
}
|
92
|
+
|
93
|
+
#endif /* GRPC_CFSTREAM_IOMGR */
|
@@ -61,6 +61,7 @@ static void iomgr_platform_init(void) {
|
|
61
61
|
winsock_init();
|
62
62
|
grpc_iocp_init();
|
63
63
|
grpc_pollset_global_init();
|
64
|
+
grpc_wsa_socket_flags_init();
|
64
65
|
}
|
65
66
|
|
66
67
|
static void iomgr_platform_flush(void) { grpc_iocp_flush(); }
|
@@ -73,9 +74,22 @@ static void iomgr_platform_shutdown(void) {
|
|
73
74
|
|
74
75
|
static void iomgr_platform_shutdown_background_closure(void) {}
|
75
76
|
|
77
|
+
static bool iomgr_platform_is_any_background_poller_thread(void) {
|
78
|
+
return false;
|
79
|
+
}
|
80
|
+
|
81
|
+
static bool iomgr_platform_add_closure_to_background_poller(
|
82
|
+
grpc_closure* closure, grpc_error* error) {
|
83
|
+
return false;
|
84
|
+
}
|
85
|
+
|
76
86
|
static grpc_iomgr_platform_vtable vtable = {
|
77
|
-
iomgr_platform_init,
|
78
|
-
|
87
|
+
iomgr_platform_init,
|
88
|
+
iomgr_platform_flush,
|
89
|
+
iomgr_platform_shutdown,
|
90
|
+
iomgr_platform_shutdown_background_closure,
|
91
|
+
iomgr_platform_is_any_background_poller_thread,
|
92
|
+
iomgr_platform_add_closure_to_background_poller};
|
79
93
|
|
80
94
|
void grpc_set_default_iomgr_platform() {
|
81
95
|
grpc_set_tcp_client_impl(&grpc_windows_tcp_client_vtable);
|
@@ -87,4 +101,6 @@ void grpc_set_default_iomgr_platform() {
|
|
87
101
|
grpc_set_iomgr_platform_vtable(&vtable);
|
88
102
|
}
|
89
103
|
|
104
|
+
bool grpc_iomgr_run_in_background() { return false; }
|
105
|
+
|
90
106
|
#endif /* GRPC_WINSOCK_SOCKET */
|
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
#include "src/core/lib/debug/trace.h"
|
26
26
|
|
27
|
-
extern grpc_core::
|
27
|
+
extern grpc_core::DebugOnlyTraceFlag grpc_polling_trace;
|
28
28
|
|
29
29
|
/* 'state' holds the to call when the fd is readable or writable respectively.
|
30
30
|
It can contain one of the following values:
|
@@ -94,7 +94,7 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
94
94
|
* sure that the shutdown error has been initialized properly before us
|
95
95
|
* referencing it. */
|
96
96
|
gpr_atm curr = gpr_atm_acq_load(&state_);
|
97
|
-
if (grpc_polling_trace
|
97
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
98
98
|
gpr_log(GPR_ERROR, "LockfreeEvent::NotifyOn: %p curr=%p closure=%p", this,
|
99
99
|
(void*)curr, closure);
|
100
100
|
}
|
@@ -160,7 +160,7 @@ bool LockfreeEvent::SetShutdown(grpc_error* shutdown_err) {
|
|
160
160
|
|
161
161
|
while (true) {
|
162
162
|
gpr_atm curr = gpr_atm_no_barrier_load(&state_);
|
163
|
-
if (grpc_polling_trace
|
163
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
164
164
|
gpr_log(GPR_ERROR, "LockfreeEvent::SetShutdown: %p curr=%p err=%s",
|
165
165
|
&state_, (void*)curr, grpc_error_string(shutdown_err));
|
166
166
|
}
|
@@ -209,7 +209,7 @@ void LockfreeEvent::SetReady() {
|
|
209
209
|
while (true) {
|
210
210
|
gpr_atm curr = gpr_atm_no_barrier_load(&state_);
|
211
211
|
|
212
|
-
if (grpc_polling_trace
|
212
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
213
213
|
gpr_log(GPR_ERROR, "LockfreeEvent::SetReady: %p curr=%p", &state_,
|
214
214
|
(void*)curr);
|
215
215
|
}
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -26,6 +26,11 @@
|
|
26
26
|
#define GRPC_CUSTOM_SOCKET
|
27
27
|
#endif
|
28
28
|
#endif
|
29
|
+
/* This needs to be separate from the other conditions because it needs to
|
30
|
+
* apply to custom sockets too */
|
31
|
+
#ifdef GPR_WINDOWS
|
32
|
+
#define GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY 1
|
33
|
+
#endif
|
29
34
|
#if defined(GRPC_CUSTOM_SOCKET)
|
30
35
|
// Do Nothing
|
31
36
|
#elif defined(GPR_MANYLINUX1)
|
@@ -44,6 +49,7 @@
|
|
44
49
|
#elif defined(GPR_WINDOWS)
|
45
50
|
#define GRPC_WINSOCK_SOCKET 1
|
46
51
|
#define GRPC_WINDOWS_SOCKETUTILS 1
|
52
|
+
#define GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER 1
|
47
53
|
#elif defined(GPR_ANDROID)
|
48
54
|
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
|
49
55
|
#define GRPC_HAVE_IP_PKTINFO 1
|
@@ -60,6 +66,9 @@
|
|
60
66
|
#define GRPC_HAVE_IP_PKTINFO 1
|
61
67
|
#define GRPC_HAVE_MSG_NOSIGNAL 1
|
62
68
|
#define GRPC_HAVE_UNIX_SOCKET 1
|
69
|
+
/* Linux has TCP_INQ support since 4.18, but it is safe to set
|
70
|
+
the socket option on older kernels. */
|
71
|
+
#define GRPC_HAVE_TCP_INQ 1
|
63
72
|
#ifdef LINUX_VERSION_CODE
|
64
73
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
|
65
74
|
#define GRPC_LINUX_ERRQUEUE 1
|
@@ -85,6 +94,15 @@
|
|
85
94
|
#ifdef LINUX_VERSION_CODE
|
86
95
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
|
87
96
|
#define GRPC_HAVE_TCP_USER_TIMEOUT
|
97
|
+
#ifdef __GLIBC_PREREQ
|
98
|
+
#if !(__GLIBC_PREREQ(2, 17))
|
99
|
+
/*
|
100
|
+
* TCP_USER_TIMEOUT wasn't imported to glibc until 2.17. Use Linux system
|
101
|
+
* header instead.
|
102
|
+
*/
|
103
|
+
#define GRPC_LINUX_TCP_H 1
|
104
|
+
#endif /* __GLIBC_PREREQ(2, 17) */
|
105
|
+
#endif /* ifdef __GLIBC_PREREQ */
|
88
106
|
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37) */
|
89
107
|
#endif /* LINUX_VERSION_CODE */
|
90
108
|
#ifndef __GLIBC__
|
@@ -167,6 +185,22 @@
|
|
167
185
|
#define GRPC_POSIX_SOCKET 1
|
168
186
|
#define GRPC_POSIX_SOCKETUTILS 1
|
169
187
|
#define GRPC_POSIX_WAKEUP_FD 1
|
188
|
+
#elif defined(GPR_FUCHSIA)
|
189
|
+
#define GRPC_HAVE_IFADDRS 1
|
190
|
+
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
|
191
|
+
#define GRPC_HAVE_IP_PKTINFO 1
|
192
|
+
// Zircon does not support the MSG_NOSIGNAL flag since it doesn't support
|
193
|
+
// signals.
|
194
|
+
#undef GRPC_HAVE_MSG_NOSIGNAL
|
195
|
+
#define GRPC_HAVE_UNIX_SOCKET 1
|
196
|
+
#define GRPC_POSIX_WAKEUP_FD 1
|
197
|
+
// TODO(rudominer) Check that this does something we want.
|
198
|
+
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
199
|
+
#define GRPC_POSIX_SOCKET 1
|
200
|
+
#define GRPC_POSIX_SOCKETADDR 1
|
201
|
+
// TODO(rudominer) Check this does something we want.
|
202
|
+
#define GRPC_POSIX_SOCKETUTILS 1
|
203
|
+
#define GRPC_TIMER_USE_GENERIC 1
|
170
204
|
#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
|
171
205
|
#error "Platform not recognized"
|
172
206
|
#endif
|
@@ -184,6 +218,7 @@
|
|
184
218
|
#define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
|
185
219
|
#define GRPC_POSIX_SOCKET_EV_POLL 1
|
186
220
|
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
|
221
|
+
#define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
|
187
222
|
#define GRPC_POSIX_SOCKET_IOMGR 1
|
188
223
|
#define GRPC_POSIX_SOCKET_RESOLVE_ADDRESS 1
|
189
224
|
#define GRPC_POSIX_SOCKET_SOCKADDR 1
|
@@ -105,7 +105,7 @@ static grpc_error* posix_blocking_resolve_address(
|
|
105
105
|
grpc_error_set_str(
|
106
106
|
grpc_error_set_str(
|
107
107
|
grpc_error_set_int(
|
108
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
108
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING(gai_strerror(s)),
|
109
109
|
GRPC_ERROR_INT_ERRNO, s),
|
110
110
|
GRPC_ERROR_STR_OS_ERROR,
|
111
111
|
grpc_slice_from_static_string(gai_strerror(s))),
|
@@ -150,7 +150,7 @@ typedef struct {
|
|
150
150
|
void* arg;
|
151
151
|
} request;
|
152
152
|
|
153
|
-
/* Callback to be passed to
|
153
|
+
/* Callback to be passed to grpc Executor to asynch-ify
|
154
154
|
* grpc_blocking_resolve_address */
|
155
155
|
static void do_request_thread(void* rp, grpc_error* error) {
|
156
156
|
request* r = static_cast<request*>(rp);
|
@@ -168,7 +168,8 @@ static void posix_resolve_address(const char* name, const char* default_port,
|
|
168
168
|
request* r = static_cast<request*>(gpr_malloc(sizeof(request)));
|
169
169
|
GRPC_CLOSURE_INIT(
|
170
170
|
&r->request_closure, do_request_thread, r,
|
171
|
-
|
171
|
+
grpc_core::Executor::Scheduler(grpc_core::ExecutorType::RESOLVER,
|
172
|
+
grpc_core::ExecutorJobType::SHORT));
|
172
173
|
r->name = gpr_strdup(name);
|
173
174
|
r->default_port = gpr_strdup(default_port);
|
174
175
|
r->on_done = on_done;
|
@@ -153,7 +153,8 @@ static void windows_resolve_address(const char* name, const char* default_port,
|
|
153
153
|
request* r = (request*)gpr_malloc(sizeof(request));
|
154
154
|
GRPC_CLOSURE_INIT(
|
155
155
|
&r->request_closure, do_request_thread, r,
|
156
|
-
|
156
|
+
grpc_core::Executor::Scheduler(grpc_core::ExecutorType::RESOLVER,
|
157
|
+
grpc_core::ExecutorJobType::SHORT));
|
157
158
|
r->name = gpr_strdup(name);
|
158
159
|
r->default_port = gpr_strdup(default_port);
|
159
160
|
r->on_done = on_done;
|
@@ -32,6 +32,7 @@
|
|
32
32
|
|
33
33
|
#include "src/core/lib/gpr/useful.h"
|
34
34
|
#include "src/core/lib/iomgr/combiner.h"
|
35
|
+
#include "src/core/lib/slice/slice_internal.h"
|
35
36
|
|
36
37
|
grpc_core::TraceFlag grpc_resource_quota_trace(false, "resource_quota");
|
37
38
|
|
@@ -316,7 +317,7 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
|
|
316
317
|
while ((resource_user = rulist_pop_head(resource_quota,
|
317
318
|
GRPC_RULIST_AWAITING_ALLOCATION))) {
|
318
319
|
gpr_mu_lock(&resource_user->mu);
|
319
|
-
if (grpc_resource_quota_trace
|
320
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
320
321
|
gpr_log(GPR_INFO,
|
321
322
|
"RQ: check allocation for user %p shutdown=%" PRIdPTR
|
322
323
|
" free_pool=%" PRId64,
|
@@ -342,14 +343,14 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
|
|
342
343
|
resource_user->free_pool = 0;
|
343
344
|
resource_quota->free_pool -= amt;
|
344
345
|
rq_update_estimate(resource_quota);
|
345
|
-
if (grpc_resource_quota_trace
|
346
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
346
347
|
gpr_log(GPR_INFO,
|
347
348
|
"RQ %s %s: grant alloc %" PRId64
|
348
349
|
" bytes; rq_free_pool -> %" PRId64,
|
349
350
|
resource_quota->name, resource_user->name, amt,
|
350
351
|
resource_quota->free_pool);
|
351
352
|
}
|
352
|
-
} else if (grpc_resource_quota_trace
|
353
|
+
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace) &&
|
353
354
|
resource_user->free_pool >= 0) {
|
354
355
|
gpr_log(GPR_INFO, "RQ %s %s: discard already satisfied alloc request",
|
355
356
|
resource_quota->name, resource_user->name);
|
@@ -381,7 +382,7 @@ static bool rq_reclaim_from_per_user_free_pool(
|
|
381
382
|
resource_user->free_pool = 0;
|
382
383
|
resource_quota->free_pool += amt;
|
383
384
|
rq_update_estimate(resource_quota);
|
384
|
-
if (grpc_resource_quota_trace
|
385
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
385
386
|
gpr_log(GPR_INFO,
|
386
387
|
"RQ %s %s: reclaim_from_per_user_free_pool %" PRId64
|
387
388
|
" bytes; rq_free_pool -> %" PRId64,
|
@@ -391,7 +392,7 @@ static bool rq_reclaim_from_per_user_free_pool(
|
|
391
392
|
gpr_mu_unlock(&resource_user->mu);
|
392
393
|
return true;
|
393
394
|
} else {
|
394
|
-
if (grpc_resource_quota_trace
|
395
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
395
396
|
gpr_log(GPR_INFO,
|
396
397
|
"RQ %s %s: failed to reclaim_from_per_user_free_pool; "
|
397
398
|
"free_pool = %" PRId64 "; rq_free_pool = %" PRId64,
|
@@ -411,7 +412,7 @@ static bool rq_reclaim(grpc_resource_quota* resource_quota, bool destructive) {
|
|
411
412
|
: GRPC_RULIST_RECLAIMER_BENIGN;
|
412
413
|
grpc_resource_user* resource_user = rulist_pop_head(resource_quota, list);
|
413
414
|
if (resource_user == nullptr) return false;
|
414
|
-
if (grpc_resource_quota_trace
|
415
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
415
416
|
gpr_log(GPR_INFO, "RQ %s %s: initiate %s reclamation", resource_quota->name,
|
416
417
|
resource_user->name, destructive ? "destructive" : "benign");
|
417
418
|
}
|
@@ -430,41 +431,43 @@ static bool rq_reclaim(grpc_resource_quota* resource_quota, bool destructive) {
|
|
430
431
|
* ru_slice: a slice implementation that is backed by a grpc_resource_user
|
431
432
|
*/
|
432
433
|
|
433
|
-
|
434
|
-
grpc_slice_refcount base;
|
435
|
-
gpr_refcount refs;
|
436
|
-
grpc_resource_user* resource_user;
|
437
|
-
size_t size;
|
438
|
-
} ru_slice_refcount;
|
434
|
+
namespace grpc_core {
|
439
435
|
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
static void ru_slice_unref(void* p) {
|
446
|
-
ru_slice_refcount* rc = static_cast<ru_slice_refcount*>(p);
|
447
|
-
if (gpr_unref(&rc->refs)) {
|
448
|
-
grpc_resource_user_free(rc->resource_user, rc->size);
|
436
|
+
class RuSliceRefcount {
|
437
|
+
public:
|
438
|
+
static void Destroy(void* p) {
|
439
|
+
auto* rc = static_cast<RuSliceRefcount*>(p);
|
440
|
+
rc->~RuSliceRefcount();
|
449
441
|
gpr_free(rc);
|
450
442
|
}
|
451
|
-
|
443
|
+
RuSliceRefcount(grpc_resource_user* resource_user, size_t size)
|
444
|
+
: base_(grpc_slice_refcount::Type::REGULAR, &refs_, Destroy, this,
|
445
|
+
&base_),
|
446
|
+
resource_user_(resource_user),
|
447
|
+
size_(size) {
|
448
|
+
// Nothing to do here.
|
449
|
+
}
|
450
|
+
~RuSliceRefcount() { grpc_resource_user_free(resource_user_, size_); }
|
451
|
+
|
452
|
+
grpc_slice_refcount* base_refcount() { return &base_; }
|
452
453
|
|
453
|
-
|
454
|
-
|
455
|
-
|
454
|
+
private:
|
455
|
+
grpc_slice_refcount base_;
|
456
|
+
RefCount refs_;
|
457
|
+
grpc_resource_user* resource_user_;
|
458
|
+
size_t size_;
|
459
|
+
};
|
460
|
+
|
461
|
+
} // namespace grpc_core
|
456
462
|
|
457
463
|
static grpc_slice ru_slice_create(grpc_resource_user* resource_user,
|
458
464
|
size_t size) {
|
459
|
-
|
460
|
-
gpr_malloc(sizeof(
|
461
|
-
rc
|
462
|
-
rc->base.sub_refcount = &rc->base;
|
463
|
-
gpr_ref_init(&rc->refs, 1);
|
464
|
-
rc->resource_user = resource_user;
|
465
|
-
rc->size = size;
|
465
|
+
auto* rc = static_cast<grpc_core::RuSliceRefcount*>(
|
466
|
+
gpr_malloc(sizeof(grpc_core::RuSliceRefcount) + size));
|
467
|
+
new (rc) grpc_core::RuSliceRefcount(resource_user, size);
|
466
468
|
grpc_slice slice;
|
467
|
-
|
469
|
+
|
470
|
+
slice.refcount = rc->base_refcount();
|
468
471
|
slice.data.refcounted.bytes = reinterpret_cast<uint8_t*>(rc + 1);
|
469
472
|
slice.data.refcounted.length = size;
|
470
473
|
return slice;
|
@@ -540,7 +543,7 @@ static void ru_post_destructive_reclaimer(void* ru, grpc_error* error) {
|
|
540
543
|
}
|
541
544
|
|
542
545
|
static void ru_shutdown(void* ru, grpc_error* error) {
|
543
|
-
if (grpc_resource_quota_trace
|
546
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
544
547
|
gpr_log(GPR_INFO, "RU shutdown %p", ru);
|
545
548
|
}
|
546
549
|
grpc_resource_user* resource_user = static_cast<grpc_resource_user*>(ru);
|
@@ -882,7 +885,7 @@ static void resource_user_alloc_locked(grpc_resource_user* resource_user,
|
|
882
885
|
grpc_closure* optional_on_done) {
|
883
886
|
ru_ref_by(resource_user, static_cast<gpr_atm>(size));
|
884
887
|
resource_user->free_pool -= static_cast<int64_t>(size);
|
885
|
-
if (grpc_resource_quota_trace
|
888
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
886
889
|
gpr_log(GPR_INFO, "RQ %s %s: alloc %" PRIdPTR "; free_pool -> %" PRId64,
|
887
890
|
resource_user->resource_quota->name, resource_user->name, size,
|
888
891
|
resource_user->free_pool);
|
@@ -941,7 +944,7 @@ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
|
|
941
944
|
GPR_ASSERT(prior >= static_cast<long>(size));
|
942
945
|
bool was_zero_or_negative = resource_user->free_pool <= 0;
|
943
946
|
resource_user->free_pool += static_cast<int64_t>(size);
|
944
|
-
if (grpc_resource_quota_trace
|
947
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
945
948
|
gpr_log(GPR_INFO, "RQ %s %s: free %" PRIdPTR "; free_pool -> %" PRId64,
|
946
949
|
resource_user->resource_quota->name, resource_user->name, size,
|
947
950
|
resource_user->free_pool);
|
@@ -967,7 +970,7 @@ void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
|
|
967
970
|
}
|
968
971
|
|
969
972
|
void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user) {
|
970
|
-
if (grpc_resource_quota_trace
|
973
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
971
974
|
gpr_log(GPR_INFO, "RQ %s %s: reclamation complete",
|
972
975
|
resource_user->resource_quota->name, resource_user->name);
|
973
976
|
}
|
@@ -30,7 +30,11 @@
|
|
30
30
|
#include <fcntl.h>
|
31
31
|
#include <limits.h>
|
32
32
|
#include <netinet/in.h>
|
33
|
+
#ifdef GRPC_LINUX_TCP_H
|
34
|
+
#include <linux/tcp.h>
|
35
|
+
#else
|
33
36
|
#include <netinet/tcp.h>
|
37
|
+
#endif
|
34
38
|
#include <stdio.h>
|
35
39
|
#include <string.h>
|
36
40
|
#include <sys/socket.h>
|
@@ -288,7 +292,7 @@ grpc_error* grpc_set_socket_tcp_user_timeout(
|
|
288
292
|
}
|
289
293
|
if (enable) {
|
290
294
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
291
|
-
if (grpc_tcp_trace
|
295
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
292
296
|
gpr_log(GPR_INFO, "Enabling TCP_USER_TIMEOUT with a timeout of %d ms",
|
293
297
|
timeout);
|
294
298
|
}
|
@@ -311,7 +315,7 @@ grpc_error* grpc_set_socket_tcp_user_timeout(
|
|
311
315
|
}
|
312
316
|
#else
|
313
317
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
314
|
-
if (grpc_tcp_trace
|
318
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
315
319
|
gpr_log(GPR_INFO, "TCP_USER_TIMEOUT not supported for this platform");
|
316
320
|
}
|
317
321
|
#endif /* GRPC_HAVE_TCP_USER_TIMEOUT */
|
@@ -39,6 +39,8 @@
|
|
39
39
|
#include "src/core/lib/iomgr/sockaddr_windows.h"
|
40
40
|
#include "src/core/lib/iomgr/socket_windows.h"
|
41
41
|
|
42
|
+
static DWORD s_wsa_socket_flags;
|
43
|
+
|
42
44
|
grpc_winsocket* grpc_winsocket_create(SOCKET socket, const char* name) {
|
43
45
|
char* final_name;
|
44
46
|
grpc_winsocket* r = (grpc_winsocket*)gpr_malloc(sizeof(grpc_winsocket));
|
@@ -181,4 +183,21 @@ int grpc_ipv6_loopback_available(void) {
|
|
181
183
|
return g_ipv6_loopback_available;
|
182
184
|
}
|
183
185
|
|
186
|
+
DWORD grpc_get_default_wsa_socket_flags() { return s_wsa_socket_flags; }
|
187
|
+
|
188
|
+
void grpc_wsa_socket_flags_init() {
|
189
|
+
s_wsa_socket_flags = WSA_FLAG_OVERLAPPED;
|
190
|
+
/* WSA_FLAG_NO_HANDLE_INHERIT may be not supported on the older Windows
|
191
|
+
versions, see
|
192
|
+
https://msdn.microsoft.com/en-us/library/windows/desktop/ms742212(v=vs.85).aspx
|
193
|
+
for details. */
|
194
|
+
SOCKET sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
|
195
|
+
s_wsa_socket_flags | WSA_FLAG_NO_HANDLE_INHERIT);
|
196
|
+
if (sock != INVALID_SOCKET) {
|
197
|
+
/* Windows 7, Windows 2008 R2 with SP1 or later */
|
198
|
+
s_wsa_socket_flags |= WSA_FLAG_NO_HANDLE_INHERIT;
|
199
|
+
closesocket(sock);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
184
203
|
#endif /* GRPC_WINSOCK_SOCKET */
|
@@ -32,6 +32,10 @@
|
|
32
32
|
#include "src/core/lib/iomgr/closure.h"
|
33
33
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
34
34
|
|
35
|
+
#ifndef WSA_FLAG_NO_HANDLE_INHERIT
|
36
|
+
#define WSA_FLAG_NO_HANDLE_INHERIT 0x80
|
37
|
+
#endif
|
38
|
+
|
35
39
|
/* This holds the data for an outstanding read or write on a socket.
|
36
40
|
The mutex to protect the concurrent access to that data is the one
|
37
41
|
inside the winsocket wrapper. */
|
@@ -114,6 +118,10 @@ void grpc_socket_become_ready(grpc_winsocket* winsocket,
|
|
114
118
|
The value is probed once, and cached for the life of the process. */
|
115
119
|
int grpc_ipv6_loopback_available(void);
|
116
120
|
|
121
|
+
void grpc_wsa_socket_flags_init();
|
122
|
+
|
123
|
+
DWORD grpc_get_default_wsa_socket_flags();
|
124
|
+
|
117
125
|
#endif
|
118
126
|
|
119
127
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_WINDOWS_H */
|