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
@@ -21,22 +21,19 @@
|
|
21
21
|
|
22
22
|
#include "src/core/ext/filters/client_channel/connector.h"
|
23
23
|
#include "src/core/lib/channel/channel_stack.h"
|
24
|
+
#include "src/core/lib/gpr++/ref_counted.h"
|
25
|
+
#include "src/core/lib/gpr++/ref_counted_ptr.h"
|
26
|
+
#include "src/core/lib/gpr/arena.h"
|
24
27
|
#include "src/core/lib/iomgr/polling_entity.h"
|
25
|
-
#include "src/core/lib/support/arena.h"
|
26
28
|
#include "src/core/lib/transport/connectivity_state.h"
|
27
29
|
#include "src/core/lib/transport/metadata.h"
|
28
30
|
|
29
|
-
#ifdef __cplusplus
|
30
|
-
extern "C" {
|
31
|
-
#endif
|
32
|
-
|
33
31
|
// Channel arg containing a grpc_resolved_address to connect to.
|
34
32
|
#define GRPC_ARG_SUBCHANNEL_ADDRESS "grpc.subchannel_address"
|
35
33
|
|
36
34
|
/** A (sub-)channel that knows how to connect to exactly one target
|
37
35
|
address. Provides a target for load balancing. */
|
38
36
|
typedef struct grpc_subchannel grpc_subchannel;
|
39
|
-
typedef struct grpc_connected_subchannel grpc_connected_subchannel;
|
40
37
|
typedef struct grpc_subchannel_call grpc_subchannel_call;
|
41
38
|
typedef struct grpc_subchannel_args grpc_subchannel_args;
|
42
39
|
typedef struct grpc_subchannel_key grpc_subchannel_key;
|
@@ -46,82 +43,72 @@ typedef struct grpc_subchannel_key grpc_subchannel_key;
|
|
46
43
|
grpc_subchannel_ref((p), __FILE__, __LINE__, (r))
|
47
44
|
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
|
48
45
|
grpc_subchannel_ref_from_weak_ref((p), __FILE__, __LINE__, (r))
|
49
|
-
#define GRPC_SUBCHANNEL_UNREF(
|
50
|
-
grpc_subchannel_unref((
|
46
|
+
#define GRPC_SUBCHANNEL_UNREF(p, r) \
|
47
|
+
grpc_subchannel_unref((p), __FILE__, __LINE__, (r))
|
51
48
|
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) \
|
52
49
|
grpc_subchannel_weak_ref((p), __FILE__, __LINE__, (r))
|
53
|
-
#define GRPC_SUBCHANNEL_WEAK_UNREF(
|
54
|
-
grpc_subchannel_weak_unref((
|
55
|
-
#define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) \
|
56
|
-
grpc_connected_subchannel_ref((p), __FILE__, __LINE__, (r))
|
57
|
-
#define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \
|
58
|
-
grpc_connected_subchannel_unref((cl), (p), __FILE__, __LINE__, (r))
|
50
|
+
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) \
|
51
|
+
grpc_subchannel_weak_unref((p), __FILE__, __LINE__, (r))
|
59
52
|
#define GRPC_SUBCHANNEL_CALL_REF(p, r) \
|
60
53
|
grpc_subchannel_call_ref((p), __FILE__, __LINE__, (r))
|
61
|
-
#define GRPC_SUBCHANNEL_CALL_UNREF(
|
62
|
-
grpc_subchannel_call_unref((
|
54
|
+
#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) \
|
55
|
+
grpc_subchannel_call_unref((p), __FILE__, __LINE__, (r))
|
63
56
|
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS \
|
64
57
|
, const char *file, int line, const char *reason
|
65
58
|
#else
|
66
59
|
#define GRPC_SUBCHANNEL_REF(p, r) grpc_subchannel_ref((p))
|
67
60
|
#define GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(p, r) \
|
68
61
|
grpc_subchannel_ref_from_weak_ref((p))
|
69
|
-
#define GRPC_SUBCHANNEL_UNREF(
|
62
|
+
#define GRPC_SUBCHANNEL_UNREF(p, r) grpc_subchannel_unref((p))
|
70
63
|
#define GRPC_SUBCHANNEL_WEAK_REF(p, r) grpc_subchannel_weak_ref((p))
|
71
|
-
#define GRPC_SUBCHANNEL_WEAK_UNREF(
|
72
|
-
grpc_subchannel_weak_unref((cl), (p))
|
73
|
-
#define GRPC_CONNECTED_SUBCHANNEL_REF(p, r) grpc_connected_subchannel_ref((p))
|
74
|
-
#define GRPC_CONNECTED_SUBCHANNEL_UNREF(cl, p, r) \
|
75
|
-
grpc_connected_subchannel_unref((cl), (p))
|
64
|
+
#define GRPC_SUBCHANNEL_WEAK_UNREF(p, r) grpc_subchannel_weak_unref((p))
|
76
65
|
#define GRPC_SUBCHANNEL_CALL_REF(p, r) grpc_subchannel_call_ref((p))
|
77
|
-
#define GRPC_SUBCHANNEL_CALL_UNREF(
|
78
|
-
grpc_subchannel_call_unref((cl), (p))
|
66
|
+
#define GRPC_SUBCHANNEL_CALL_UNREF(p, r) grpc_subchannel_call_unref((p))
|
79
67
|
#define GRPC_SUBCHANNEL_REF_EXTRA_ARGS
|
80
68
|
#endif
|
81
69
|
|
70
|
+
namespace grpc_core {
|
71
|
+
class ConnectedSubchannel : public grpc_core::RefCountedWithTracing {
|
72
|
+
public:
|
73
|
+
struct CallArgs {
|
74
|
+
grpc_polling_entity* pollent;
|
75
|
+
grpc_slice path;
|
76
|
+
gpr_timespec start_time;
|
77
|
+
grpc_millis deadline;
|
78
|
+
gpr_arena* arena;
|
79
|
+
grpc_call_context_element* context;
|
80
|
+
grpc_call_combiner* call_combiner;
|
81
|
+
};
|
82
|
+
|
83
|
+
explicit ConnectedSubchannel(grpc_channel_stack* channel_stack);
|
84
|
+
~ConnectedSubchannel();
|
85
|
+
|
86
|
+
grpc_channel_stack* channel_stack() { return channel_stack_; }
|
87
|
+
void NotifyOnStateChange(grpc_pollset_set* interested_parties,
|
88
|
+
grpc_connectivity_state* state,
|
89
|
+
grpc_closure* closure);
|
90
|
+
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
|
91
|
+
grpc_error* CreateCall(const CallArgs& args, grpc_subchannel_call** call);
|
92
|
+
|
93
|
+
private:
|
94
|
+
grpc_channel_stack* channel_stack_;
|
95
|
+
};
|
96
|
+
} // namespace grpc_core
|
97
|
+
|
82
98
|
grpc_subchannel* grpc_subchannel_ref(
|
83
99
|
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
84
100
|
grpc_subchannel* grpc_subchannel_ref_from_weak_ref(
|
85
101
|
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
86
|
-
void grpc_subchannel_unref(
|
87
|
-
|
88
|
-
GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
102
|
+
void grpc_subchannel_unref(
|
103
|
+
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
89
104
|
grpc_subchannel* grpc_subchannel_weak_ref(
|
90
105
|
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
91
|
-
void grpc_subchannel_weak_unref(
|
92
|
-
|
93
|
-
GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
94
|
-
grpc_connected_subchannel* grpc_connected_subchannel_ref(
|
95
|
-
grpc_connected_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
96
|
-
void grpc_connected_subchannel_unref(grpc_exec_ctx* exec_ctx,
|
97
|
-
grpc_connected_subchannel* channel
|
98
|
-
GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
106
|
+
void grpc_subchannel_weak_unref(
|
107
|
+
grpc_subchannel* channel GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
99
108
|
void grpc_subchannel_call_ref(
|
100
109
|
grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
101
|
-
void grpc_subchannel_call_unref(
|
102
|
-
|
103
|
-
GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
104
|
-
|
105
|
-
/** construct a subchannel call */
|
106
|
-
typedef struct {
|
107
|
-
grpc_polling_entity* pollent;
|
108
|
-
grpc_slice path;
|
109
|
-
gpr_timespec start_time;
|
110
|
-
grpc_millis deadline;
|
111
|
-
gpr_arena* arena;
|
112
|
-
grpc_call_context_element* context;
|
113
|
-
grpc_call_combiner* call_combiner;
|
114
|
-
} grpc_connected_subchannel_call_args;
|
115
|
-
|
116
|
-
grpc_error* grpc_connected_subchannel_create_call(
|
117
|
-
grpc_exec_ctx* exec_ctx, grpc_connected_subchannel* connected_subchannel,
|
118
|
-
const grpc_connected_subchannel_call_args* args,
|
119
|
-
grpc_subchannel_call** subchannel_call);
|
120
|
-
|
121
|
-
/** process a transport level op */
|
122
|
-
void grpc_connected_subchannel_process_transport_op(
|
123
|
-
grpc_exec_ctx* exec_ctx, grpc_connected_subchannel* subchannel,
|
124
|
-
grpc_transport_op* op);
|
110
|
+
void grpc_subchannel_call_unref(
|
111
|
+
grpc_subchannel_call* call GRPC_SUBCHANNEL_REF_EXTRA_ARGS);
|
125
112
|
|
126
113
|
/** poll the current connectivity state of a channel */
|
127
114
|
grpc_connectivity_state grpc_subchannel_check_connectivity(
|
@@ -130,29 +117,21 @@ grpc_connectivity_state grpc_subchannel_check_connectivity(
|
|
130
117
|
/** Calls notify when the connectivity state of a channel becomes different
|
131
118
|
from *state. Updates *state with the new state of the channel. */
|
132
119
|
void grpc_subchannel_notify_on_state_change(
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
grpc_connected_subchannel* channel,
|
142
|
-
grpc_closure* notify);
|
143
|
-
|
144
|
-
/** retrieve the grpc_connected_subchannel - or NULL if called before
|
145
|
-
the subchannel becomes connected */
|
146
|
-
grpc_connected_subchannel* grpc_subchannel_get_connected_subchannel(
|
147
|
-
grpc_subchannel* subchannel);
|
120
|
+
grpc_subchannel* channel, grpc_pollset_set* interested_parties,
|
121
|
+
grpc_connectivity_state* state, grpc_closure* notify);
|
122
|
+
|
123
|
+
/** retrieve the grpc_core::ConnectedSubchannel - or nullptr if not connected
|
124
|
+
* (which may happen before it initially connects or during transient failures)
|
125
|
+
* */
|
126
|
+
grpc_core::RefCountedPtr<grpc_core::ConnectedSubchannel>
|
127
|
+
grpc_subchannel_get_connected_subchannel(grpc_subchannel* c);
|
148
128
|
|
149
129
|
/** return the subchannel index key for \a subchannel */
|
150
130
|
const grpc_subchannel_key* grpc_subchannel_get_key(
|
151
131
|
const grpc_subchannel* subchannel);
|
152
132
|
|
153
133
|
/** continue processing a transport op */
|
154
|
-
void grpc_subchannel_call_process_op(
|
155
|
-
grpc_subchannel_call* subchannel_call,
|
134
|
+
void grpc_subchannel_call_process_op(grpc_subchannel_call* subchannel_call,
|
156
135
|
grpc_transport_stream_op_batch* op);
|
157
136
|
|
158
137
|
/** Must be called once per call. Sets the 'then_schedule_closure' argument for
|
@@ -176,13 +155,11 @@ struct grpc_subchannel_args {
|
|
176
155
|
};
|
177
156
|
|
178
157
|
/** create a subchannel given a connector */
|
179
|
-
grpc_subchannel* grpc_subchannel_create(
|
180
|
-
grpc_connector* connector,
|
158
|
+
grpc_subchannel* grpc_subchannel_create(grpc_connector* connector,
|
181
159
|
const grpc_subchannel_args* args);
|
182
160
|
|
183
161
|
/// Sets \a addr from \a args.
|
184
|
-
void grpc_get_subchannel_address_arg(
|
185
|
-
const grpc_channel_args* args,
|
162
|
+
void grpc_get_subchannel_address_arg(const grpc_channel_args* args,
|
186
163
|
grpc_resolved_address* addr);
|
187
164
|
|
188
165
|
/// Returns the URI string for the address to connect to.
|
@@ -192,8 +169,4 @@ const char* grpc_get_subchannel_address_uri_arg(const grpc_channel_args* args);
|
|
192
169
|
/// Caller is responsible for freeing the string.
|
193
170
|
grpc_arg grpc_create_subchannel_address_arg(const grpc_resolved_address* addr);
|
194
171
|
|
195
|
-
#ifdef __cplusplus
|
196
|
-
}
|
197
|
-
#endif
|
198
|
-
|
199
172
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_H */
|
@@ -81,16 +81,14 @@ int grpc_subchannel_key_compare(const grpc_subchannel_key* a,
|
|
81
81
|
return grpc_channel_args_compare(a->args.args, b->args.args);
|
82
82
|
}
|
83
83
|
|
84
|
-
void grpc_subchannel_key_destroy(
|
85
|
-
grpc_subchannel_key* k) {
|
84
|
+
void grpc_subchannel_key_destroy(grpc_subchannel_key* k) {
|
86
85
|
gpr_free((grpc_channel_args*)k->args.filters);
|
87
|
-
grpc_channel_args_destroy(
|
86
|
+
grpc_channel_args_destroy((grpc_channel_args*)k->args.args);
|
88
87
|
gpr_free(k);
|
89
88
|
}
|
90
89
|
|
91
90
|
static void sck_avl_destroy(void* p, void* user_data) {
|
92
|
-
|
93
|
-
grpc_subchannel_key_destroy(exec_ctx, (grpc_subchannel_key*)p);
|
91
|
+
grpc_subchannel_key_destroy((grpc_subchannel_key*)p);
|
94
92
|
}
|
95
93
|
|
96
94
|
static void* sck_avl_copy(void* p, void* unused) {
|
@@ -103,8 +101,7 @@ static long sck_avl_compare(void* a, void* b, void* unused) {
|
|
103
101
|
}
|
104
102
|
|
105
103
|
static void scv_avl_destroy(void* p, void* user_data) {
|
106
|
-
|
107
|
-
GRPC_SUBCHANNEL_WEAK_UNREF(exec_ctx, (grpc_subchannel*)p, "subchannel_index");
|
104
|
+
GRPC_SUBCHANNEL_WEAK_UNREF((grpc_subchannel*)p, "subchannel_index");
|
108
105
|
}
|
109
106
|
|
110
107
|
static void* scv_avl_copy(void* p, void* unused) {
|
@@ -135,32 +132,29 @@ void grpc_subchannel_index_shutdown(void) {
|
|
135
132
|
|
136
133
|
void grpc_subchannel_index_unref(void) {
|
137
134
|
if (gpr_unref(&g_refcount)) {
|
138
|
-
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
139
135
|
gpr_mu_destroy(&g_mu);
|
140
|
-
gpr_avl_unref(g_subchannel_index,
|
141
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
136
|
+
gpr_avl_unref(g_subchannel_index, grpc_core::ExecCtx::Get());
|
142
137
|
}
|
143
138
|
}
|
144
139
|
|
145
140
|
void grpc_subchannel_index_ref(void) { gpr_ref_non_zero(&g_refcount); }
|
146
141
|
|
147
|
-
grpc_subchannel* grpc_subchannel_index_find(
|
148
|
-
grpc_subchannel_key* key) {
|
142
|
+
grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key) {
|
149
143
|
// Lock, and take a reference to the subchannel index.
|
150
144
|
// We don't need to do the search under a lock as avl's are immutable.
|
151
145
|
gpr_mu_lock(&g_mu);
|
152
|
-
gpr_avl index = gpr_avl_ref(g_subchannel_index,
|
146
|
+
gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
|
153
147
|
gpr_mu_unlock(&g_mu);
|
154
148
|
|
155
149
|
grpc_subchannel* c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(
|
156
|
-
(grpc_subchannel*)gpr_avl_get(index, key,
|
157
|
-
|
150
|
+
(grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get()),
|
151
|
+
"index_find");
|
152
|
+
gpr_avl_unref(index, grpc_core::ExecCtx::Get());
|
158
153
|
|
159
154
|
return c;
|
160
155
|
}
|
161
156
|
|
162
|
-
grpc_subchannel* grpc_subchannel_index_register(
|
163
|
-
grpc_subchannel_key* key,
|
157
|
+
grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key,
|
164
158
|
grpc_subchannel* constructed) {
|
165
159
|
grpc_subchannel* c = nullptr;
|
166
160
|
bool need_to_unref_constructed = false;
|
@@ -171,11 +165,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
|
|
171
165
|
// Compare and swap loop:
|
172
166
|
// - take a reference to the current index
|
173
167
|
gpr_mu_lock(&g_mu);
|
174
|
-
gpr_avl index = gpr_avl_ref(g_subchannel_index,
|
168
|
+
gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
|
175
169
|
gpr_mu_unlock(&g_mu);
|
176
170
|
|
177
171
|
// - Check to see if a subchannel already exists
|
178
|
-
c = (grpc_subchannel*)gpr_avl_get(index, key,
|
172
|
+
c = (grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get());
|
179
173
|
if (c != nullptr) {
|
180
174
|
c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register");
|
181
175
|
}
|
@@ -184,9 +178,11 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
|
|
184
178
|
need_to_unref_constructed = true;
|
185
179
|
} else {
|
186
180
|
// no -> update the avl and compare/swap
|
187
|
-
gpr_avl updated =
|
188
|
-
gpr_avl_ref(index,
|
189
|
-
|
181
|
+
gpr_avl updated =
|
182
|
+
gpr_avl_add(gpr_avl_ref(index, grpc_core::ExecCtx::Get()),
|
183
|
+
subchannel_key_copy(key),
|
184
|
+
GRPC_SUBCHANNEL_WEAK_REF(constructed, "index_register"),
|
185
|
+
grpc_core::ExecCtx::Get());
|
190
186
|
|
191
187
|
// it may happen (but it's expected to be unlikely)
|
192
188
|
// that some other thread has changed the index:
|
@@ -198,41 +194,42 @@ grpc_subchannel* grpc_subchannel_index_register(grpc_exec_ctx* exec_ctx,
|
|
198
194
|
}
|
199
195
|
gpr_mu_unlock(&g_mu);
|
200
196
|
|
201
|
-
gpr_avl_unref(updated,
|
197
|
+
gpr_avl_unref(updated, grpc_core::ExecCtx::Get());
|
202
198
|
}
|
203
|
-
gpr_avl_unref(index,
|
199
|
+
gpr_avl_unref(index, grpc_core::ExecCtx::Get());
|
204
200
|
}
|
205
201
|
|
206
202
|
if (need_to_unref_constructed) {
|
207
|
-
GRPC_SUBCHANNEL_UNREF(
|
203
|
+
GRPC_SUBCHANNEL_UNREF(constructed, "index_register");
|
208
204
|
}
|
209
205
|
|
210
206
|
return c;
|
211
207
|
}
|
212
208
|
|
213
|
-
void grpc_subchannel_index_unregister(
|
214
|
-
grpc_subchannel_key* key,
|
209
|
+
void grpc_subchannel_index_unregister(grpc_subchannel_key* key,
|
215
210
|
grpc_subchannel* constructed) {
|
216
211
|
bool done = false;
|
217
212
|
while (!done) {
|
218
213
|
// Compare and swap loop:
|
219
214
|
// - take a reference to the current index
|
220
215
|
gpr_mu_lock(&g_mu);
|
221
|
-
gpr_avl index = gpr_avl_ref(g_subchannel_index,
|
216
|
+
gpr_avl index = gpr_avl_ref(g_subchannel_index, grpc_core::ExecCtx::Get());
|
222
217
|
gpr_mu_unlock(&g_mu);
|
223
218
|
|
224
219
|
// Check to see if this key still refers to the previously
|
225
220
|
// registered subchannel
|
226
|
-
grpc_subchannel* c =
|
221
|
+
grpc_subchannel* c =
|
222
|
+
(grpc_subchannel*)gpr_avl_get(index, key, grpc_core::ExecCtx::Get());
|
227
223
|
if (c != constructed) {
|
228
|
-
gpr_avl_unref(index,
|
224
|
+
gpr_avl_unref(index, grpc_core::ExecCtx::Get());
|
229
225
|
break;
|
230
226
|
}
|
231
227
|
|
232
228
|
// compare and swap the update (some other thread may have
|
233
229
|
// mutated the index behind us)
|
234
230
|
gpr_avl updated =
|
235
|
-
gpr_avl_remove(gpr_avl_ref(index,
|
231
|
+
gpr_avl_remove(gpr_avl_ref(index, grpc_core::ExecCtx::Get()), key,
|
232
|
+
grpc_core::ExecCtx::Get());
|
236
233
|
|
237
234
|
gpr_mu_lock(&g_mu);
|
238
235
|
if (index.root == g_subchannel_index.root) {
|
@@ -241,8 +238,8 @@ void grpc_subchannel_index_unregister(grpc_exec_ctx* exec_ctx,
|
|
241
238
|
}
|
242
239
|
gpr_mu_unlock(&g_mu);
|
243
240
|
|
244
|
-
gpr_avl_unref(updated,
|
245
|
-
gpr_avl_unref(index,
|
241
|
+
gpr_avl_unref(updated, grpc_core::ExecCtx::Get());
|
242
|
+
gpr_avl_unref(index, grpc_core::ExecCtx::Get());
|
246
243
|
}
|
247
244
|
}
|
248
245
|
|
@@ -21,10 +21,6 @@
|
|
21
21
|
|
22
22
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
/** \file Provides an index of active subchannels so that they can be
|
29
25
|
shared amongst channels */
|
30
26
|
|
@@ -33,26 +29,22 @@ grpc_subchannel_key* grpc_subchannel_key_create(
|
|
33
29
|
const grpc_subchannel_args* args);
|
34
30
|
|
35
31
|
/** Destroy a subchannel key */
|
36
|
-
void grpc_subchannel_key_destroy(
|
37
|
-
grpc_subchannel_key* key);
|
32
|
+
void grpc_subchannel_key_destroy(grpc_subchannel_key* key);
|
38
33
|
|
39
34
|
/** Given a subchannel key, find the subchannel registered for it.
|
40
35
|
Returns NULL if no such channel exists.
|
41
36
|
Thread-safe. */
|
42
|
-
grpc_subchannel* grpc_subchannel_index_find(
|
43
|
-
grpc_subchannel_key* key);
|
37
|
+
grpc_subchannel* grpc_subchannel_index_find(grpc_subchannel_key* key);
|
44
38
|
|
45
39
|
/** Register a subchannel against a key.
|
46
40
|
Takes ownership of \a constructed.
|
47
41
|
Returns the registered subchannel. This may be different from
|
48
42
|
\a constructed in the case of a registration race. */
|
49
|
-
grpc_subchannel* grpc_subchannel_index_register(
|
50
|
-
grpc_subchannel_key* key,
|
43
|
+
grpc_subchannel* grpc_subchannel_index_register(grpc_subchannel_key* key,
|
51
44
|
grpc_subchannel* constructed);
|
52
45
|
|
53
46
|
/** Remove \a constructed as the registered subchannel for \a key. */
|
54
|
-
void grpc_subchannel_index_unregister(
|
55
|
-
grpc_subchannel_key* key,
|
47
|
+
void grpc_subchannel_index_unregister(grpc_subchannel_key* key,
|
56
48
|
grpc_subchannel* constructed);
|
57
49
|
|
58
50
|
int grpc_subchannel_key_compare(const grpc_subchannel_key* a,
|
@@ -82,8 +74,4 @@ void grpc_subchannel_index_unref(void);
|
|
82
74
|
* force_creation set. */
|
83
75
|
void grpc_subchannel_index_test_only_set_force_creation(bool force_creation);
|
84
76
|
|
85
|
-
#ifdef __cplusplus
|
86
|
-
}
|
87
|
-
#endif
|
88
|
-
|
89
77
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INDEX_H */
|
@@ -26,10 +26,10 @@
|
|
26
26
|
#include <grpc/support/port_platform.h>
|
27
27
|
#include <grpc/support/string_util.h>
|
28
28
|
|
29
|
+
#include "src/core/lib/gpr/string.h"
|
29
30
|
#include "src/core/lib/slice/percent_encoding.h"
|
30
31
|
#include "src/core/lib/slice/slice_internal.h"
|
31
32
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
32
|
-
#include "src/core/lib/support/string.h"
|
33
33
|
|
34
34
|
/** a size_t default value... maps to all 1's */
|
35
35
|
#define NOT_SET (~(size_t)0)
|
@@ -56,8 +56,8 @@ static grpc_uri* bad_uri(const char* uri_text, size_t pos, const char* section,
|
|
56
56
|
}
|
57
57
|
|
58
58
|
/** Returns a copy of percent decoded \a src[begin, end) */
|
59
|
-
static char* decode_and_copy_component(
|
60
|
-
size_t
|
59
|
+
static char* decode_and_copy_component(const char* src, size_t begin,
|
60
|
+
size_t end) {
|
61
61
|
grpc_slice component =
|
62
62
|
(begin == NOT_SET || end == NOT_SET)
|
63
63
|
? grpc_empty_slice()
|
@@ -65,8 +65,8 @@ static char* decode_and_copy_component(grpc_exec_ctx* exec_ctx, const char* src,
|
|
65
65
|
grpc_slice decoded_component =
|
66
66
|
grpc_permissive_percent_decode_slice(component);
|
67
67
|
char* out = grpc_dump_slice(decoded_component, GPR_DUMP_ASCII);
|
68
|
-
grpc_slice_unref_internal(
|
69
|
-
grpc_slice_unref_internal(
|
68
|
+
grpc_slice_unref_internal(component);
|
69
|
+
grpc_slice_unref_internal(decoded_component);
|
70
70
|
return out;
|
71
71
|
}
|
72
72
|
|
@@ -184,8 +184,7 @@ static void parse_query_parts(grpc_uri* uri) {
|
|
184
184
|
}
|
185
185
|
}
|
186
186
|
|
187
|
-
grpc_uri* grpc_uri_parse(
|
188
|
-
bool suppress_errors) {
|
187
|
+
grpc_uri* grpc_uri_parse(const char* uri_text, bool suppress_errors) {
|
189
188
|
grpc_uri* uri;
|
190
189
|
size_t scheme_begin = 0;
|
191
190
|
size_t scheme_end = NOT_SET;
|
@@ -273,16 +272,13 @@ grpc_uri* grpc_uri_parse(grpc_exec_ctx* exec_ctx, const char* uri_text,
|
|
273
272
|
}
|
274
273
|
|
275
274
|
uri = (grpc_uri*)gpr_zalloc(sizeof(*uri));
|
276
|
-
uri->scheme =
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
uri->
|
281
|
-
|
282
|
-
|
283
|
-
decode_and_copy_component(exec_ctx, uri_text, query_begin, query_end);
|
284
|
-
uri->fragment = decode_and_copy_component(exec_ctx, uri_text, fragment_begin,
|
285
|
-
fragment_end);
|
275
|
+
uri->scheme = decode_and_copy_component(uri_text, scheme_begin, scheme_end);
|
276
|
+
uri->authority =
|
277
|
+
decode_and_copy_component(uri_text, authority_begin, authority_end);
|
278
|
+
uri->path = decode_and_copy_component(uri_text, path_begin, path_end);
|
279
|
+
uri->query = decode_and_copy_component(uri_text, query_begin, query_end);
|
280
|
+
uri->fragment =
|
281
|
+
decode_and_copy_component(uri_text, fragment_begin, fragment_end);
|
286
282
|
parse_query_parts(uri);
|
287
283
|
|
288
284
|
return uri;
|