grpc 1.8.7 → 1.9.0.pre1
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 +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
@@ -46,14 +46,13 @@ static void grpc_proxy_mapper_list_register(grpc_proxy_mapper_list* list,
|
|
46
46
|
++list->num_mappers;
|
47
47
|
}
|
48
48
|
|
49
|
-
static bool grpc_proxy_mapper_list_map_name(
|
50
|
-
grpc_proxy_mapper_list* list,
|
49
|
+
static bool grpc_proxy_mapper_list_map_name(grpc_proxy_mapper_list* list,
|
51
50
|
const char* server_uri,
|
52
51
|
const grpc_channel_args* args,
|
53
52
|
char** name_to_resolve,
|
54
53
|
grpc_channel_args** new_args) {
|
55
54
|
for (size_t i = 0; i < list->num_mappers; ++i) {
|
56
|
-
if (grpc_proxy_mapper_map_name(
|
55
|
+
if (grpc_proxy_mapper_map_name(list->list[i], server_uri, args,
|
57
56
|
name_to_resolve, new_args)) {
|
58
57
|
return true;
|
59
58
|
}
|
@@ -62,12 +61,12 @@ static bool grpc_proxy_mapper_list_map_name(grpc_exec_ctx* exec_ctx,
|
|
62
61
|
}
|
63
62
|
|
64
63
|
static bool grpc_proxy_mapper_list_map_address(
|
65
|
-
|
66
|
-
const
|
67
|
-
|
64
|
+
grpc_proxy_mapper_list* list, const grpc_resolved_address* address,
|
65
|
+
const grpc_channel_args* args, grpc_resolved_address** new_address,
|
66
|
+
grpc_channel_args** new_args) {
|
68
67
|
for (size_t i = 0; i < list->num_mappers; ++i) {
|
69
|
-
if (grpc_proxy_mapper_map_address(
|
70
|
-
|
68
|
+
if (grpc_proxy_mapper_map_address(list->list[i], address, args, new_address,
|
69
|
+
new_args)) {
|
71
70
|
return true;
|
72
71
|
}
|
73
72
|
}
|
@@ -105,20 +104,17 @@ void grpc_proxy_mapper_register(bool at_start, grpc_proxy_mapper* mapper) {
|
|
105
104
|
grpc_proxy_mapper_list_register(&g_proxy_mapper_list, at_start, mapper);
|
106
105
|
}
|
107
106
|
|
108
|
-
bool grpc_proxy_mappers_map_name(
|
109
|
-
const char* server_uri,
|
107
|
+
bool grpc_proxy_mappers_map_name(const char* server_uri,
|
110
108
|
const grpc_channel_args* args,
|
111
109
|
char** name_to_resolve,
|
112
110
|
grpc_channel_args** new_args) {
|
113
|
-
return grpc_proxy_mapper_list_map_name(
|
114
|
-
|
115
|
-
new_args);
|
111
|
+
return grpc_proxy_mapper_list_map_name(&g_proxy_mapper_list, server_uri, args,
|
112
|
+
name_to_resolve, new_args);
|
116
113
|
}
|
117
|
-
bool grpc_proxy_mappers_map_address(
|
118
|
-
const grpc_resolved_address* address,
|
114
|
+
bool grpc_proxy_mappers_map_address(const grpc_resolved_address* address,
|
119
115
|
const grpc_channel_args* args,
|
120
116
|
grpc_resolved_address** new_address,
|
121
117
|
grpc_channel_args** new_args) {
|
122
|
-
return grpc_proxy_mapper_list_map_address(
|
123
|
-
|
118
|
+
return grpc_proxy_mapper_list_map_address(&g_proxy_mapper_list, address, args,
|
119
|
+
new_address, new_args);
|
124
120
|
}
|
@@ -21,10 +21,6 @@
|
|
21
21
|
|
22
22
|
#include "src/core/ext/filters/client_channel/proxy_mapper.h"
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
void grpc_proxy_mapper_registry_init();
|
29
25
|
void grpc_proxy_mapper_registry_shutdown();
|
30
26
|
|
@@ -33,20 +29,14 @@ void grpc_proxy_mapper_registry_shutdown();
|
|
33
29
|
/// the list. Otherwise, it will be added to the end.
|
34
30
|
void grpc_proxy_mapper_register(bool at_start, grpc_proxy_mapper* mapper);
|
35
31
|
|
36
|
-
bool grpc_proxy_mappers_map_name(
|
37
|
-
const char* server_uri,
|
32
|
+
bool grpc_proxy_mappers_map_name(const char* server_uri,
|
38
33
|
const grpc_channel_args* args,
|
39
34
|
char** name_to_resolve,
|
40
35
|
grpc_channel_args** new_args);
|
41
36
|
|
42
|
-
bool grpc_proxy_mappers_map_address(
|
43
|
-
const grpc_resolved_address* address,
|
37
|
+
bool grpc_proxy_mappers_map_address(const grpc_resolved_address* address,
|
44
38
|
const grpc_channel_args* args,
|
45
39
|
grpc_resolved_address** new_address,
|
46
40
|
grpc_channel_args** new_args);
|
47
41
|
|
48
|
-
#ifdef __cplusplus
|
49
|
-
}
|
50
|
-
#endif
|
51
|
-
|
52
42
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H */
|
@@ -46,8 +46,8 @@ void grpc_resolver_ref(grpc_resolver* resolver) {
|
|
46
46
|
}
|
47
47
|
|
48
48
|
#ifndef NDEBUG
|
49
|
-
void grpc_resolver_unref(
|
50
|
-
const char*
|
49
|
+
void grpc_resolver_unref(grpc_resolver* resolver, const char* file, int line,
|
50
|
+
const char* reason) {
|
51
51
|
if (grpc_trace_resolver_refcount.enabled()) {
|
52
52
|
gpr_atm old_refs = gpr_atm_no_barrier_load(&resolver->refs.count);
|
53
53
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
@@ -55,27 +55,25 @@ void grpc_resolver_unref(grpc_exec_ctx* exec_ctx, grpc_resolver* resolver,
|
|
55
55
|
old_refs, old_refs - 1, reason);
|
56
56
|
}
|
57
57
|
#else
|
58
|
-
void grpc_resolver_unref(
|
58
|
+
void grpc_resolver_unref(grpc_resolver* resolver) {
|
59
59
|
#endif
|
60
60
|
if (gpr_unref(&resolver->refs)) {
|
61
61
|
grpc_combiner* combiner = resolver->combiner;
|
62
|
-
resolver->vtable->destroy(
|
63
|
-
GRPC_COMBINER_UNREF(
|
62
|
+
resolver->vtable->destroy(resolver);
|
63
|
+
GRPC_COMBINER_UNREF(combiner, "resolver");
|
64
64
|
}
|
65
65
|
}
|
66
66
|
|
67
|
-
void grpc_resolver_shutdown_locked(
|
68
|
-
|
69
|
-
resolver->vtable->shutdown_locked(exec_ctx, resolver);
|
67
|
+
void grpc_resolver_shutdown_locked(grpc_resolver* resolver) {
|
68
|
+
resolver->vtable->shutdown_locked(resolver);
|
70
69
|
}
|
71
70
|
|
72
|
-
void grpc_resolver_channel_saw_error_locked(
|
73
|
-
|
74
|
-
resolver->vtable->channel_saw_error_locked(exec_ctx, resolver);
|
71
|
+
void grpc_resolver_channel_saw_error_locked(grpc_resolver* resolver) {
|
72
|
+
resolver->vtable->channel_saw_error_locked(resolver);
|
75
73
|
}
|
76
74
|
|
77
|
-
void grpc_resolver_next_locked(
|
75
|
+
void grpc_resolver_next_locked(grpc_resolver* resolver,
|
78
76
|
grpc_channel_args** result,
|
79
77
|
grpc_closure* on_complete) {
|
80
|
-
resolver->vtable->next_locked(
|
78
|
+
resolver->vtable->next_locked(resolver, result, on_complete);
|
81
79
|
}
|
@@ -22,10 +22,6 @@
|
|
22
22
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
23
23
|
#include "src/core/lib/iomgr/iomgr.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
typedef struct grpc_resolver grpc_resolver;
|
30
26
|
typedef struct grpc_resolver_vtable grpc_resolver_vtable;
|
31
27
|
|
@@ -39,43 +35,40 @@ struct grpc_resolver {
|
|
39
35
|
};
|
40
36
|
|
41
37
|
struct grpc_resolver_vtable {
|
42
|
-
void (*destroy)(
|
43
|
-
void (*shutdown_locked)(
|
44
|
-
void (*channel_saw_error_locked)(
|
45
|
-
|
46
|
-
|
47
|
-
grpc_channel_args** result, grpc_closure* on_complete);
|
38
|
+
void (*destroy)(grpc_resolver* resolver);
|
39
|
+
void (*shutdown_locked)(grpc_resolver* resolver);
|
40
|
+
void (*channel_saw_error_locked)(grpc_resolver* resolver);
|
41
|
+
void (*next_locked)(grpc_resolver* resolver, grpc_channel_args** result,
|
42
|
+
grpc_closure* on_complete);
|
48
43
|
};
|
49
44
|
|
50
45
|
#ifndef NDEBUG
|
51
46
|
#define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p), __FILE__, __LINE__, (r))
|
52
|
-
#define GRPC_RESOLVER_UNREF(
|
53
|
-
grpc_resolver_unref((
|
47
|
+
#define GRPC_RESOLVER_UNREF(p, r) \
|
48
|
+
grpc_resolver_unref((p), __FILE__, __LINE__, (r))
|
54
49
|
void grpc_resolver_ref(grpc_resolver* policy, const char* file, int line,
|
55
50
|
const char* reason);
|
56
|
-
void grpc_resolver_unref(
|
57
|
-
const char*
|
51
|
+
void grpc_resolver_unref(grpc_resolver* policy, const char* file, int line,
|
52
|
+
const char* reason);
|
58
53
|
#else
|
59
54
|
#define GRPC_RESOLVER_REF(p, r) grpc_resolver_ref((p))
|
60
|
-
#define GRPC_RESOLVER_UNREF(
|
55
|
+
#define GRPC_RESOLVER_UNREF(p, r) grpc_resolver_unref((p))
|
61
56
|
void grpc_resolver_ref(grpc_resolver* policy);
|
62
|
-
void grpc_resolver_unref(
|
57
|
+
void grpc_resolver_unref(grpc_resolver* policy);
|
63
58
|
#endif
|
64
59
|
|
65
60
|
void grpc_resolver_init(grpc_resolver* resolver,
|
66
61
|
const grpc_resolver_vtable* vtable,
|
67
62
|
grpc_combiner* combiner);
|
68
63
|
|
69
|
-
void grpc_resolver_shutdown_locked(
|
70
|
-
grpc_resolver* resolver);
|
64
|
+
void grpc_resolver_shutdown_locked(grpc_resolver* resolver);
|
71
65
|
|
72
66
|
/** Notification that the channel has seen an error on some address.
|
73
67
|
Can be used as a hint that re-resolution is desirable soon.
|
74
68
|
|
75
69
|
Must be called from the combiner passed as a resolver_arg at construction
|
76
70
|
time.*/
|
77
|
-
void grpc_resolver_channel_saw_error_locked(
|
78
|
-
grpc_resolver* resolver);
|
71
|
+
void grpc_resolver_channel_saw_error_locked(grpc_resolver* resolver);
|
79
72
|
|
80
73
|
/** Get the next result from the resolver. Expected to set \a *result with
|
81
74
|
new channel args and then schedule \a on_complete for execution.
|
@@ -85,12 +78,8 @@ void grpc_resolver_channel_saw_error_locked(grpc_exec_ctx* exec_ctx,
|
|
85
78
|
|
86
79
|
Must be called from the combiner passed as a resolver_arg at construction
|
87
80
|
time.*/
|
88
|
-
void grpc_resolver_next_locked(
|
81
|
+
void grpc_resolver_next_locked(grpc_resolver* resolver,
|
89
82
|
grpc_channel_args** result,
|
90
83
|
grpc_closure* on_complete);
|
91
84
|
|
92
|
-
#ifdef __cplusplus
|
93
|
-
}
|
94
|
-
#endif
|
95
|
-
|
96
85
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_H */
|
@@ -34,16 +34,16 @@
|
|
34
34
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
35
35
|
#include "src/core/lib/backoff/backoff.h"
|
36
36
|
#include "src/core/lib/channel/channel_args.h"
|
37
|
+
#include "src/core/lib/gpr++/manual_constructor.h"
|
38
|
+
#include "src/core/lib/gpr/env.h"
|
39
|
+
#include "src/core/lib/gpr/string.h"
|
37
40
|
#include "src/core/lib/iomgr/combiner.h"
|
38
41
|
#include "src/core/lib/iomgr/gethostname.h"
|
39
42
|
#include "src/core/lib/iomgr/resolve_address.h"
|
40
43
|
#include "src/core/lib/iomgr/timer.h"
|
41
44
|
#include "src/core/lib/json/json.h"
|
42
|
-
#include "src/core/lib/support/env.h"
|
43
|
-
#include "src/core/lib/support/string.h"
|
44
45
|
#include "src/core/lib/transport/service_config.h"
|
45
46
|
|
46
|
-
#define GRPC_DNS_MIN_CONNECT_TIMEOUT_SECONDS 1
|
47
47
|
#define GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
48
48
|
#define GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER 1.6
|
49
49
|
#define GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS 120
|
@@ -89,7 +89,7 @@ typedef struct {
|
|
89
89
|
bool have_retry_timer;
|
90
90
|
grpc_timer retry_timer;
|
91
91
|
/** retry backoff state */
|
92
|
-
|
92
|
+
grpc_core::ManualConstructor<grpc_core::BackOff> backoff;
|
93
93
|
|
94
94
|
/** currently resolving addresses */
|
95
95
|
grpc_lb_addresses* lb_addresses;
|
@@ -97,17 +97,14 @@ typedef struct {
|
|
97
97
|
char* service_config_json;
|
98
98
|
} ares_dns_resolver;
|
99
99
|
|
100
|
-
static void dns_ares_destroy(
|
100
|
+
static void dns_ares_destroy(grpc_resolver* r);
|
101
101
|
|
102
|
-
static void dns_ares_start_resolving_locked(
|
103
|
-
|
104
|
-
static void dns_ares_maybe_finish_next_locked(grpc_exec_ctx* exec_ctx,
|
105
|
-
ares_dns_resolver* r);
|
102
|
+
static void dns_ares_start_resolving_locked(ares_dns_resolver* r);
|
103
|
+
static void dns_ares_maybe_finish_next_locked(ares_dns_resolver* r);
|
106
104
|
|
107
|
-
static void dns_ares_shutdown_locked(
|
108
|
-
static void dns_ares_channel_saw_error_locked(
|
109
|
-
|
110
|
-
static void dns_ares_next_locked(grpc_exec_ctx* exec_ctx, grpc_resolver* r,
|
105
|
+
static void dns_ares_shutdown_locked(grpc_resolver* r);
|
106
|
+
static void dns_ares_channel_saw_error_locked(grpc_resolver* r);
|
107
|
+
static void dns_ares_next_locked(grpc_resolver* r,
|
111
108
|
grpc_channel_args** target_result,
|
112
109
|
grpc_closure* on_complete);
|
113
110
|
|
@@ -115,43 +112,39 @@ static const grpc_resolver_vtable dns_ares_resolver_vtable = {
|
|
115
112
|
dns_ares_destroy, dns_ares_shutdown_locked,
|
116
113
|
dns_ares_channel_saw_error_locked, dns_ares_next_locked};
|
117
114
|
|
118
|
-
static void dns_ares_shutdown_locked(
|
119
|
-
grpc_resolver* resolver) {
|
115
|
+
static void dns_ares_shutdown_locked(grpc_resolver* resolver) {
|
120
116
|
ares_dns_resolver* r = (ares_dns_resolver*)resolver;
|
121
117
|
if (r->have_retry_timer) {
|
122
|
-
grpc_timer_cancel(
|
118
|
+
grpc_timer_cancel(&r->retry_timer);
|
123
119
|
}
|
124
120
|
if (r->pending_request != nullptr) {
|
125
|
-
grpc_cancel_ares_request(
|
121
|
+
grpc_cancel_ares_request(r->pending_request);
|
126
122
|
}
|
127
123
|
if (r->next_completion != nullptr) {
|
128
124
|
*r->target_result = nullptr;
|
129
|
-
GRPC_CLOSURE_SCHED(
|
130
|
-
|
131
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resolver Shutdown"));
|
125
|
+
GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
126
|
+
"Resolver Shutdown"));
|
132
127
|
r->next_completion = nullptr;
|
133
128
|
}
|
134
129
|
}
|
135
130
|
|
136
|
-
static void dns_ares_channel_saw_error_locked(
|
137
|
-
grpc_resolver* resolver) {
|
131
|
+
static void dns_ares_channel_saw_error_locked(grpc_resolver* resolver) {
|
138
132
|
ares_dns_resolver* r = (ares_dns_resolver*)resolver;
|
139
133
|
if (!r->resolving) {
|
140
|
-
|
141
|
-
dns_ares_start_resolving_locked(
|
134
|
+
r->backoff->Reset();
|
135
|
+
dns_ares_start_resolving_locked(r);
|
142
136
|
}
|
143
137
|
}
|
144
138
|
|
145
|
-
static void dns_ares_on_retry_timer_locked(
|
146
|
-
grpc_error* error) {
|
139
|
+
static void dns_ares_on_retry_timer_locked(void* arg, grpc_error* error) {
|
147
140
|
ares_dns_resolver* r = (ares_dns_resolver*)arg;
|
148
141
|
r->have_retry_timer = false;
|
149
142
|
if (error == GRPC_ERROR_NONE) {
|
150
143
|
if (!r->resolving) {
|
151
|
-
dns_ares_start_resolving_locked(
|
144
|
+
dns_ares_start_resolving_locked(r);
|
152
145
|
}
|
153
146
|
}
|
154
|
-
GRPC_RESOLVER_UNREF(
|
147
|
+
GRPC_RESOLVER_UNREF(&r->base, "retry-timer");
|
155
148
|
}
|
156
149
|
|
157
150
|
static bool value_in_json_array(grpc_json* array, const char* value) {
|
@@ -226,8 +219,7 @@ static char* choose_service_config(char* service_config_choice_json) {
|
|
226
219
|
return service_config;
|
227
220
|
}
|
228
221
|
|
229
|
-
static void dns_ares_on_resolved_locked(
|
230
|
-
grpc_error* error) {
|
222
|
+
static void dns_ares_on_resolved_locked(void* arg, grpc_error* error) {
|
231
223
|
ares_dns_resolver* r = (ares_dns_resolver*)arg;
|
232
224
|
grpc_channel_args* result = nullptr;
|
233
225
|
GPR_ASSERT(r->resolving);
|
@@ -268,13 +260,12 @@ static void dns_ares_on_resolved_locked(grpc_exec_ctx* exec_ctx, void* arg,
|
|
268
260
|
num_args_to_add);
|
269
261
|
if (service_config != nullptr) grpc_service_config_destroy(service_config);
|
270
262
|
gpr_free(service_config_string);
|
271
|
-
grpc_lb_addresses_destroy(
|
263
|
+
grpc_lb_addresses_destroy(r->lb_addresses);
|
272
264
|
} else {
|
273
265
|
const char* msg = grpc_error_string(error);
|
274
266
|
gpr_log(GPR_DEBUG, "dns resolution failed: %s", msg);
|
275
|
-
grpc_millis next_try =
|
276
|
-
|
277
|
-
grpc_millis timeout = next_try - grpc_exec_ctx_now(exec_ctx);
|
267
|
+
grpc_millis next_try = r->backoff->NextAttemptTime();
|
268
|
+
grpc_millis timeout = next_try - grpc_core::ExecCtx::Get()->Now();
|
278
269
|
gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
|
279
270
|
grpc_error_string(error));
|
280
271
|
GPR_ASSERT(!r->have_retry_timer);
|
@@ -285,20 +276,19 @@ static void dns_ares_on_resolved_locked(grpc_exec_ctx* exec_ctx, void* arg,
|
|
285
276
|
} else {
|
286
277
|
gpr_log(GPR_DEBUG, "retrying immediately");
|
287
278
|
}
|
288
|
-
grpc_timer_init(
|
279
|
+
grpc_timer_init(&r->retry_timer, next_try,
|
289
280
|
&r->dns_ares_on_retry_timer_locked);
|
290
281
|
}
|
291
282
|
if (r->resolved_result != nullptr) {
|
292
|
-
grpc_channel_args_destroy(
|
283
|
+
grpc_channel_args_destroy(r->resolved_result);
|
293
284
|
}
|
294
285
|
r->resolved_result = result;
|
295
286
|
r->resolved_version++;
|
296
|
-
dns_ares_maybe_finish_next_locked(
|
297
|
-
GRPC_RESOLVER_UNREF(
|
287
|
+
dns_ares_maybe_finish_next_locked(r);
|
288
|
+
GRPC_RESOLVER_UNREF(&r->base, "dns-resolving");
|
298
289
|
}
|
299
290
|
|
300
|
-
static void dns_ares_next_locked(
|
301
|
-
grpc_resolver* resolver,
|
291
|
+
static void dns_ares_next_locked(grpc_resolver* resolver,
|
302
292
|
grpc_channel_args** target_result,
|
303
293
|
grpc_closure* on_complete) {
|
304
294
|
gpr_log(GPR_DEBUG, "dns_ares_next is called.");
|
@@ -307,57 +297,54 @@ static void dns_ares_next_locked(grpc_exec_ctx* exec_ctx,
|
|
307
297
|
r->next_completion = on_complete;
|
308
298
|
r->target_result = target_result;
|
309
299
|
if (r->resolved_version == 0 && !r->resolving) {
|
310
|
-
|
311
|
-
dns_ares_start_resolving_locked(
|
300
|
+
r->backoff->Reset();
|
301
|
+
dns_ares_start_resolving_locked(r);
|
312
302
|
} else {
|
313
|
-
dns_ares_maybe_finish_next_locked(
|
303
|
+
dns_ares_maybe_finish_next_locked(r);
|
314
304
|
}
|
315
305
|
}
|
316
306
|
|
317
|
-
static void dns_ares_start_resolving_locked(
|
318
|
-
ares_dns_resolver* r) {
|
307
|
+
static void dns_ares_start_resolving_locked(ares_dns_resolver* r) {
|
319
308
|
GRPC_RESOLVER_REF(&r->base, "dns-resolving");
|
320
309
|
GPR_ASSERT(!r->resolving);
|
321
310
|
r->resolving = true;
|
322
311
|
r->lb_addresses = nullptr;
|
323
312
|
r->service_config_json = nullptr;
|
324
313
|
r->pending_request = grpc_dns_lookup_ares(
|
325
|
-
|
326
|
-
|
314
|
+
r->dns_server, r->name_to_resolve, r->default_port, r->interested_parties,
|
315
|
+
&r->dns_ares_on_resolved_locked, &r->lb_addresses,
|
327
316
|
true /* check_grpclb */,
|
328
317
|
r->request_service_config ? &r->service_config_json : nullptr);
|
329
318
|
}
|
330
319
|
|
331
|
-
static void dns_ares_maybe_finish_next_locked(
|
332
|
-
ares_dns_resolver* r) {
|
320
|
+
static void dns_ares_maybe_finish_next_locked(ares_dns_resolver* r) {
|
333
321
|
if (r->next_completion != nullptr &&
|
334
322
|
r->resolved_version != r->published_version) {
|
335
323
|
*r->target_result = r->resolved_result == nullptr
|
336
324
|
? nullptr
|
337
325
|
: grpc_channel_args_copy(r->resolved_result);
|
338
326
|
gpr_log(GPR_DEBUG, "dns_ares_maybe_finish_next_locked");
|
339
|
-
GRPC_CLOSURE_SCHED(
|
327
|
+
GRPC_CLOSURE_SCHED(r->next_completion, GRPC_ERROR_NONE);
|
340
328
|
r->next_completion = nullptr;
|
341
329
|
r->published_version = r->resolved_version;
|
342
330
|
}
|
343
331
|
}
|
344
332
|
|
345
|
-
static void dns_ares_destroy(
|
333
|
+
static void dns_ares_destroy(grpc_resolver* gr) {
|
346
334
|
gpr_log(GPR_DEBUG, "dns_ares_destroy");
|
347
335
|
ares_dns_resolver* r = (ares_dns_resolver*)gr;
|
348
336
|
if (r->resolved_result != nullptr) {
|
349
|
-
grpc_channel_args_destroy(
|
337
|
+
grpc_channel_args_destroy(r->resolved_result);
|
350
338
|
}
|
351
|
-
grpc_pollset_set_destroy(
|
339
|
+
grpc_pollset_set_destroy(r->interested_parties);
|
352
340
|
gpr_free(r->dns_server);
|
353
341
|
gpr_free(r->name_to_resolve);
|
354
342
|
gpr_free(r->default_port);
|
355
|
-
grpc_channel_args_destroy(
|
343
|
+
grpc_channel_args_destroy(r->channel_args);
|
356
344
|
gpr_free(r);
|
357
345
|
}
|
358
346
|
|
359
|
-
static grpc_resolver* dns_ares_create(
|
360
|
-
grpc_resolver_args* args,
|
347
|
+
static grpc_resolver* dns_ares_create(grpc_resolver_args* args,
|
361
348
|
const char* default_port) {
|
362
349
|
/* Get name from args. */
|
363
350
|
const char* path = args->uri->path;
|
@@ -378,14 +365,15 @@ static grpc_resolver* dns_ares_create(grpc_exec_ctx* exec_ctx,
|
|
378
365
|
arg, (grpc_integer_options){false, false, true});
|
379
366
|
r->interested_parties = grpc_pollset_set_create();
|
380
367
|
if (args->pollset_set != nullptr) {
|
381
|
-
grpc_pollset_set_add_pollset_set(
|
382
|
-
args->pollset_set);
|
368
|
+
grpc_pollset_set_add_pollset_set(r->interested_parties, args->pollset_set);
|
383
369
|
}
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
370
|
+
grpc_core::BackOff::Options backoff_options;
|
371
|
+
backoff_options
|
372
|
+
.set_initial_backoff(GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000)
|
373
|
+
.set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
|
374
|
+
.set_jitter(GRPC_DNS_RECONNECT_JITTER)
|
375
|
+
.set_max_backoff(GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000);
|
376
|
+
r->backoff.Init(grpc_core::BackOff(backoff_options));
|
389
377
|
GRPC_CLOSURE_INIT(&r->dns_ares_on_retry_timer_locked,
|
390
378
|
dns_ares_on_retry_timer_locked, r,
|
391
379
|
grpc_combiner_scheduler(r->base.combiner));
|
@@ -404,9 +392,8 @@ static void dns_ares_factory_ref(grpc_resolver_factory* factory) {}
|
|
404
392
|
static void dns_ares_factory_unref(grpc_resolver_factory* factory) {}
|
405
393
|
|
406
394
|
static grpc_resolver* dns_factory_create_resolver(
|
407
|
-
|
408
|
-
|
409
|
-
return dns_ares_create(exec_ctx, args, "https");
|
395
|
+
grpc_resolver_factory* factory, grpc_resolver_args* args) {
|
396
|
+
return dns_ares_create(args, "https");
|
410
397
|
}
|
411
398
|
|
412
399
|
static char* dns_ares_factory_get_default_host_name(
|
@@ -425,7 +412,7 @@ static grpc_resolver_factory* dns_ares_resolver_factory_create() {
|
|
425
412
|
return &dns_resolver_factory;
|
426
413
|
}
|
427
414
|
|
428
|
-
|
415
|
+
void grpc_resolver_dns_ares_init(void) {
|
429
416
|
char* resolver = gpr_getenv("GRPC_DNS_RESOLVER");
|
430
417
|
/* TODO(zyc): Turn on c-ares based resolver by default after the address
|
431
418
|
sorter and the CNAME support are added. */
|
@@ -441,7 +428,7 @@ extern "C" void grpc_resolver_dns_ares_init(void) {
|
|
441
428
|
gpr_free(resolver);
|
442
429
|
}
|
443
430
|
|
444
|
-
|
431
|
+
void grpc_resolver_dns_ares_shutdown(void) {
|
445
432
|
char* resolver = gpr_getenv("GRPC_DNS_RESOLVER");
|
446
433
|
if (resolver != nullptr && gpr_stricmp(resolver, "ares") == 0) {
|
447
434
|
grpc_ares_cleanup();
|
@@ -451,8 +438,8 @@ extern "C" void grpc_resolver_dns_ares_shutdown(void) {
|
|
451
438
|
|
452
439
|
#else /* GRPC_ARES == 1 && !defined(GRPC_UV) */
|
453
440
|
|
454
|
-
|
441
|
+
void grpc_resolver_dns_ares_init(void) {}
|
455
442
|
|
456
|
-
|
443
|
+
void grpc_resolver_dns_ares_shutdown(void) {}
|
457
444
|
|
458
445
|
#endif /* GRPC_ARES == 1 && !defined(GRPC_UV) */
|