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
@@ -28,15 +28,7 @@
|
|
28
28
|
/// seperated by colons.
|
29
29
|
#define GRPC_ARG_HTTP_CONNECT_HEADERS "grpc.http_connect_headers"
|
30
30
|
|
31
|
-
#ifdef __cplusplus
|
32
|
-
extern "C" {
|
33
|
-
#endif
|
34
|
-
|
35
31
|
/// Registers handshaker factory.
|
36
32
|
void grpc_http_connect_register_handshaker_factory();
|
37
33
|
|
38
|
-
#ifdef __cplusplus
|
39
|
-
}
|
40
|
-
#endif
|
41
|
-
|
42
34
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H */
|
@@ -30,25 +30,24 @@
|
|
30
30
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
31
31
|
#include "src/core/ext/filters/client_channel/uri_parser.h"
|
32
32
|
#include "src/core/lib/channel/channel_args.h"
|
33
|
+
#include "src/core/lib/gpr/env.h"
|
34
|
+
#include "src/core/lib/gpr/string.h"
|
33
35
|
#include "src/core/lib/slice/b64.h"
|
34
|
-
#include "src/core/lib/support/env.h"
|
35
|
-
#include "src/core/lib/support/string.h"
|
36
36
|
|
37
37
|
/**
|
38
38
|
* Parses the 'http_proxy' env var and returns the proxy hostname to resolve or
|
39
|
-
*
|
39
|
+
* nullptr on error. Also sets 'user_cred' to user credentials if present in the
|
40
40
|
* 'http_proxy' env var, otherwise leaves it unchanged. It is caller's
|
41
41
|
* responsibility to gpr_free user_cred.
|
42
42
|
*/
|
43
|
-
static char* get_http_proxy_server(
|
43
|
+
static char* get_http_proxy_server(char** user_cred) {
|
44
44
|
GPR_ASSERT(user_cred != nullptr);
|
45
45
|
char* proxy_name = nullptr;
|
46
46
|
char* uri_str = gpr_getenv("http_proxy");
|
47
47
|
char** authority_strs = nullptr;
|
48
48
|
size_t authority_nstrs;
|
49
49
|
if (uri_str == nullptr) return nullptr;
|
50
|
-
grpc_uri* uri =
|
51
|
-
grpc_uri_parse(exec_ctx, uri_str, false /* suppress_errors */);
|
50
|
+
grpc_uri* uri = grpc_uri_parse(uri_str, false /* suppress_errors */);
|
52
51
|
if (uri == nullptr || uri->authority == nullptr) {
|
53
52
|
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var");
|
54
53
|
goto done;
|
@@ -82,18 +81,16 @@ done:
|
|
82
81
|
return proxy_name;
|
83
82
|
}
|
84
83
|
|
85
|
-
static bool proxy_mapper_map_name(
|
86
|
-
grpc_proxy_mapper* mapper,
|
84
|
+
static bool proxy_mapper_map_name(grpc_proxy_mapper* mapper,
|
87
85
|
const char* server_uri,
|
88
86
|
const grpc_channel_args* args,
|
89
87
|
char** name_to_resolve,
|
90
88
|
grpc_channel_args** new_args) {
|
91
89
|
char* user_cred = nullptr;
|
92
|
-
*name_to_resolve = get_http_proxy_server(
|
90
|
+
*name_to_resolve = get_http_proxy_server(&user_cred);
|
93
91
|
if (*name_to_resolve == nullptr) return false;
|
94
92
|
char* no_proxy_str = nullptr;
|
95
|
-
grpc_uri* uri =
|
96
|
-
grpc_uri_parse(exec_ctx, server_uri, false /* suppress_errors */);
|
93
|
+
grpc_uri* uri = grpc_uri_parse(server_uri, false /* suppress_errors */);
|
97
94
|
if (uri == nullptr || uri->path[0] == '\0') {
|
98
95
|
gpr_log(GPR_ERROR,
|
99
96
|
"'http_proxy' environment variable set, but cannot "
|
@@ -174,8 +171,7 @@ no_use_proxy:
|
|
174
171
|
return false;
|
175
172
|
}
|
176
173
|
|
177
|
-
static bool proxy_mapper_map_address(
|
178
|
-
grpc_proxy_mapper* mapper,
|
174
|
+
static bool proxy_mapper_map_address(grpc_proxy_mapper* mapper,
|
179
175
|
const grpc_resolved_address* address,
|
180
176
|
const grpc_channel_args* args,
|
181
177
|
grpc_resolved_address** new_address,
|
@@ -19,14 +19,6 @@
|
|
19
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
|
21
21
|
|
22
|
-
#ifdef __cplusplus
|
23
|
-
extern "C" {
|
24
|
-
#endif
|
25
|
-
|
26
22
|
void grpc_register_http_proxy_mapper();
|
27
23
|
|
28
|
-
#ifdef __cplusplus
|
29
|
-
}
|
30
|
-
#endif
|
31
|
-
|
32
24
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H */
|
@@ -19,8 +19,6 @@
|
|
19
19
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
20
20
|
#include "src/core/lib/iomgr/combiner.h"
|
21
21
|
|
22
|
-
#define WEAK_REF_BITS 16
|
23
|
-
|
24
22
|
grpc_core::DebugOnlyTraceFlag grpc_trace_lb_policy_refcount(
|
25
23
|
false, "lb_policy_refcount");
|
26
24
|
|
@@ -28,136 +26,116 @@ void grpc_lb_policy_init(grpc_lb_policy* policy,
|
|
28
26
|
const grpc_lb_policy_vtable* vtable,
|
29
27
|
grpc_combiner* combiner) {
|
30
28
|
policy->vtable = vtable;
|
31
|
-
|
29
|
+
gpr_ref_init(&policy->refs, 1);
|
32
30
|
policy->interested_parties = grpc_pollset_set_create();
|
33
31
|
policy->combiner = GRPC_COMBINER_REF(combiner, "lb_policy");
|
34
32
|
}
|
35
33
|
|
36
34
|
#ifndef NDEBUG
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
void grpc_lb_policy_ref(grpc_lb_policy* lb_policy, const char* file, int line,
|
36
|
+
const char* reason) {
|
37
|
+
if (grpc_trace_lb_policy_refcount.enabled()) {
|
38
|
+
gpr_atm old_refs = gpr_atm_no_barrier_load(&lb_policy->refs.count);
|
39
|
+
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
40
|
+
"LB_POLICY:%p ref %" PRIdPTR " -> %" PRIdPTR " %s", lb_policy,
|
41
|
+
old_refs, old_refs + 1, reason);
|
42
|
+
}
|
41
43
|
#else
|
42
|
-
|
43
|
-
#define REF_MUTATE_EXTRA_ARGS
|
44
|
-
#define REF_FUNC_PASS_ARGS(new_reason)
|
45
|
-
#define REF_MUTATE_PASS_ARGS(x)
|
44
|
+
void grpc_lb_policy_ref(grpc_lb_policy* lb_policy) {
|
46
45
|
#endif
|
46
|
+
gpr_ref(&lb_policy->refs);
|
47
|
+
}
|
47
48
|
|
48
|
-
static gpr_atm ref_mutate(grpc_lb_policy* c, gpr_atm delta,
|
49
|
-
int barrier REF_MUTATE_EXTRA_ARGS) {
|
50
|
-
gpr_atm old_val = barrier ? gpr_atm_full_fetch_add(&c->ref_pair, delta)
|
51
|
-
: gpr_atm_no_barrier_fetch_add(&c->ref_pair, delta);
|
52
49
|
#ifndef NDEBUG
|
50
|
+
void grpc_lb_policy_unref(grpc_lb_policy* lb_policy, const char* file, int line,
|
51
|
+
const char* reason) {
|
53
52
|
if (grpc_trace_lb_policy_refcount.enabled()) {
|
53
|
+
gpr_atm old_refs = gpr_atm_no_barrier_load(&lb_policy->refs.count);
|
54
54
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
55
|
-
"LB_POLICY
|
56
|
-
|
55
|
+
"LB_POLICY:%p unref %" PRIdPTR " -> %" PRIdPTR " %s", lb_policy,
|
56
|
+
old_refs, old_refs - 1, reason);
|
57
57
|
}
|
58
|
+
#else
|
59
|
+
void grpc_lb_policy_unref(grpc_lb_policy* lb_policy) {
|
58
60
|
#endif
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
}
|
65
|
-
|
66
|
-
static void shutdown_locked(grpc_exec_ctx* exec_ctx, void* arg,
|
67
|
-
grpc_error* error) {
|
68
|
-
grpc_lb_policy* policy = (grpc_lb_policy*)arg;
|
69
|
-
policy->vtable->shutdown_locked(exec_ctx, policy);
|
70
|
-
GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, policy, "strong-unref");
|
71
|
-
}
|
72
|
-
|
73
|
-
void grpc_lb_policy_unref(grpc_exec_ctx* exec_ctx,
|
74
|
-
grpc_lb_policy* policy REF_FUNC_EXTRA_ARGS) {
|
75
|
-
gpr_atm old_val =
|
76
|
-
ref_mutate(policy, (gpr_atm)1 - (gpr_atm)(1 << WEAK_REF_BITS),
|
77
|
-
1 REF_MUTATE_PASS_ARGS("STRONG_UNREF"));
|
78
|
-
gpr_atm mask = ~(gpr_atm)((1 << WEAK_REF_BITS) - 1);
|
79
|
-
gpr_atm check = 1 << WEAK_REF_BITS;
|
80
|
-
if ((old_val & mask) == check) {
|
81
|
-
GRPC_CLOSURE_SCHED(
|
82
|
-
exec_ctx,
|
83
|
-
GRPC_CLOSURE_CREATE(shutdown_locked, policy,
|
84
|
-
grpc_combiner_scheduler(policy->combiner)),
|
85
|
-
GRPC_ERROR_NONE);
|
86
|
-
} else {
|
87
|
-
grpc_lb_policy_weak_unref(exec_ctx,
|
88
|
-
policy REF_FUNC_PASS_ARGS("strong-unref"));
|
61
|
+
if (gpr_unref(&lb_policy->refs)) {
|
62
|
+
grpc_pollset_set_destroy(lb_policy->interested_parties);
|
63
|
+
grpc_combiner* combiner = lb_policy->combiner;
|
64
|
+
lb_policy->vtable->destroy(lb_policy);
|
65
|
+
GRPC_COMBINER_UNREF(combiner, "lb_policy");
|
89
66
|
}
|
90
67
|
}
|
91
68
|
|
92
|
-
void
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
void grpc_lb_policy_weak_unref(grpc_exec_ctx* exec_ctx,
|
97
|
-
grpc_lb_policy* policy REF_FUNC_EXTRA_ARGS) {
|
98
|
-
gpr_atm old_val =
|
99
|
-
ref_mutate(policy, -(gpr_atm)1, 1 REF_MUTATE_PASS_ARGS("WEAK_UNREF"));
|
100
|
-
if (old_val == 1) {
|
101
|
-
grpc_pollset_set_destroy(exec_ctx, policy->interested_parties);
|
102
|
-
grpc_combiner* combiner = policy->combiner;
|
103
|
-
policy->vtable->destroy(exec_ctx, policy);
|
104
|
-
GRPC_COMBINER_UNREF(exec_ctx, combiner, "lb_policy");
|
105
|
-
}
|
69
|
+
void grpc_lb_policy_shutdown_locked(grpc_lb_policy* policy,
|
70
|
+
grpc_lb_policy* new_policy) {
|
71
|
+
policy->vtable->shutdown_locked(policy, new_policy);
|
106
72
|
}
|
107
73
|
|
108
|
-
int grpc_lb_policy_pick_locked(
|
109
|
-
|
110
|
-
|
111
|
-
grpc_call_context_element* context,
|
112
|
-
void** user_data, grpc_closure* on_complete) {
|
113
|
-
return policy->vtable->pick_locked(exec_ctx, policy, pick_args, target,
|
114
|
-
context, user_data, on_complete);
|
74
|
+
int grpc_lb_policy_pick_locked(grpc_lb_policy* policy,
|
75
|
+
grpc_lb_policy_pick_state* pick) {
|
76
|
+
return policy->vtable->pick_locked(policy, pick);
|
115
77
|
}
|
116
78
|
|
117
|
-
void grpc_lb_policy_cancel_pick_locked(
|
118
|
-
|
119
|
-
grpc_connected_subchannel** target,
|
79
|
+
void grpc_lb_policy_cancel_pick_locked(grpc_lb_policy* policy,
|
80
|
+
grpc_lb_policy_pick_state* pick,
|
120
81
|
grpc_error* error) {
|
121
|
-
policy->vtable->cancel_pick_locked(
|
82
|
+
policy->vtable->cancel_pick_locked(policy, pick, error);
|
122
83
|
}
|
123
84
|
|
124
|
-
void grpc_lb_policy_cancel_picks_locked(
|
125
|
-
grpc_lb_policy* policy,
|
85
|
+
void grpc_lb_policy_cancel_picks_locked(grpc_lb_policy* policy,
|
126
86
|
uint32_t initial_metadata_flags_mask,
|
127
87
|
uint32_t initial_metadata_flags_eq,
|
128
88
|
grpc_error* error) {
|
129
|
-
policy->vtable->cancel_picks_locked(
|
130
|
-
initial_metadata_flags_mask,
|
89
|
+
policy->vtable->cancel_picks_locked(policy, initial_metadata_flags_mask,
|
131
90
|
initial_metadata_flags_eq, error);
|
132
91
|
}
|
133
92
|
|
134
|
-
void grpc_lb_policy_exit_idle_locked(
|
135
|
-
|
136
|
-
policy->vtable->exit_idle_locked(exec_ctx, policy);
|
93
|
+
void grpc_lb_policy_exit_idle_locked(grpc_lb_policy* policy) {
|
94
|
+
policy->vtable->exit_idle_locked(policy);
|
137
95
|
}
|
138
96
|
|
139
|
-
void grpc_lb_policy_ping_one_locked(
|
140
|
-
|
141
|
-
grpc_closure*
|
142
|
-
policy->vtable->ping_one_locked(
|
97
|
+
void grpc_lb_policy_ping_one_locked(grpc_lb_policy* policy,
|
98
|
+
grpc_closure* on_initiate,
|
99
|
+
grpc_closure* on_ack) {
|
100
|
+
policy->vtable->ping_one_locked(policy, on_initiate, on_ack);
|
143
101
|
}
|
144
102
|
|
145
103
|
void grpc_lb_policy_notify_on_state_change_locked(
|
146
|
-
|
147
|
-
|
148
|
-
policy->vtable->notify_on_state_change_locked(
|
149
|
-
closure);
|
104
|
+
grpc_lb_policy* policy, grpc_connectivity_state* state,
|
105
|
+
grpc_closure* closure) {
|
106
|
+
policy->vtable->notify_on_state_change_locked(policy, state, closure);
|
150
107
|
}
|
151
108
|
|
152
109
|
grpc_connectivity_state grpc_lb_policy_check_connectivity_locked(
|
153
|
-
|
154
|
-
|
155
|
-
return policy->vtable->check_connectivity_locked(exec_ctx, policy,
|
156
|
-
connectivity_error);
|
110
|
+
grpc_lb_policy* policy, grpc_error** connectivity_error) {
|
111
|
+
return policy->vtable->check_connectivity_locked(policy, connectivity_error);
|
157
112
|
}
|
158
113
|
|
159
|
-
void grpc_lb_policy_update_locked(
|
160
|
-
grpc_lb_policy* policy,
|
114
|
+
void grpc_lb_policy_update_locked(grpc_lb_policy* policy,
|
161
115
|
const grpc_lb_policy_args* lb_policy_args) {
|
162
|
-
policy->vtable->update_locked(
|
116
|
+
policy->vtable->update_locked(policy, lb_policy_args);
|
117
|
+
}
|
118
|
+
|
119
|
+
void grpc_lb_policy_set_reresolve_closure_locked(
|
120
|
+
grpc_lb_policy* policy, grpc_closure* request_reresolution) {
|
121
|
+
policy->vtable->set_reresolve_closure_locked(policy, request_reresolution);
|
122
|
+
}
|
123
|
+
|
124
|
+
void grpc_lb_policy_try_reresolve(grpc_lb_policy* policy,
|
125
|
+
grpc_core::TraceFlag* grpc_lb_trace,
|
126
|
+
grpc_error* error) {
|
127
|
+
if (policy->request_reresolution != nullptr) {
|
128
|
+
GRPC_CLOSURE_SCHED(policy->request_reresolution, error);
|
129
|
+
policy->request_reresolution = nullptr;
|
130
|
+
if (grpc_lb_trace->enabled()) {
|
131
|
+
gpr_log(GPR_DEBUG,
|
132
|
+
"%s %p: scheduling re-resolution closure with error=%s.",
|
133
|
+
grpc_lb_trace->name(), policy, grpc_error_string(error));
|
134
|
+
}
|
135
|
+
} else {
|
136
|
+
if (grpc_lb_trace->enabled() && error == GRPC_ERROR_NONE) {
|
137
|
+
gpr_log(GPR_DEBUG, "%s %p: re-resolution already in progress.",
|
138
|
+
grpc_lb_trace->name(), policy);
|
139
|
+
}
|
140
|
+
}
|
163
141
|
}
|
@@ -20,13 +20,10 @@
|
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
|
21
21
|
|
22
22
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
23
|
+
#include "src/core/lib/gpr++/ref_counted_ptr.h"
|
23
24
|
#include "src/core/lib/iomgr/polling_entity.h"
|
24
25
|
#include "src/core/lib/transport/connectivity_state.h"
|
25
26
|
|
26
|
-
#ifdef __cplusplus
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
27
|
/** A load balancing policy: specified by a vtable and a struct (which
|
31
28
|
is expected to be extended to contain some parameters) */
|
32
29
|
typedef struct grpc_lb_policy grpc_lb_policy;
|
@@ -37,103 +34,99 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_lb_policy_refcount;
|
|
37
34
|
|
38
35
|
struct grpc_lb_policy {
|
39
36
|
const grpc_lb_policy_vtable* vtable;
|
40
|
-
|
37
|
+
gpr_refcount refs;
|
41
38
|
/* owned pointer to interested parties in load balancing decisions */
|
42
39
|
grpc_pollset_set* interested_parties;
|
43
40
|
/* combiner under which lb_policy actions take place */
|
44
41
|
grpc_combiner* combiner;
|
42
|
+
/* callback to force a re-resolution */
|
43
|
+
grpc_closure* request_reresolution;
|
45
44
|
};
|
46
45
|
|
47
|
-
|
48
|
-
typedef struct
|
49
|
-
|
46
|
+
/// State used for an LB pick.
|
47
|
+
typedef struct grpc_lb_policy_pick_state {
|
48
|
+
/// Initial metadata associated with the picking call.
|
50
49
|
grpc_metadata_batch* initial_metadata;
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
/// Bitmask used for selective cancelling. See \a
|
51
|
+
/// grpc_lb_policy_cancel_picks() and \a GRPC_INITIAL_METADATA_* in
|
52
|
+
/// grpc_types.h.
|
54
53
|
uint32_t initial_metadata_flags;
|
55
|
-
|
56
|
-
grpc_linked_mdelem
|
57
|
-
|
54
|
+
/// Storage for LB token in \a initial_metadata, or NULL if not used.
|
55
|
+
grpc_linked_mdelem lb_token_mdelem_storage;
|
56
|
+
/// Closure to run when pick is complete, if not completed synchronously.
|
57
|
+
grpc_closure* on_complete;
|
58
|
+
/// Will be set to the selected subchannel, or nullptr on failure or when
|
59
|
+
/// the LB policy decides to drop the call.
|
60
|
+
grpc_core::RefCountedPtr<grpc_core::ConnectedSubchannel> connected_subchannel;
|
61
|
+
/// Will be populated with context to pass to the subchannel call, if needed.
|
62
|
+
grpc_call_context_element subchannel_call_context[GRPC_CONTEXT_COUNT];
|
63
|
+
/// Upon success, \a *user_data will be set to whatever opaque information
|
64
|
+
/// may need to be propagated from the LB policy, or NULL if not needed.
|
65
|
+
void** user_data;
|
66
|
+
/// Next pointer. For internal use by LB policy.
|
67
|
+
struct grpc_lb_policy_pick_state* next;
|
68
|
+
} grpc_lb_policy_pick_state;
|
58
69
|
|
59
70
|
struct grpc_lb_policy_vtable {
|
60
|
-
void (*destroy)(
|
61
|
-
|
71
|
+
void (*destroy)(grpc_lb_policy* policy);
|
72
|
+
|
73
|
+
/// \see grpc_lb_policy_shutdown_locked().
|
74
|
+
void (*shutdown_locked)(grpc_lb_policy* policy, grpc_lb_policy* new_policy);
|
62
75
|
|
63
76
|
/** \see grpc_lb_policy_pick */
|
64
|
-
int (*pick_locked)(
|
65
|
-
const grpc_lb_policy_pick_args* pick_args,
|
66
|
-
grpc_connected_subchannel** target,
|
67
|
-
grpc_call_context_element* context, void** user_data,
|
68
|
-
grpc_closure* on_complete);
|
77
|
+
int (*pick_locked)(grpc_lb_policy* policy, grpc_lb_policy_pick_state* pick);
|
69
78
|
|
70
79
|
/** \see grpc_lb_policy_cancel_pick */
|
71
|
-
void (*cancel_pick_locked)(
|
72
|
-
|
80
|
+
void (*cancel_pick_locked)(grpc_lb_policy* policy,
|
81
|
+
grpc_lb_policy_pick_state* pick,
|
73
82
|
grpc_error* error);
|
74
83
|
|
75
84
|
/** \see grpc_lb_policy_cancel_picks */
|
76
|
-
void (*cancel_picks_locked)(
|
85
|
+
void (*cancel_picks_locked)(grpc_lb_policy* policy,
|
77
86
|
uint32_t initial_metadata_flags_mask,
|
78
87
|
uint32_t initial_metadata_flags_eq,
|
79
88
|
grpc_error* error);
|
80
89
|
|
81
90
|
/** \see grpc_lb_policy_ping_one */
|
82
|
-
void (*ping_one_locked)(
|
83
|
-
grpc_closure*
|
91
|
+
void (*ping_one_locked)(grpc_lb_policy* policy, grpc_closure* on_initiate,
|
92
|
+
grpc_closure* on_ack);
|
84
93
|
|
85
94
|
/** Try to enter a READY connectivity state */
|
86
|
-
void (*exit_idle_locked)(
|
95
|
+
void (*exit_idle_locked)(grpc_lb_policy* policy);
|
87
96
|
|
88
97
|
/** check the current connectivity of the lb_policy */
|
89
98
|
grpc_connectivity_state (*check_connectivity_locked)(
|
90
|
-
|
91
|
-
grpc_error** connectivity_error);
|
99
|
+
grpc_lb_policy* policy, grpc_error** connectivity_error);
|
92
100
|
|
93
101
|
/** call notify when the connectivity state of a channel changes from *state.
|
94
102
|
Updates *state with the new state of the policy. Calling with a NULL \a
|
95
103
|
state cancels the subscription. */
|
96
|
-
void (*notify_on_state_change_locked)(
|
97
|
-
grpc_lb_policy* policy,
|
104
|
+
void (*notify_on_state_change_locked)(grpc_lb_policy* policy,
|
98
105
|
grpc_connectivity_state* state,
|
99
106
|
grpc_closure* closure);
|
100
107
|
|
101
|
-
void (*update_locked)(
|
108
|
+
void (*update_locked)(grpc_lb_policy* policy,
|
102
109
|
const grpc_lb_policy_args* args);
|
110
|
+
|
111
|
+
/** \see grpc_lb_policy_set_reresolve_closure */
|
112
|
+
void (*set_reresolve_closure_locked)(grpc_lb_policy* policy,
|
113
|
+
grpc_closure* request_reresolution);
|
103
114
|
};
|
104
115
|
|
105
116
|
#ifndef NDEBUG
|
106
|
-
|
107
|
-
/* Strong references: the policy will shutdown when they reach zero */
|
108
117
|
#define GRPC_LB_POLICY_REF(p, r) \
|
109
118
|
grpc_lb_policy_ref((p), __FILE__, __LINE__, (r))
|
110
|
-
#define GRPC_LB_POLICY_UNREF(
|
111
|
-
grpc_lb_policy_unref((
|
112
|
-
|
113
|
-
/* Weak references: they don't prevent the shutdown of the LB policy. When no
|
114
|
-
* strong references are left but there are still weak ones, shutdown is called.
|
115
|
-
* Once the weak reference also reaches zero, the LB policy is destroyed. */
|
116
|
-
#define GRPC_LB_POLICY_WEAK_REF(p, r) \
|
117
|
-
grpc_lb_policy_weak_ref((p), __FILE__, __LINE__, (r))
|
118
|
-
#define GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, p, r) \
|
119
|
-
grpc_lb_policy_weak_unref((exec_ctx), (p), __FILE__, __LINE__, (r))
|
119
|
+
#define GRPC_LB_POLICY_UNREF(p, r) \
|
120
|
+
grpc_lb_policy_unref((p), __FILE__, __LINE__, (r))
|
120
121
|
void grpc_lb_policy_ref(grpc_lb_policy* policy, const char* file, int line,
|
121
122
|
const char* reason);
|
122
|
-
void grpc_lb_policy_unref(
|
123
|
-
const char*
|
124
|
-
|
125
|
-
const char* reason);
|
126
|
-
void grpc_lb_policy_weak_unref(grpc_exec_ctx* exec_ctx, grpc_lb_policy* policy,
|
127
|
-
const char* file, int line, const char* reason);
|
128
|
-
#else
|
123
|
+
void grpc_lb_policy_unref(grpc_lb_policy* policy, const char* file, int line,
|
124
|
+
const char* reason);
|
125
|
+
#else // !NDEBUG
|
129
126
|
#define GRPC_LB_POLICY_REF(p, r) grpc_lb_policy_ref((p))
|
130
|
-
#define GRPC_LB_POLICY_UNREF(
|
131
|
-
#define GRPC_LB_POLICY_WEAK_REF(p, r) grpc_lb_policy_weak_ref((p))
|
132
|
-
#define GRPC_LB_POLICY_WEAK_UNREF(cl, p, r) grpc_lb_policy_weak_unref((cl), (p))
|
127
|
+
#define GRPC_LB_POLICY_UNREF(p, r) grpc_lb_policy_unref((p))
|
133
128
|
void grpc_lb_policy_ref(grpc_lb_policy* policy);
|
134
|
-
void grpc_lb_policy_unref(
|
135
|
-
void grpc_lb_policy_weak_ref(grpc_lb_policy* policy);
|
136
|
-
void grpc_lb_policy_weak_unref(grpc_exec_ctx* exec_ctx, grpc_lb_policy* policy);
|
129
|
+
void grpc_lb_policy_unref(grpc_lb_policy* policy);
|
137
130
|
#endif
|
138
131
|
|
139
132
|
/** called by concrete implementations to initialize the base struct */
|
@@ -141,73 +134,71 @@ void grpc_lb_policy_init(grpc_lb_policy* policy,
|
|
141
134
|
const grpc_lb_policy_vtable* vtable,
|
142
135
|
grpc_combiner* combiner);
|
143
136
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
137
|
+
/// Shuts down \a policy.
|
138
|
+
/// If \a new_policy is non-null, any pending picks will be restarted
|
139
|
+
/// on that policy; otherwise, they will be failed.
|
140
|
+
void grpc_lb_policy_shutdown_locked(grpc_lb_policy* policy,
|
141
|
+
grpc_lb_policy* new_policy);
|
148
142
|
|
149
|
-
|
150
|
-
|
151
|
-
\a context will be populated with context to pass to the subchannel
|
152
|
-
call, if needed.
|
143
|
+
/** Finds an appropriate subchannel for a call, based on data in \a pick.
|
144
|
+
\a pick must remain alive until the pick is complete.
|
153
145
|
|
154
146
|
If the pick succeeds and a result is known immediately, a non-zero
|
155
|
-
value will be returned. Otherwise, \a on_complete will be invoked
|
147
|
+
value will be returned. Otherwise, \a pick->on_complete will be invoked
|
156
148
|
once the pick is complete with its error argument set to indicate
|
157
149
|
success or failure.
|
158
150
|
|
159
151
|
Any IO should be done under the \a interested_parties \a grpc_pollset_set
|
160
152
|
in the \a grpc_lb_policy struct. */
|
161
|
-
int grpc_lb_policy_pick_locked(
|
162
|
-
|
163
|
-
grpc_connected_subchannel** target,
|
164
|
-
grpc_call_context_element* context,
|
165
|
-
void** user_data, grpc_closure* on_complete);
|
153
|
+
int grpc_lb_policy_pick_locked(grpc_lb_policy* policy,
|
154
|
+
grpc_lb_policy_pick_state* pick);
|
166
155
|
|
167
|
-
/** Perform a connected subchannel ping (see \a
|
156
|
+
/** Perform a connected subchannel ping (see \a
|
157
|
+
grpc_core::ConnectedSubchannel::Ping)
|
168
158
|
against one of the connected subchannels managed by \a policy. */
|
169
|
-
void grpc_lb_policy_ping_one_locked(
|
170
|
-
|
171
|
-
grpc_closure*
|
159
|
+
void grpc_lb_policy_ping_one_locked(grpc_lb_policy* policy,
|
160
|
+
grpc_closure* on_initiate,
|
161
|
+
grpc_closure* on_ack);
|
172
162
|
|
173
|
-
/** Cancel picks for \a
|
163
|
+
/** Cancel picks for \a pick.
|
174
164
|
The \a on_complete callback of the pending picks will be invoked with \a
|
175
165
|
*target set to NULL. */
|
176
|
-
void grpc_lb_policy_cancel_pick_locked(
|
177
|
-
|
178
|
-
grpc_connected_subchannel** target,
|
166
|
+
void grpc_lb_policy_cancel_pick_locked(grpc_lb_policy* policy,
|
167
|
+
grpc_lb_policy_pick_state* pick,
|
179
168
|
grpc_error* error);
|
180
169
|
|
181
170
|
/** Cancel all pending picks for which their \a initial_metadata_flags (as given
|
182
171
|
in the call to \a grpc_lb_policy_pick) matches \a initial_metadata_flags_eq
|
183
172
|
when AND'd with \a initial_metadata_flags_mask */
|
184
|
-
void grpc_lb_policy_cancel_picks_locked(
|
185
|
-
grpc_lb_policy* policy,
|
173
|
+
void grpc_lb_policy_cancel_picks_locked(grpc_lb_policy* policy,
|
186
174
|
uint32_t initial_metadata_flags_mask,
|
187
175
|
uint32_t initial_metadata_flags_eq,
|
188
176
|
grpc_error* error);
|
189
177
|
|
190
178
|
/** Try to enter a READY connectivity state */
|
191
|
-
void grpc_lb_policy_exit_idle_locked(
|
192
|
-
grpc_lb_policy* policy);
|
179
|
+
void grpc_lb_policy_exit_idle_locked(grpc_lb_policy* policy);
|
193
180
|
|
194
181
|
/* Call notify when the connectivity state of a channel changes from \a *state.
|
195
182
|
* Updates \a *state with the new state of the policy */
|
196
183
|
void grpc_lb_policy_notify_on_state_change_locked(
|
197
|
-
|
198
|
-
|
184
|
+
grpc_lb_policy* policy, grpc_connectivity_state* state,
|
185
|
+
grpc_closure* closure);
|
199
186
|
|
200
187
|
grpc_connectivity_state grpc_lb_policy_check_connectivity_locked(
|
201
|
-
|
202
|
-
grpc_error** connectivity_error);
|
188
|
+
grpc_lb_policy* policy, grpc_error** connectivity_error);
|
203
189
|
|
204
190
|
/** Update \a policy with \a lb_policy_args. */
|
205
|
-
void grpc_lb_policy_update_locked(
|
206
|
-
grpc_lb_policy* policy,
|
191
|
+
void grpc_lb_policy_update_locked(grpc_lb_policy* policy,
|
207
192
|
const grpc_lb_policy_args* lb_policy_args);
|
208
193
|
|
209
|
-
|
210
|
-
|
211
|
-
|
194
|
+
/** Set the re-resolution closure to \a request_reresolution. */
|
195
|
+
void grpc_lb_policy_set_reresolve_closure_locked(
|
196
|
+
grpc_lb_policy* policy, grpc_closure* request_reresolution);
|
197
|
+
|
198
|
+
/** Try to request a re-resolution. It's NOT a public API; it's only for use by
|
199
|
+
the LB policy implementations. */
|
200
|
+
void grpc_lb_policy_try_reresolve(grpc_lb_policy* policy,
|
201
|
+
grpc_core::TraceFlag* grpc_lb_trace,
|
202
|
+
grpc_error* error);
|
212
203
|
|
213
204
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H */
|