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
@@ -115,15 +115,21 @@
|
|
115
115
|
#define GPR_POSIX_SUBPROCESS 1
|
116
116
|
#define GPR_POSIX_SYNC 1
|
117
117
|
#define GPR_POSIX_TIME 1
|
118
|
+
#define GPR_HAS_PTHREAD_H 1
|
118
119
|
#define GPR_GETPID_IN_UNISTD_H 1
|
119
120
|
#ifdef _LP64
|
120
121
|
#define GPR_ARCH_64 1
|
121
122
|
#else /* _LP64 */
|
122
123
|
#define GPR_ARCH_32 1
|
123
124
|
#endif /* _LP64 */
|
125
|
+
#include <linux/version.h>
|
124
126
|
#elif defined(ANDROID) || defined(__ANDROID__)
|
125
127
|
#define GPR_PLATFORM_STRING "android"
|
126
128
|
#define GPR_ANDROID 1
|
129
|
+
// TODO(apolcyn): re-evaluate support for c-ares
|
130
|
+
// on android after upgrading our c-ares dependency.
|
131
|
+
// See https://github.com/grpc/grpc/issues/18038.
|
132
|
+
#define GRPC_ARES 0
|
127
133
|
#ifdef _LP64
|
128
134
|
#define GPR_ARCH_64 1
|
129
135
|
#else /* _LP64 */
|
@@ -139,6 +145,7 @@
|
|
139
145
|
#define GPR_POSIX_SUBPROCESS 1
|
140
146
|
#define GPR_POSIX_SYNC 1
|
141
147
|
#define GPR_POSIX_TIME 1
|
148
|
+
#define GPR_HAS_PTHREAD_H 1
|
142
149
|
#define GPR_GETPID_IN_UNISTD_H 1
|
143
150
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
144
151
|
#elif defined(__linux__)
|
@@ -165,6 +172,7 @@
|
|
165
172
|
#define GPR_POSIX_SUBPROCESS 1
|
166
173
|
#define GPR_POSIX_SYNC 1
|
167
174
|
#define GPR_POSIX_TIME 1
|
175
|
+
#define GPR_HAS_PTHREAD_H 1
|
168
176
|
#define GPR_GETPID_IN_UNISTD_H 1
|
169
177
|
#ifdef _LP64
|
170
178
|
#define GPR_ARCH_64 1
|
@@ -188,6 +196,9 @@
|
|
188
196
|
#define GPR_PLATFORM_STRING "ios"
|
189
197
|
#define GPR_CPU_IPHONE 1
|
190
198
|
#define GPR_PTHREAD_TLS 1
|
199
|
+
#define GRPC_CFSTREAM 1
|
200
|
+
/* the c-ares resolver isnt safe to enable on iOS */
|
201
|
+
#define GRPC_ARES 0
|
191
202
|
#else /* TARGET_OS_IPHONE */
|
192
203
|
#define GPR_PLATFORM_STRING "osx"
|
193
204
|
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
|
@@ -227,8 +238,8 @@
|
|
227
238
|
#define GPR_POSIX_SUBPROCESS 1
|
228
239
|
#define GPR_POSIX_SYNC 1
|
229
240
|
#define GPR_POSIX_TIME 1
|
241
|
+
#define GPR_HAS_PTHREAD_H 1
|
230
242
|
#define GPR_GETPID_IN_UNISTD_H 1
|
231
|
-
/* TODO(mxyan): Remove when CFStream becomes default */
|
232
243
|
#ifndef GRPC_CFSTREAM
|
233
244
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
234
245
|
#endif
|
@@ -253,6 +264,7 @@
|
|
253
264
|
#define GPR_POSIX_SUBPROCESS 1
|
254
265
|
#define GPR_POSIX_SYNC 1
|
255
266
|
#define GPR_POSIX_TIME 1
|
267
|
+
#define GPR_HAS_PTHREAD_H 1
|
256
268
|
#define GPR_GETPID_IN_UNISTD_H 1
|
257
269
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
258
270
|
#ifdef _LP64
|
@@ -276,6 +288,7 @@
|
|
276
288
|
#define GPR_POSIX_SUBPROCESS 1
|
277
289
|
#define GPR_POSIX_SYNC 1
|
278
290
|
#define GPR_POSIX_TIME 1
|
291
|
+
#define GPR_HAS_PTHREAD_H 1
|
279
292
|
#define GPR_GETPID_IN_UNISTD_H 1
|
280
293
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
281
294
|
#ifdef _LP64
|
@@ -296,6 +309,7 @@
|
|
296
309
|
#define GPR_POSIX_SUBPROCESS 1
|
297
310
|
#define GPR_POSIX_SYNC 1
|
298
311
|
#define GPR_POSIX_TIME 1
|
312
|
+
#define GPR_HAS_PTHREAD_H 1
|
299
313
|
#define GPR_GETPID_IN_UNISTD_H 1
|
300
314
|
#ifdef _LP64
|
301
315
|
#define GPR_ARCH_64 1
|
@@ -318,6 +332,7 @@
|
|
318
332
|
#define GPR_POSIX_SUBPROCESS 1
|
319
333
|
#define GPR_POSIX_SYNC 1
|
320
334
|
#define GPR_POSIX_TIME 1
|
335
|
+
#define GPR_HAS_PTHREAD_H 1
|
321
336
|
#define GPR_GETPID_IN_UNISTD_H 1
|
322
337
|
#ifdef _LP64
|
323
338
|
#define GPR_ARCH_64 1
|
@@ -346,12 +361,34 @@
|
|
346
361
|
#define GPR_POSIX_SUBPROCESS 1
|
347
362
|
#define GPR_POSIX_SYNC 1
|
348
363
|
#define GPR_POSIX_TIME 1
|
364
|
+
#define GPR_HAS_PTHREAD_H 1
|
349
365
|
#define GPR_GETPID_IN_UNISTD_H 1
|
350
366
|
#ifdef _LP64
|
351
367
|
#define GPR_ARCH_64 1
|
352
368
|
#else /* _LP64 */
|
353
369
|
#define GPR_ARCH_32 1
|
354
370
|
#endif /* _LP64 */
|
371
|
+
#elif defined(__Fuchsia__)
|
372
|
+
#define GPR_FUCHSIA 1
|
373
|
+
#define GPR_ARCH_64 1
|
374
|
+
#define GPR_PLATFORM_STRING "fuchsia"
|
375
|
+
#include <features.h>
|
376
|
+
// Specifying musl libc affects wrap_memcpy.c. It causes memmove() to be
|
377
|
+
// invoked.
|
378
|
+
#define GPR_MUSL_LIBC_COMPAT 1
|
379
|
+
#define GPR_CPU_POSIX 1
|
380
|
+
#define GPR_GCC_ATOMIC 1
|
381
|
+
#define GPR_PTHREAD_TLS 1
|
382
|
+
#define GPR_POSIX_LOG 1
|
383
|
+
#define GPR_POSIX_SYNC 1
|
384
|
+
#define GPR_POSIX_ENV 1
|
385
|
+
#define GPR_POSIX_TMPFILE 1
|
386
|
+
#define GPR_POSIX_SUBPROCESS 1
|
387
|
+
#define GPR_POSIX_SYNC 1
|
388
|
+
#define GPR_POSIX_STRING 1
|
389
|
+
#define GPR_POSIX_TIME 1
|
390
|
+
#define GPR_HAS_PTHREAD_H 1
|
391
|
+
#define GPR_GETPID_IN_UNISTD_H 1
|
355
392
|
#else
|
356
393
|
#error "Could not auto-detect platform"
|
357
394
|
#endif
|
@@ -465,6 +502,10 @@ typedef unsigned __int64 uint64_t;
|
|
465
502
|
#define GRPC_ARES 1
|
466
503
|
#endif
|
467
504
|
|
505
|
+
#ifndef GRPC_IF_NAMETOINDEX
|
506
|
+
#define GRPC_IF_NAMETOINDEX 1
|
507
|
+
#endif
|
508
|
+
|
468
509
|
#ifndef GRPC_MUST_USE_RESULT
|
469
510
|
#if defined(__GNUC__) && !defined(__MINGW32__)
|
470
511
|
#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
|
@@ -515,12 +556,47 @@ typedef unsigned __int64 uint64_t;
|
|
515
556
|
#define CENSUSAPI GRPCAPI
|
516
557
|
#endif
|
517
558
|
|
559
|
+
#ifndef GPR_HAS_ATTRIBUTE
|
560
|
+
#ifdef __has_attribute
|
561
|
+
#define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
|
562
|
+
#else
|
563
|
+
#define GPR_HAS_ATTRIBUTE(a) 0
|
564
|
+
#endif
|
565
|
+
#endif /* GPR_HAS_ATTRIBUTE */
|
566
|
+
|
567
|
+
#ifndef GPR_HAS_FEATURE
|
568
|
+
#ifdef __has_feature
|
569
|
+
#define GPR_HAS_FEATURE(a) __has_feature(a)
|
570
|
+
#else
|
571
|
+
#define GPR_HAS_FEATURE(a) 0
|
572
|
+
#endif
|
573
|
+
#endif /* GPR_HAS_FEATURE */
|
574
|
+
|
575
|
+
#ifndef GPR_ATTRIBUTE_NOINLINE
|
576
|
+
#if GPR_HAS_ATTRIBUTE(noinline) || (defined(__GNUC__) && !defined(__clang__))
|
577
|
+
#define GPR_ATTRIBUTE_NOINLINE __attribute__((noinline))
|
578
|
+
#define GPR_HAS_ATTRIBUTE_NOINLINE 1
|
579
|
+
#else
|
580
|
+
#define GPR_ATTRIBUTE_NOINLINE
|
581
|
+
#endif
|
582
|
+
#endif /* GPR_ATTRIBUTE_NOINLINE */
|
583
|
+
|
584
|
+
#ifndef GPR_ATTRIBUTE_WEAK
|
585
|
+
/* Attribute weak is broken on LLVM/windows:
|
586
|
+
* https://bugs.llvm.org/show_bug.cgi?id=37598 */
|
587
|
+
#if (GPR_HAS_ATTRIBUTE(weak) || (defined(__GNUC__) && !defined(__clang__))) && \
|
588
|
+
!(defined(__llvm__) && defined(_WIN32))
|
589
|
+
#define GPR_ATTRIBUTE_WEAK __attribute__((weak))
|
590
|
+
#define GPR_HAS_ATTRIBUTE_WEAK 1
|
591
|
+
#else
|
592
|
+
#define GPR_ATTRIBUTE_WEAK
|
593
|
+
#endif
|
594
|
+
#endif /* GPR_ATTRIBUTE_WEAK */
|
595
|
+
|
518
596
|
#ifndef GPR_ATTRIBUTE_NO_TSAN /* (1) */
|
519
|
-
#if
|
520
|
-
#if __has_feature(thread_sanitizer)
|
597
|
+
#if GPR_HAS_FEATURE(thread_sanitizer)
|
521
598
|
#define GPR_ATTRIBUTE_NO_TSAN __attribute__((no_sanitize("thread")))
|
522
|
-
#endif /*
|
523
|
-
#endif /* defined(__has_feature) */
|
599
|
+
#endif /* GPR_HAS_FEATURE */
|
524
600
|
#ifndef GPR_ATTRIBUTE_NO_TSAN /* (2) */
|
525
601
|
#define GPR_ATTRIBUTE_NO_TSAN
|
526
602
|
#endif /* GPR_ATTRIBUTE_NO_TSAN (2) */
|
@@ -529,10 +605,15 @@ typedef unsigned __int64 uint64_t;
|
|
529
605
|
/* GRPC_TSAN_ENABLED will be defined, when compiled with thread sanitizer. */
|
530
606
|
#if defined(__SANITIZE_THREAD__)
|
531
607
|
#define GRPC_TSAN_ENABLED
|
532
|
-
#elif
|
533
|
-
#if __has_feature(thread_sanitizer)
|
608
|
+
#elif GPR_HAS_FEATURE(thread_sanitizer)
|
534
609
|
#define GRPC_TSAN_ENABLED
|
535
610
|
#endif
|
611
|
+
|
612
|
+
/* GRPC_ASAN_ENABLED will be defined, when compiled with address sanitizer. */
|
613
|
+
#if defined(__SANITIZE_ADDRESS__)
|
614
|
+
#define GRPC_ASAN_ENABLED
|
615
|
+
#elif GPR_HAS_FEATURE(address_sanitizer)
|
616
|
+
#define GRPC_ASAN_ENABLED
|
536
617
|
#endif
|
537
618
|
|
538
619
|
/* GRPC_ALLOW_EXCEPTIONS should be 0 or 1 if exceptions are allowed or not */
|
@@ -40,27 +40,6 @@ typedef struct grpc_slice grpc_slice;
|
|
40
40
|
reference ownership semantics (who should call unref?) and mutability
|
41
41
|
constraints (is the callee allowed to modify the slice?) */
|
42
42
|
|
43
|
-
typedef struct grpc_slice_refcount_vtable {
|
44
|
-
void (*ref)(void*);
|
45
|
-
void (*unref)(void*);
|
46
|
-
int (*eq)(grpc_slice a, grpc_slice b);
|
47
|
-
uint32_t (*hash)(grpc_slice slice);
|
48
|
-
} grpc_slice_refcount_vtable;
|
49
|
-
|
50
|
-
/** Reference count container for grpc_slice. Contains function pointers to
|
51
|
-
increment and decrement reference counts. Implementations should cleanup
|
52
|
-
when the reference count drops to zero.
|
53
|
-
Typically client code should not touch this, and use grpc_slice_malloc,
|
54
|
-
grpc_slice_new, or grpc_slice_new_with_len instead. */
|
55
|
-
typedef struct grpc_slice_refcount {
|
56
|
-
const grpc_slice_refcount_vtable* vtable;
|
57
|
-
/** If a subset of this slice is taken, use this pointer for the refcount.
|
58
|
-
Typically points back to the refcount itself, however iterning
|
59
|
-
implementations can use this to avoid a verification step on each hash
|
60
|
-
or equality check */
|
61
|
-
struct grpc_slice_refcount* sub_refcount;
|
62
|
-
} grpc_slice_refcount;
|
63
|
-
|
64
43
|
/* Inlined half of grpc_slice is allowed to expand the size of the overall type
|
65
44
|
by this many bytes */
|
66
45
|
#define GRPC_SLICE_INLINE_EXTRA_SIZE sizeof(void*)
|
@@ -68,6 +47,7 @@ typedef struct grpc_slice_refcount {
|
|
68
47
|
#define GRPC_SLICE_INLINED_SIZE \
|
69
48
|
(sizeof(size_t) + sizeof(uint8_t*) - 1 + GRPC_SLICE_INLINE_EXTRA_SIZE)
|
70
49
|
|
50
|
+
struct grpc_slice_refcount;
|
71
51
|
/** A grpc_slice s, if initialized, represents the byte range
|
72
52
|
s.bytes[0..s.length-1].
|
73
53
|
|
@@ -81,8 +61,8 @@ struct grpc_slice {
|
|
81
61
|
struct grpc_slice_refcount* refcount;
|
82
62
|
union grpc_slice_data {
|
83
63
|
struct grpc_slice_refcounted {
|
84
|
-
uint8_t* bytes;
|
85
64
|
size_t length;
|
65
|
+
uint8_t* bytes;
|
86
66
|
} refcounted;
|
87
67
|
struct grpc_slice_inlined {
|
88
68
|
uint8_t length;
|
@@ -128,7 +128,8 @@ typedef enum {
|
|
128
128
|
|
129
129
|
/** The service is currently unavailable. This is a most likely a
|
130
130
|
transient condition and may be corrected by retrying with
|
131
|
-
a backoff.
|
131
|
+
a backoff. Note that it is not always safe to retry non-idempotent
|
132
|
+
operations.
|
132
133
|
|
133
134
|
WARNING: Although data MIGHT not have been transmitted when this
|
134
135
|
status occurs, there is NOT A GUARANTEE that the server has not seen
|
@@ -25,8 +25,26 @@
|
|
25
25
|
|
26
26
|
#include <pthread.h>
|
27
27
|
|
28
|
+
#ifdef GRPC_ASAN_ENABLED
|
29
|
+
/* The member |leak_checker| is used to check whether there is a memory leak
|
30
|
+
* caused by upper layer logic that's missing the |gpr_xx_destroy| call
|
31
|
+
* to the object before freeing it.
|
32
|
+
* This issue was reported at https://github.com/grpc/grpc/issues/17563
|
33
|
+
* and discussed at https://github.com/grpc/grpc/pull/17586
|
34
|
+
*/
|
35
|
+
typedef struct {
|
36
|
+
pthread_mutex_t mutex;
|
37
|
+
int* leak_checker;
|
38
|
+
} gpr_mu;
|
39
|
+
|
40
|
+
typedef struct {
|
41
|
+
pthread_cond_t cond_var;
|
42
|
+
int* leak_checker;
|
43
|
+
} gpr_cv;
|
44
|
+
#else
|
28
45
|
typedef pthread_mutex_t gpr_mu;
|
29
46
|
typedef pthread_cond_t gpr_cv;
|
47
|
+
#endif
|
30
48
|
typedef pthread_once_t gpr_once;
|
31
49
|
|
32
50
|
#define GPR_ONCE_INIT PTHREAD_ONCE_INIT
|
data/include/grpc/slice.h
CHANGED
@@ -107,7 +107,7 @@ GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end);
|
|
107
107
|
|
108
108
|
/** Splits s into two: modifies s to be s[0:split], and returns a new slice,
|
109
109
|
sharing a refcount with s, that contains s[split:s.length].
|
110
|
-
Requires s
|
110
|
+
Requires s initialized, split <= s.length */
|
111
111
|
GPRAPI grpc_slice grpc_slice_split_tail(grpc_slice* s, size_t split);
|
112
112
|
|
113
113
|
typedef enum {
|
@@ -124,7 +124,7 @@ GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice* s, size_t split,
|
|
124
124
|
|
125
125
|
/** Splits s into two: modifies s to be s[split:s.length], and returns a new
|
126
126
|
slice, sharing a refcount with s, that contains s[0:split].
|
127
|
-
Requires s
|
127
|
+
Requires s initialized, split <= s.length */
|
128
128
|
GPRAPI grpc_slice grpc_slice_split_head(grpc_slice* s, size_t split);
|
129
129
|
|
130
130
|
GPRAPI grpc_slice grpc_empty_slice(void);
|
@@ -147,7 +147,7 @@ GPRAPI int grpc_slice_buf_start_eq(grpc_slice a, const void* b, size_t blen);
|
|
147
147
|
GPRAPI int grpc_slice_rchr(grpc_slice s, char c);
|
148
148
|
GPRAPI int grpc_slice_chr(grpc_slice s, char c);
|
149
149
|
|
150
|
-
/** return the index of the first
|
150
|
+
/** return the index of the first occurrence of \a needle in \a haystack, or -1
|
151
151
|
if it's not found */
|
152
152
|
GPRAPI int grpc_slice_slice(grpc_slice haystack, grpc_slice needle);
|
153
153
|
|
@@ -25,8 +25,8 @@
|
|
25
25
|
#include <grpc/support/log.h>
|
26
26
|
#include <grpc/support/sync.h>
|
27
27
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
28
|
-
#include "src/core/lib/gpr/env.h"
|
29
28
|
#include "src/core/lib/gpr/string.h"
|
29
|
+
#include "src/core/lib/gprpp/global_config.h"
|
30
30
|
#include "src/core/lib/iomgr/error.h"
|
31
31
|
#include "src/core/lib/iomgr/pollset.h"
|
32
32
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -56,21 +56,27 @@ static backup_poller* g_poller = nullptr; // guarded by g_poller_mu
|
|
56
56
|
// treated as const.
|
57
57
|
static int g_poll_interval_ms = DEFAULT_POLL_INTERVAL_MS;
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
59
|
+
GPR_GLOBAL_CONFIG_DEFINE_INT32(
|
60
|
+
grpc_client_channel_backup_poll_interval_ms, DEFAULT_POLL_INTERVAL_MS,
|
61
|
+
"Declares the interval in ms between two backup polls on client channels. "
|
62
|
+
"These polls are run in the timer thread so that gRPC can process "
|
63
|
+
"connection failures while there is no active polling thread. "
|
64
|
+
"They help reconnect disconnected client channels (mostly due to "
|
65
|
+
"idleness), so that the next RPC on this channel won't fail. Set to 0 to "
|
66
|
+
"turn off the backup polls.");
|
67
|
+
|
68
|
+
void grpc_client_channel_global_init_backup_polling() {
|
69
|
+
gpr_once_init(&g_once, [] { gpr_mu_init(&g_poller_mu); });
|
70
|
+
int32_t poll_interval_ms =
|
71
|
+
GPR_GLOBAL_CONFIG_GET(grpc_client_channel_backup_poll_interval_ms);
|
72
|
+
if (poll_interval_ms < 0) {
|
73
|
+
gpr_log(GPR_ERROR,
|
74
|
+
"Invalid GRPC_CLIENT_CHANNEL_BACKUP_POLL_INTERVAL_MS: %d, "
|
75
|
+
"default value %d will be used.",
|
76
|
+
poll_interval_ms, g_poll_interval_ms);
|
77
|
+
} else {
|
78
|
+
g_poll_interval_ms = poll_interval_ms;
|
72
79
|
}
|
73
|
-
gpr_free(env);
|
74
80
|
}
|
75
81
|
|
76
82
|
static void backup_poller_shutdown_unref(backup_poller* p) {
|
@@ -147,7 +153,6 @@ static void g_poller_init_locked() {
|
|
147
153
|
|
148
154
|
void grpc_client_channel_start_backup_polling(
|
149
155
|
grpc_pollset_set* interested_parties) {
|
150
|
-
gpr_once_init(&g_once, init_globals);
|
151
156
|
if (g_poll_interval_ms == 0) {
|
152
157
|
return;
|
153
158
|
}
|
@@ -23,12 +23,18 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
#include "src/core/lib/channel/channel_stack.h"
|
26
|
+
#include "src/core/lib/gprpp/global_config.h"
|
26
27
|
|
27
|
-
|
28
|
+
GPR_GLOBAL_CONFIG_DECLARE_INT32(grpc_client_channel_backup_poll_interval_ms);
|
29
|
+
|
30
|
+
/* Initializes backup polling. */
|
31
|
+
void grpc_client_channel_global_init_backup_polling();
|
32
|
+
|
33
|
+
/* Starts polling \a interested_parties periodically in the timer thread. */
|
28
34
|
void grpc_client_channel_start_backup_polling(
|
29
35
|
grpc_pollset_set* interested_parties);
|
30
36
|
|
31
|
-
/*
|
37
|
+
/* Stops polling \a interested_parties. */
|
32
38
|
void grpc_client_channel_stop_backup_polling(
|
33
39
|
grpc_pollset_set* interested_parties);
|
34
40
|
|
@@ -35,6 +35,7 @@ grpc_connectivity_state grpc_channel_check_connectivity_state(
|
|
35
35
|
/* forward through to the underlying client channel */
|
36
36
|
grpc_channel_element* client_channel_elem =
|
37
37
|
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
38
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
38
39
|
grpc_core::ExecCtx exec_ctx;
|
39
40
|
grpc_connectivity_state state;
|
40
41
|
GRPC_API_TRACE(
|
@@ -124,7 +125,7 @@ static void partly_done(state_watcher* w, bool due_to_completion,
|
|
124
125
|
gpr_mu_lock(&w->mu);
|
125
126
|
|
126
127
|
if (due_to_completion) {
|
127
|
-
if (grpc_trace_operation_failures
|
128
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
|
128
129
|
GRPC_LOG_IF_ERROR("watch_completion_error", GRPC_ERROR_REF(error));
|
129
130
|
}
|
130
131
|
GRPC_ERROR_UNREF(error);
|
@@ -202,6 +203,7 @@ void grpc_channel_watch_connectivity_state(
|
|
202
203
|
gpr_timespec deadline, grpc_completion_queue* cq, void* tag) {
|
203
204
|
grpc_channel_element* client_channel_elem =
|
204
205
|
grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
|
206
|
+
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
|
205
207
|
grpc_core::ExecCtx exec_ctx;
|
206
208
|
state_watcher* w = static_cast<state_watcher*>(gpr_malloc(sizeof(*w)));
|
207
209
|
|