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
@@ -94,8 +94,7 @@ struct grpc_tcp_server {
|
|
94
94
|
|
95
95
|
/* Public function. Allocates the proper data structures to hold a
|
96
96
|
grpc_tcp_server. */
|
97
|
-
grpc_error* grpc_tcp_server_create(
|
98
|
-
grpc_closure* shutdown_complete,
|
97
|
+
grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
|
99
98
|
const grpc_channel_args* args,
|
100
99
|
grpc_tcp_server** server) {
|
101
100
|
grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
|
@@ -114,8 +113,7 @@ grpc_error* grpc_tcp_server_create(grpc_exec_ctx* exec_ctx,
|
|
114
113
|
return GRPC_ERROR_NONE;
|
115
114
|
}
|
116
115
|
|
117
|
-
static void destroy_server(
|
118
|
-
grpc_error* error) {
|
116
|
+
static void destroy_server(void* arg, grpc_error* error) {
|
119
117
|
grpc_tcp_server* s = (grpc_tcp_server*)arg;
|
120
118
|
|
121
119
|
/* Now that the accepts have been aborted, we can destroy the sockets.
|
@@ -128,18 +126,16 @@ static void destroy_server(grpc_exec_ctx* exec_ctx, void* arg,
|
|
128
126
|
grpc_winsocket_destroy(sp->socket);
|
129
127
|
gpr_free(sp);
|
130
128
|
}
|
131
|
-
grpc_channel_args_destroy(
|
129
|
+
grpc_channel_args_destroy(s->channel_args);
|
132
130
|
gpr_free(s);
|
133
131
|
}
|
134
132
|
|
135
|
-
static void finish_shutdown_locked(
|
136
|
-
grpc_tcp_server* s) {
|
133
|
+
static void finish_shutdown_locked(grpc_tcp_server* s) {
|
137
134
|
if (s->shutdown_complete != NULL) {
|
138
|
-
GRPC_CLOSURE_SCHED(
|
135
|
+
GRPC_CLOSURE_SCHED(s->shutdown_complete, GRPC_ERROR_NONE);
|
139
136
|
}
|
140
137
|
|
141
138
|
GRPC_CLOSURE_SCHED(
|
142
|
-
exec_ctx,
|
143
139
|
GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
|
144
140
|
GRPC_ERROR_NONE);
|
145
141
|
}
|
@@ -157,14 +153,14 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
|
|
157
153
|
gpr_mu_unlock(&s->mu);
|
158
154
|
}
|
159
155
|
|
160
|
-
static void tcp_server_destroy(
|
156
|
+
static void tcp_server_destroy(grpc_tcp_server* s) {
|
161
157
|
grpc_tcp_listener* sp;
|
162
158
|
gpr_mu_lock(&s->mu);
|
163
159
|
|
164
160
|
/* First, shutdown all fd's. This will queue abortion calls for all
|
165
161
|
of the pending accepts due to the normal operation mechanism. */
|
166
162
|
if (s->active_ports == 0) {
|
167
|
-
finish_shutdown_locked(
|
163
|
+
finish_shutdown_locked(s);
|
168
164
|
} else {
|
169
165
|
for (sp = s->head; sp; sp = sp->next) {
|
170
166
|
sp->shutting_down = 1;
|
@@ -174,13 +170,13 @@ static void tcp_server_destroy(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s) {
|
|
174
170
|
gpr_mu_unlock(&s->mu);
|
175
171
|
}
|
176
172
|
|
177
|
-
void grpc_tcp_server_unref(
|
173
|
+
void grpc_tcp_server_unref(grpc_tcp_server* s) {
|
178
174
|
if (gpr_unref(&s->refs)) {
|
179
|
-
grpc_tcp_server_shutdown_listeners(
|
175
|
+
grpc_tcp_server_shutdown_listeners(s);
|
180
176
|
gpr_mu_lock(&s->mu);
|
181
|
-
GRPC_CLOSURE_LIST_SCHED(
|
177
|
+
GRPC_CLOSURE_LIST_SCHED(&s->shutdown_starting);
|
182
178
|
gpr_mu_unlock(&s->mu);
|
183
|
-
tcp_server_destroy(
|
179
|
+
tcp_server_destroy(s);
|
184
180
|
}
|
185
181
|
}
|
186
182
|
|
@@ -234,19 +230,17 @@ failure:
|
|
234
230
|
return error;
|
235
231
|
}
|
236
232
|
|
237
|
-
static void decrement_active_ports_and_notify_locked(
|
238
|
-
grpc_tcp_listener* sp) {
|
233
|
+
static void decrement_active_ports_and_notify_locked(grpc_tcp_listener* sp) {
|
239
234
|
sp->shutting_down = 0;
|
240
235
|
GPR_ASSERT(sp->server->active_ports > 0);
|
241
236
|
if (0 == --sp->server->active_ports) {
|
242
|
-
finish_shutdown_locked(
|
237
|
+
finish_shutdown_locked(sp->server);
|
243
238
|
}
|
244
239
|
}
|
245
240
|
|
246
241
|
/* In order to do an async accept, we need to create a socket first which
|
247
242
|
will be the one assigned to the new incoming connection. */
|
248
|
-
static grpc_error* start_accept_locked(
|
249
|
-
grpc_tcp_listener* port) {
|
243
|
+
static grpc_error* start_accept_locked(grpc_tcp_listener* port) {
|
250
244
|
SOCKET sock = INVALID_SOCKET;
|
251
245
|
BOOL success;
|
252
246
|
DWORD addrlen = sizeof(struct sockaddr_in6) + 16;
|
@@ -285,7 +279,7 @@ static grpc_error* start_accept_locked(grpc_exec_ctx* exec_ctx,
|
|
285
279
|
/* We're ready to do the accept. Calling grpc_socket_notify_on_read may
|
286
280
|
immediately process an accept that happened in the meantime. */
|
287
281
|
port->new_socket = sock;
|
288
|
-
grpc_socket_notify_on_read(
|
282
|
+
grpc_socket_notify_on_read(port->socket, &port->on_accept);
|
289
283
|
port->outstanding_calls++;
|
290
284
|
return error;
|
291
285
|
|
@@ -296,7 +290,7 @@ failure:
|
|
296
290
|
}
|
297
291
|
|
298
292
|
/* Event manager callback when reads are ready. */
|
299
|
-
static void on_accept(
|
293
|
+
static void on_accept(void* arg, grpc_error* error) {
|
300
294
|
grpc_tcp_listener* sp = (grpc_tcp_listener*)arg;
|
301
295
|
SOCKET sock = sp->new_socket;
|
302
296
|
grpc_winsocket_callback_info* info = &sp->socket->read_info;
|
@@ -357,7 +351,7 @@ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
|
|
357
351
|
gpr_free(utf8_message);
|
358
352
|
}
|
359
353
|
gpr_asprintf(&fd_name, "tcp_server:%s", peer_name_string);
|
360
|
-
ep = grpc_tcp_create(
|
354
|
+
ep = grpc_tcp_create(grpc_winsocket_create(sock, fd_name),
|
361
355
|
sp->server->channel_args, peer_name_string);
|
362
356
|
gpr_free(fd_name);
|
363
357
|
gpr_free(peer_name_string);
|
@@ -375,17 +369,15 @@ static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
|
|
375
369
|
acceptor->from_server = sp->server;
|
376
370
|
acceptor->port_index = sp->port_index;
|
377
371
|
acceptor->fd_index = 0;
|
378
|
-
sp->server->on_accept_cb(
|
379
|
-
acceptor);
|
372
|
+
sp->server->on_accept_cb(sp->server->on_accept_cb_arg, ep, NULL, acceptor);
|
380
373
|
}
|
381
374
|
/* As we were notified from the IOCP of one and exactly one accept,
|
382
375
|
the former socked we created has now either been destroy or assigned
|
383
376
|
to the new connection. We need to create a new one for the next
|
384
377
|
connection. */
|
385
|
-
GPR_ASSERT(
|
386
|
-
GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(exec_ctx, sp)));
|
378
|
+
GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
|
387
379
|
if (0 == --sp->outstanding_calls) {
|
388
|
-
decrement_active_ports_and_notify_locked(
|
380
|
+
decrement_active_ports_and_notify_locked(sp);
|
389
381
|
}
|
390
382
|
gpr_mu_unlock(&sp->server->mu);
|
391
383
|
}
|
@@ -522,8 +514,8 @@ done:
|
|
522
514
|
return error;
|
523
515
|
}
|
524
516
|
|
525
|
-
void grpc_tcp_server_start(
|
526
|
-
|
517
|
+
void grpc_tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollset,
|
518
|
+
size_t pollset_count,
|
527
519
|
grpc_tcp_server_cb on_accept_cb,
|
528
520
|
void* on_accept_cb_arg) {
|
529
521
|
grpc_tcp_listener* sp;
|
@@ -534,14 +526,12 @@ void grpc_tcp_server_start(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s,
|
|
534
526
|
s->on_accept_cb = on_accept_cb;
|
535
527
|
s->on_accept_cb_arg = on_accept_cb_arg;
|
536
528
|
for (sp = s->head; sp; sp = sp->next) {
|
537
|
-
GPR_ASSERT(
|
538
|
-
GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(exec_ctx, sp)));
|
529
|
+
GPR_ASSERT(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
|
539
530
|
s->active_ports++;
|
540
531
|
}
|
541
532
|
gpr_mu_unlock(&s->mu);
|
542
533
|
}
|
543
534
|
|
544
|
-
void grpc_tcp_server_shutdown_listeners(
|
545
|
-
grpc_tcp_server* s) {}
|
535
|
+
void grpc_tcp_server_shutdown_listeners(grpc_tcp_server* s) {}
|
546
536
|
|
547
537
|
#endif /* GRPC_WINSOCK_SOCKET */
|
@@ -29,6 +29,7 @@
|
|
29
29
|
#include <grpc/support/log.h>
|
30
30
|
#include <grpc/support/string_util.h>
|
31
31
|
|
32
|
+
#include "src/core/lib/gpr/string.h"
|
32
33
|
#include "src/core/lib/iomgr/error.h"
|
33
34
|
#include "src/core/lib/iomgr/iomgr_uv.h"
|
34
35
|
#include "src/core/lib/iomgr/network_status_tracker.h"
|
@@ -36,7 +37,6 @@
|
|
36
37
|
#include "src/core/lib/iomgr/tcp_uv.h"
|
37
38
|
#include "src/core/lib/slice/slice_internal.h"
|
38
39
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
39
|
-
#include "src/core/lib/support/string.h"
|
40
40
|
|
41
41
|
grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
|
42
42
|
|
@@ -76,19 +76,18 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) {
|
|
76
76
|
grpc_slice_from_copied_string(tcp->peer_string));
|
77
77
|
}
|
78
78
|
|
79
|
-
static void tcp_free(
|
80
|
-
grpc_resource_user_unref(
|
79
|
+
static void tcp_free(grpc_tcp* tcp) {
|
80
|
+
grpc_resource_user_unref(tcp->resource_user);
|
81
81
|
gpr_free(tcp->handle);
|
82
82
|
gpr_free(tcp->peer_string);
|
83
83
|
gpr_free(tcp);
|
84
84
|
}
|
85
85
|
|
86
86
|
#ifndef NDEBUG
|
87
|
-
#define TCP_UNREF(
|
88
|
-
tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__)
|
87
|
+
#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), __FILE__, __LINE__)
|
89
88
|
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
|
90
|
-
static void tcp_unref(
|
91
|
-
|
89
|
+
static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
|
90
|
+
int line) {
|
92
91
|
if (grpc_tcp_trace.enabled()) {
|
93
92
|
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
94
93
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
@@ -96,7 +95,7 @@ static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
|
|
96
95
|
val - 1);
|
97
96
|
}
|
98
97
|
if (gpr_unref(&tcp->refcount)) {
|
99
|
-
tcp_free(
|
98
|
+
tcp_free(tcp);
|
100
99
|
}
|
101
100
|
}
|
102
101
|
|
@@ -111,11 +110,11 @@ static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
|
|
111
110
|
gpr_ref(&tcp->refcount);
|
112
111
|
}
|
113
112
|
#else
|
114
|
-
#define TCP_UNREF(
|
113
|
+
#define TCP_UNREF(tcp, reason) tcp_unref((tcp))
|
115
114
|
#define TCP_REF(tcp, reason) tcp_ref((tcp))
|
116
|
-
static void tcp_unref(
|
115
|
+
static void tcp_unref(grpc_tcp* tcp) {
|
117
116
|
if (gpr_unref(&tcp->refcount)) {
|
118
|
-
tcp_free(
|
117
|
+
tcp_free(tcp);
|
119
118
|
}
|
120
119
|
}
|
121
120
|
|
@@ -123,15 +122,14 @@ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); }
|
|
123
122
|
#endif
|
124
123
|
|
125
124
|
static void uv_close_callback(uv_handle_t* handle) {
|
126
|
-
|
125
|
+
grpc_core::ExecCtx exec_ctx;
|
127
126
|
grpc_tcp* tcp = (grpc_tcp*)handle->data;
|
128
|
-
TCP_UNREF(
|
129
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
127
|
+
TCP_UNREF(tcp, "destroy");
|
130
128
|
}
|
131
129
|
|
132
130
|
static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size,
|
133
131
|
uv_buf_t* buf) {
|
134
|
-
|
132
|
+
grpc_core::ExecCtx exec_ctx;
|
135
133
|
grpc_tcp* tcp = (grpc_tcp*)handle->data;
|
136
134
|
(void)suggested_size;
|
137
135
|
/* Before calling uv_read_start, we allocate a buffer with exactly one slice
|
@@ -139,11 +137,9 @@ static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size,
|
|
139
137
|
* allocation was successful. So slices[0] should always exist here */
|
140
138
|
buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]);
|
141
139
|
buf->len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]);
|
142
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
143
140
|
}
|
144
141
|
|
145
|
-
static void call_read_cb(
|
146
|
-
grpc_error* error) {
|
142
|
+
static void call_read_cb(grpc_tcp* tcp, grpc_error* error) {
|
147
143
|
grpc_closure* cb = tcp->read_cb;
|
148
144
|
if (grpc_tcp_trace.enabled()) {
|
149
145
|
gpr_log(GPR_DEBUG, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
@@ -160,26 +156,26 @@ static void call_read_cb(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
|
|
160
156
|
}
|
161
157
|
tcp->read_slices = NULL;
|
162
158
|
tcp->read_cb = NULL;
|
163
|
-
GRPC_CLOSURE_RUN(
|
159
|
+
GRPC_CLOSURE_RUN(cb, error);
|
164
160
|
}
|
165
161
|
|
166
162
|
static void read_callback(uv_stream_t* stream, ssize_t nread,
|
167
163
|
const uv_buf_t* buf) {
|
168
164
|
grpc_error* error;
|
169
|
-
|
165
|
+
grpc_core::ExecCtx exec_ctx;
|
170
166
|
grpc_tcp* tcp = (grpc_tcp*)stream->data;
|
171
167
|
grpc_slice_buffer garbage;
|
172
168
|
if (nread == 0) {
|
173
169
|
// Nothing happened. Wait for the next callback
|
174
170
|
return;
|
175
171
|
}
|
176
|
-
TCP_UNREF(
|
172
|
+
TCP_UNREF(tcp, "read");
|
177
173
|
// TODO(murgatroid99): figure out what the return value here means
|
178
174
|
uv_read_stop(stream);
|
179
175
|
if (nread == UV_EOF) {
|
180
176
|
error =
|
181
177
|
tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF"), tcp);
|
182
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
178
|
+
grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices);
|
183
179
|
} else if (nread > 0) {
|
184
180
|
// Successful read
|
185
181
|
error = GRPC_ERROR_NONE;
|
@@ -189,20 +185,18 @@ static void read_callback(uv_stream_t* stream, ssize_t nread,
|
|
189
185
|
grpc_slice_buffer_init(&garbage);
|
190
186
|
grpc_slice_buffer_trim_end(
|
191
187
|
tcp->read_slices, tcp->read_slices->length - (size_t)nread, &garbage);
|
192
|
-
grpc_slice_buffer_reset_and_unref_internal(&
|
188
|
+
grpc_slice_buffer_reset_and_unref_internal(&garbage);
|
193
189
|
}
|
194
190
|
} else {
|
195
191
|
// nread < 0: Error
|
196
192
|
error = tcp_annotate_error(
|
197
193
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed"), tcp);
|
198
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
194
|
+
grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices);
|
199
195
|
}
|
200
|
-
call_read_cb(
|
201
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
196
|
+
call_read_cb(tcp, error);
|
202
197
|
}
|
203
198
|
|
204
|
-
static void tcp_read_allocation_done(
|
205
|
-
grpc_error* error) {
|
199
|
+
static void tcp_read_allocation_done(void* tcpp, grpc_error* error) {
|
206
200
|
int status;
|
207
201
|
grpc_tcp* tcp = (grpc_tcp*)tcpp;
|
208
202
|
if (grpc_tcp_trace.enabled()) {
|
@@ -222,9 +216,9 @@ static void tcp_read_allocation_done(grpc_exec_ctx* exec_ctx, void* tcpp,
|
|
222
216
|
}
|
223
217
|
}
|
224
218
|
if (error != GRPC_ERROR_NONE) {
|
225
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
226
|
-
call_read_cb(
|
227
|
-
TCP_UNREF(
|
219
|
+
grpc_slice_buffer_reset_and_unref_internal(tcp->read_slices);
|
220
|
+
call_read_cb(tcp, GRPC_ERROR_REF(error));
|
221
|
+
TCP_UNREF(tcp, "read");
|
228
222
|
}
|
229
223
|
if (grpc_tcp_trace.enabled()) {
|
230
224
|
const char* str = grpc_error_string(error);
|
@@ -232,16 +226,16 @@ static void tcp_read_allocation_done(grpc_exec_ctx* exec_ctx, void* tcpp,
|
|
232
226
|
}
|
233
227
|
}
|
234
228
|
|
235
|
-
static void uv_endpoint_read(
|
236
|
-
|
229
|
+
static void uv_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
230
|
+
grpc_closure* cb) {
|
237
231
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
238
232
|
GRPC_UV_ASSERT_SAME_THREAD();
|
239
233
|
GPR_ASSERT(tcp->read_cb == NULL);
|
240
234
|
tcp->read_cb = cb;
|
241
235
|
tcp->read_slices = read_slices;
|
242
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
236
|
+
grpc_slice_buffer_reset_and_unref_internal(read_slices);
|
243
237
|
TCP_REF(tcp, "read");
|
244
|
-
grpc_resource_user_alloc_slices(
|
238
|
+
grpc_resource_user_alloc_slices(&tcp->slice_allocator,
|
245
239
|
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
|
246
240
|
tcp->read_slices);
|
247
241
|
}
|
@@ -249,10 +243,10 @@ static void uv_endpoint_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
249
243
|
static void write_callback(uv_write_t* req, int status) {
|
250
244
|
grpc_tcp* tcp = (grpc_tcp*)req->data;
|
251
245
|
grpc_error* error;
|
252
|
-
|
246
|
+
grpc_core::ExecCtx exec_ctx;
|
253
247
|
grpc_closure* cb = tcp->write_cb;
|
254
248
|
tcp->write_cb = NULL;
|
255
|
-
TCP_UNREF(
|
249
|
+
TCP_UNREF(tcp, "write");
|
256
250
|
if (status == 0) {
|
257
251
|
error = GRPC_ERROR_NONE;
|
258
252
|
} else {
|
@@ -264,11 +258,10 @@ static void write_callback(uv_write_t* req, int status) {
|
|
264
258
|
gpr_log(GPR_DEBUG, "write complete on %p: error=%s", tcp, str);
|
265
259
|
}
|
266
260
|
gpr_free(tcp->write_buffers);
|
267
|
-
GRPC_CLOSURE_SCHED(
|
268
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
261
|
+
GRPC_CLOSURE_SCHED(cb, error);
|
269
262
|
}
|
270
263
|
|
271
|
-
static void uv_endpoint_write(
|
264
|
+
static void uv_endpoint_write(grpc_endpoint* ep,
|
272
265
|
grpc_slice_buffer* write_slices,
|
273
266
|
grpc_closure* cb) {
|
274
267
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
@@ -291,7 +284,7 @@ static void uv_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
291
284
|
}
|
292
285
|
|
293
286
|
if (tcp->shutting_down) {
|
294
|
-
GRPC_CLOSURE_SCHED(
|
287
|
+
GRPC_CLOSURE_SCHED(cb,
|
295
288
|
tcp_annotate_error(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
296
289
|
"TCP socket is shutting down"),
|
297
290
|
tcp));
|
@@ -304,7 +297,7 @@ static void uv_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
304
297
|
if (tcp->write_slices->count == 0) {
|
305
298
|
// No slices means we don't have to do anything,
|
306
299
|
// and libuv doesn't like empty writes
|
307
|
-
GRPC_CLOSURE_SCHED(
|
300
|
+
GRPC_CLOSURE_SCHED(cb, GRPC_ERROR_NONE);
|
308
301
|
return;
|
309
302
|
}
|
310
303
|
|
@@ -325,37 +318,31 @@ static void uv_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
325
318
|
write_callback);
|
326
319
|
}
|
327
320
|
|
328
|
-
static void uv_add_to_pollset(
|
329
|
-
grpc_pollset* pollset) {
|
321
|
+
static void uv_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
|
330
322
|
// No-op. We're ignoring pollsets currently
|
331
|
-
(void)exec_ctx;
|
332
323
|
(void)ep;
|
333
324
|
(void)pollset;
|
334
325
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
335
326
|
tcp->pollset = pollset;
|
336
327
|
}
|
337
328
|
|
338
|
-
static void uv_add_to_pollset_set(
|
329
|
+
static void uv_add_to_pollset_set(grpc_endpoint* ep,
|
339
330
|
grpc_pollset_set* pollset) {
|
340
331
|
// No-op. We're ignoring pollsets currently
|
341
|
-
(void)exec_ctx;
|
342
332
|
(void)ep;
|
343
333
|
(void)pollset;
|
344
334
|
}
|
345
335
|
|
346
|
-
static void uv_delete_from_pollset_set(
|
347
|
-
grpc_endpoint* ep,
|
336
|
+
static void uv_delete_from_pollset_set(grpc_endpoint* ep,
|
348
337
|
grpc_pollset_set* pollset) {
|
349
338
|
// No-op. We're ignoring pollsets currently
|
350
|
-
(void)exec_ctx;
|
351
339
|
(void)ep;
|
352
340
|
(void)pollset;
|
353
341
|
}
|
354
342
|
|
355
343
|
static void shutdown_callback(uv_shutdown_t* req, int status) {}
|
356
344
|
|
357
|
-
static void uv_endpoint_shutdown(
|
358
|
-
grpc_error* why) {
|
345
|
+
static void uv_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
359
346
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
360
347
|
if (!tcp->shutting_down) {
|
361
348
|
if (grpc_tcp_trace.enabled()) {
|
@@ -365,12 +352,12 @@ static void uv_endpoint_shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
365
352
|
tcp->shutting_down = true;
|
366
353
|
uv_shutdown_t* req = &tcp->shutdown_req;
|
367
354
|
uv_shutdown(req, (uv_stream_t*)tcp->handle, shutdown_callback);
|
368
|
-
grpc_resource_user_shutdown(
|
355
|
+
grpc_resource_user_shutdown(tcp->resource_user);
|
369
356
|
}
|
370
357
|
GRPC_ERROR_UNREF(why);
|
371
358
|
}
|
372
359
|
|
373
|
-
static void uv_destroy(
|
360
|
+
static void uv_destroy(grpc_endpoint* ep) {
|
374
361
|
grpc_network_status_unregister_endpoint(ep);
|
375
362
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
376
363
|
uv_close((uv_handle_t*)tcp->handle, uv_close_callback);
|
@@ -403,7 +390,7 @@ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle,
|
|
403
390
|
grpc_resource_quota* resource_quota,
|
404
391
|
char* peer_string) {
|
405
392
|
grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp));
|
406
|
-
|
393
|
+
grpc_core::ExecCtx exec_ctx;
|
407
394
|
|
408
395
|
if (grpc_tcp_trace.enabled()) {
|
409
396
|
gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp);
|
@@ -430,7 +417,6 @@ grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle,
|
|
430
417
|
uv_unref((uv_handle_t*)handle);
|
431
418
|
#endif
|
432
419
|
|
433
|
-
grpc_exec_ctx_finish(&exec_ctx);
|
434
420
|
return &tcp->base;
|
435
421
|
}
|
436
422
|
|