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
data/src/core/lib/iomgr/tcp_uv.h
CHANGED
@@ -42,18 +42,10 @@ extern grpc_core::TraceFlag grpc_tcp_trace;
|
|
42
42
|
|
43
43
|
#define GRPC_TCP_DEFAULT_READ_SLICE_SIZE 8192
|
44
44
|
|
45
|
-
#ifdef __cplusplus
|
46
|
-
extern "C" {
|
47
|
-
#endif
|
48
|
-
|
49
45
|
grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle,
|
50
46
|
grpc_resource_quota* resource_quota,
|
51
47
|
char* peer_string);
|
52
48
|
|
53
|
-
#ifdef __cplusplus
|
54
|
-
}
|
55
|
-
#endif
|
56
|
-
|
57
49
|
#endif /* GRPC_UV */
|
58
50
|
|
59
51
|
#endif /* GRPC_CORE_LIB_IOMGR_TCP_UV_H */
|
@@ -109,21 +109,20 @@ typedef struct grpc_tcp {
|
|
109
109
|
char* peer_string;
|
110
110
|
} grpc_tcp;
|
111
111
|
|
112
|
-
static void tcp_free(
|
112
|
+
static void tcp_free(grpc_tcp* tcp) {
|
113
113
|
grpc_winsocket_destroy(tcp->socket);
|
114
114
|
gpr_mu_destroy(&tcp->mu);
|
115
115
|
gpr_free(tcp->peer_string);
|
116
|
-
grpc_resource_user_unref(
|
116
|
+
grpc_resource_user_unref(tcp->resource_user);
|
117
117
|
if (tcp->shutting_down) GRPC_ERROR_UNREF(tcp->shutdown_error);
|
118
118
|
gpr_free(tcp);
|
119
119
|
}
|
120
120
|
|
121
121
|
#ifndef NDEBUG
|
122
|
-
#define TCP_UNREF(
|
123
|
-
tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__)
|
122
|
+
#define TCP_UNREF(tcp, reason) tcp_unref((tcp), (reason), __FILE__, __LINE__)
|
124
123
|
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
|
125
|
-
static void tcp_unref(
|
126
|
-
|
124
|
+
static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
|
125
|
+
int line) {
|
127
126
|
if (grpc_tcp_trace.enabled()) {
|
128
127
|
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
129
128
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
@@ -131,7 +130,7 @@ static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
|
|
131
130
|
val - 1);
|
132
131
|
}
|
133
132
|
if (gpr_unref(&tcp->refcount)) {
|
134
|
-
tcp_free(
|
133
|
+
tcp_free(tcp);
|
135
134
|
}
|
136
135
|
}
|
137
136
|
|
@@ -146,11 +145,11 @@ static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
|
|
146
145
|
gpr_ref(&tcp->refcount);
|
147
146
|
}
|
148
147
|
#else
|
149
|
-
#define TCP_UNREF(
|
148
|
+
#define TCP_UNREF(tcp, reason) tcp_unref((tcp))
|
150
149
|
#define TCP_REF(tcp, reason) tcp_ref((tcp))
|
151
|
-
static void tcp_unref(
|
150
|
+
static void tcp_unref(grpc_tcp* tcp) {
|
152
151
|
if (gpr_unref(&tcp->refcount)) {
|
153
|
-
tcp_free(
|
152
|
+
tcp_free(tcp);
|
154
153
|
}
|
155
154
|
}
|
156
155
|
|
@@ -158,7 +157,7 @@ static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); }
|
|
158
157
|
#endif
|
159
158
|
|
160
159
|
/* Asynchronous callback from the IOCP, or the background thread. */
|
161
|
-
static void on_read(
|
160
|
+
static void on_read(void* tcpp, grpc_error* error) {
|
162
161
|
grpc_tcp* tcp = (grpc_tcp*)tcpp;
|
163
162
|
grpc_closure* cb = tcp->read_cb;
|
164
163
|
grpc_winsocket* socket = tcp->socket;
|
@@ -172,13 +171,13 @@ static void on_read(grpc_exec_ctx* exec_ctx, void* tcpp, grpc_error* error) {
|
|
172
171
|
char* utf8_message = gpr_format_message(info->wsa_error);
|
173
172
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(utf8_message);
|
174
173
|
gpr_free(utf8_message);
|
175
|
-
grpc_slice_unref_internal(
|
174
|
+
grpc_slice_unref_internal(tcp->read_slice);
|
176
175
|
} else {
|
177
176
|
if (info->bytes_transfered != 0 && !tcp->shutting_down) {
|
178
177
|
sub = grpc_slice_sub_no_ref(tcp->read_slice, 0, info->bytes_transfered);
|
179
178
|
grpc_slice_buffer_add(tcp->read_slices, sub);
|
180
179
|
} else {
|
181
|
-
grpc_slice_unref_internal(
|
180
|
+
grpc_slice_unref_internal(tcp->read_slice);
|
182
181
|
error = tcp->shutting_down
|
183
182
|
? GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
184
183
|
"TCP stream shutting down", &tcp->shutdown_error, 1)
|
@@ -188,12 +187,12 @@ static void on_read(grpc_exec_ctx* exec_ctx, void* tcpp, grpc_error* error) {
|
|
188
187
|
}
|
189
188
|
|
190
189
|
tcp->read_cb = NULL;
|
191
|
-
TCP_UNREF(
|
192
|
-
GRPC_CLOSURE_SCHED(
|
190
|
+
TCP_UNREF(tcp, "read");
|
191
|
+
GRPC_CLOSURE_SCHED(cb, error);
|
193
192
|
}
|
194
193
|
|
195
|
-
static void win_read(
|
196
|
-
|
194
|
+
static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
195
|
+
grpc_closure* cb) {
|
197
196
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
198
197
|
grpc_winsocket* handle = tcp->socket;
|
199
198
|
grpc_winsocket_callback_info* info = &handle->read_info;
|
@@ -204,15 +203,14 @@ static void win_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
204
203
|
|
205
204
|
if (tcp->shutting_down) {
|
206
205
|
GRPC_CLOSURE_SCHED(
|
207
|
-
|
208
|
-
|
209
|
-
"TCP socket is shutting down", &tcp->shutdown_error, 1));
|
206
|
+
cb, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
207
|
+
"TCP socket is shutting down", &tcp->shutdown_error, 1));
|
210
208
|
return;
|
211
209
|
}
|
212
210
|
|
213
211
|
tcp->read_cb = cb;
|
214
212
|
tcp->read_slices = read_slices;
|
215
|
-
grpc_slice_buffer_reset_and_unref_internal(
|
213
|
+
grpc_slice_buffer_reset_and_unref_internal(read_slices);
|
216
214
|
|
217
215
|
tcp->read_slice = GRPC_SLICE_MALLOC(8192);
|
218
216
|
|
@@ -230,7 +228,7 @@ static void win_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
230
228
|
/* Did we get data immediately ? Yay. */
|
231
229
|
if (info->wsa_error != WSAEWOULDBLOCK) {
|
232
230
|
info->bytes_transfered = bytes_read;
|
233
|
-
GRPC_CLOSURE_SCHED(
|
231
|
+
GRPC_CLOSURE_SCHED(&tcp->on_read, GRPC_ERROR_NONE);
|
234
232
|
return;
|
235
233
|
}
|
236
234
|
|
@@ -243,17 +241,17 @@ static void win_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
243
241
|
int wsa_error = WSAGetLastError();
|
244
242
|
if (wsa_error != WSA_IO_PENDING) {
|
245
243
|
info->wsa_error = wsa_error;
|
246
|
-
GRPC_CLOSURE_SCHED(
|
244
|
+
GRPC_CLOSURE_SCHED(&tcp->on_read,
|
247
245
|
GRPC_WSA_ERROR(info->wsa_error, "WSARecv"));
|
248
246
|
return;
|
249
247
|
}
|
250
248
|
}
|
251
249
|
|
252
|
-
grpc_socket_notify_on_read(
|
250
|
+
grpc_socket_notify_on_read(tcp->socket, &tcp->on_read);
|
253
251
|
}
|
254
252
|
|
255
253
|
/* Asynchronous callback from the IOCP, or the background thread. */
|
256
|
-
static void on_write(
|
254
|
+
static void on_write(void* tcpp, grpc_error* error) {
|
257
255
|
grpc_tcp* tcp = (grpc_tcp*)tcpp;
|
258
256
|
grpc_winsocket* handle = tcp->socket;
|
259
257
|
grpc_winsocket_callback_info* info = &handle->write_info;
|
@@ -274,13 +272,13 @@ static void on_write(grpc_exec_ctx* exec_ctx, void* tcpp, grpc_error* error) {
|
|
274
272
|
}
|
275
273
|
}
|
276
274
|
|
277
|
-
TCP_UNREF(
|
278
|
-
GRPC_CLOSURE_SCHED(
|
275
|
+
TCP_UNREF(tcp, "write");
|
276
|
+
GRPC_CLOSURE_SCHED(cb, error);
|
279
277
|
}
|
280
278
|
|
281
279
|
/* Initiates a write. */
|
282
|
-
static void win_write(
|
283
|
-
|
280
|
+
static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
281
|
+
grpc_closure* cb) {
|
284
282
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
285
283
|
grpc_winsocket* socket = tcp->socket;
|
286
284
|
grpc_winsocket_callback_info* info = &socket->write_info;
|
@@ -294,9 +292,8 @@ static void win_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
294
292
|
|
295
293
|
if (tcp->shutting_down) {
|
296
294
|
GRPC_CLOSURE_SCHED(
|
297
|
-
|
298
|
-
|
299
|
-
"TCP socket is shutting down", &tcp->shutdown_error, 1));
|
295
|
+
cb, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
296
|
+
"TCP socket is shutting down", &tcp->shutdown_error, 1));
|
300
297
|
return;
|
301
298
|
}
|
302
299
|
|
@@ -327,7 +324,7 @@ static void win_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
327
324
|
grpc_error* error = status == 0
|
328
325
|
? GRPC_ERROR_NONE
|
329
326
|
: GRPC_WSA_ERROR(info->wsa_error, "WSASend");
|
330
|
-
GRPC_CLOSURE_SCHED(
|
327
|
+
GRPC_CLOSURE_SCHED(cb, error);
|
331
328
|
if (allocated) gpr_free(allocated);
|
332
329
|
return;
|
333
330
|
}
|
@@ -344,35 +341,32 @@ static void win_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
344
341
|
if (status != 0) {
|
345
342
|
int wsa_error = WSAGetLastError();
|
346
343
|
if (wsa_error != WSA_IO_PENDING) {
|
347
|
-
TCP_UNREF(
|
348
|
-
GRPC_CLOSURE_SCHED(
|
344
|
+
TCP_UNREF(tcp, "write");
|
345
|
+
GRPC_CLOSURE_SCHED(cb, GRPC_WSA_ERROR(wsa_error, "WSASend"));
|
349
346
|
return;
|
350
347
|
}
|
351
348
|
}
|
352
349
|
|
353
350
|
/* As all is now setup, we can now ask for the IOCP notification. It may
|
354
351
|
trigger the callback immediately however, but no matter. */
|
355
|
-
grpc_socket_notify_on_write(
|
352
|
+
grpc_socket_notify_on_write(socket, &tcp->on_write);
|
356
353
|
}
|
357
354
|
|
358
|
-
static void win_add_to_pollset(
|
359
|
-
grpc_pollset* ps) {
|
355
|
+
static void win_add_to_pollset(grpc_endpoint* ep, grpc_pollset* ps) {
|
360
356
|
grpc_tcp* tcp;
|
361
357
|
(void)ps;
|
362
358
|
tcp = (grpc_tcp*)ep;
|
363
359
|
grpc_iocp_add_socket(tcp->socket);
|
364
360
|
}
|
365
361
|
|
366
|
-
static void win_add_to_pollset_set(
|
367
|
-
grpc_pollset_set* pss) {
|
362
|
+
static void win_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pss) {
|
368
363
|
grpc_tcp* tcp;
|
369
364
|
(void)pss;
|
370
365
|
tcp = (grpc_tcp*)ep;
|
371
366
|
grpc_iocp_add_socket(tcp->socket);
|
372
367
|
}
|
373
368
|
|
374
|
-
static void win_delete_from_pollset_set(
|
375
|
-
grpc_endpoint* ep,
|
369
|
+
static void win_delete_from_pollset_set(grpc_endpoint* ep,
|
376
370
|
grpc_pollset_set* pss) {}
|
377
371
|
|
378
372
|
/* Initiates a shutdown of the TCP endpoint. This will queue abort callbacks
|
@@ -381,8 +375,7 @@ static void win_delete_from_pollset_set(grpc_exec_ctx* exec_ctx,
|
|
381
375
|
we're not going to protect against these. However the IO Completion Port
|
382
376
|
callback will happen from another thread, so we need to protect against
|
383
377
|
concurrent access of the data structure in that regard. */
|
384
|
-
static void win_shutdown(
|
385
|
-
grpc_error* why) {
|
378
|
+
static void win_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
386
379
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
387
380
|
gpr_mu_lock(&tcp->mu);
|
388
381
|
/* At that point, what may happen is that we're already inside the IOCP
|
@@ -395,13 +388,13 @@ static void win_shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
|
395
388
|
}
|
396
389
|
grpc_winsocket_shutdown(tcp->socket);
|
397
390
|
gpr_mu_unlock(&tcp->mu);
|
398
|
-
grpc_resource_user_shutdown(
|
391
|
+
grpc_resource_user_shutdown(tcp->resource_user);
|
399
392
|
}
|
400
393
|
|
401
|
-
static void win_destroy(
|
394
|
+
static void win_destroy(grpc_endpoint* ep) {
|
402
395
|
grpc_network_status_unregister_endpoint(ep);
|
403
396
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
404
|
-
TCP_UNREF(
|
397
|
+
TCP_UNREF(tcp, "destroy");
|
405
398
|
}
|
406
399
|
|
407
400
|
static char* win_get_peer(grpc_endpoint* ep) {
|
@@ -427,14 +420,14 @@ static grpc_endpoint_vtable vtable = {win_read,
|
|
427
420
|
win_get_peer,
|
428
421
|
win_get_fd};
|
429
422
|
|
430
|
-
grpc_endpoint* grpc_tcp_create(
|
423
|
+
grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
|
431
424
|
grpc_channel_args* channel_args,
|
432
425
|
const char* peer_string) {
|
433
426
|
grpc_resource_quota* resource_quota = grpc_resource_quota_create(NULL);
|
434
427
|
if (channel_args != NULL) {
|
435
428
|
for (size_t i = 0; i < channel_args->num_args; i++) {
|
436
429
|
if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_RESOURCE_QUOTA)) {
|
437
|
-
grpc_resource_quota_unref_internal(
|
430
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
438
431
|
resource_quota = grpc_resource_quota_ref_internal(
|
439
432
|
(grpc_resource_quota*)channel_args->args[i].value.pointer.p);
|
440
433
|
}
|
@@ -452,7 +445,7 @@ grpc_endpoint* grpc_tcp_create(grpc_exec_ctx* exec_ctx, grpc_winsocket* socket,
|
|
452
445
|
tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
|
453
446
|
/* Tell network status tracking code about the new endpoint */
|
454
447
|
grpc_network_status_register_endpoint(&tcp->base);
|
455
|
-
grpc_resource_quota_unref_internal(
|
448
|
+
grpc_resource_quota_unref_internal(resource_quota);
|
456
449
|
|
457
450
|
return &tcp->base;
|
458
451
|
}
|
@@ -35,23 +35,15 @@
|
|
35
35
|
#include "src/core/lib/iomgr/endpoint.h"
|
36
36
|
#include "src/core/lib/iomgr/socket_windows.h"
|
37
37
|
|
38
|
-
#ifdef __cplusplus
|
39
|
-
extern "C" {
|
40
|
-
#endif
|
41
|
-
|
42
38
|
/* Create a tcp endpoint given a winsock handle.
|
43
39
|
* Takes ownership of the handle.
|
44
40
|
*/
|
45
|
-
grpc_endpoint* grpc_tcp_create(
|
41
|
+
grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
|
46
42
|
grpc_channel_args* channel_args,
|
47
43
|
const char* peer_string);
|
48
44
|
|
49
45
|
grpc_error* grpc_tcp_prepare_socket(SOCKET sock);
|
50
46
|
|
51
|
-
#ifdef __cplusplus
|
52
|
-
}
|
53
|
-
#endif
|
54
|
-
|
55
47
|
#endif
|
56
48
|
|
57
49
|
#endif /* GRPC_CORE_LIB_IOMGR_TCP_WINDOWS_H */
|
@@ -19,10 +19,6 @@
|
|
19
19
|
#ifndef GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
|
20
20
|
#define GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
|
21
21
|
|
22
|
-
#ifdef __cplusplus
|
23
|
-
extern "C" {
|
24
|
-
#endif
|
25
|
-
|
26
22
|
/* This tracks a time-decaying weighted average. It works by collecting
|
27
23
|
batches of samples and then mixing their average into a time-decaying
|
28
24
|
weighted mean. It is designed for batch operations where we do many adds
|
@@ -74,8 +70,4 @@ void grpc_time_averaged_stats_add_sample(grpc_time_averaged_stats* stats,
|
|
74
70
|
value. */
|
75
71
|
double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats* stats);
|
76
72
|
|
77
|
-
#ifdef __cplusplus
|
78
|
-
}
|
79
|
-
#endif
|
80
|
-
|
81
73
|
#endif /* GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H */
|
data/src/core/lib/iomgr/timer.h
CHANGED
@@ -32,10 +32,6 @@
|
|
32
32
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
33
33
|
#include "src/core/lib/iomgr/iomgr.h"
|
34
34
|
|
35
|
-
#ifdef __cplusplus
|
36
|
-
extern "C" {
|
37
|
-
#endif
|
38
|
-
|
39
35
|
typedef struct grpc_timer grpc_timer;
|
40
36
|
|
41
37
|
/* Initialize *timer. When expired or canceled, closure will be called with
|
@@ -44,8 +40,8 @@ typedef struct grpc_timer grpc_timer;
|
|
44
40
|
application code should check the error to determine how it was invoked. The
|
45
41
|
application callback is also responsible for maintaining information about
|
46
42
|
when to free up any user-level state. */
|
47
|
-
void grpc_timer_init(
|
48
|
-
|
43
|
+
void grpc_timer_init(grpc_timer* timer, grpc_millis deadline,
|
44
|
+
grpc_closure* closure);
|
49
45
|
|
50
46
|
/* Initialize *timer without setting it. This can later be passed through
|
51
47
|
the regular init or cancel */
|
@@ -77,7 +73,7 @@ void grpc_timer_init_unset(grpc_timer* timer);
|
|
77
73
|
matches this aim.
|
78
74
|
|
79
75
|
Requires: cancel() must happen after init() on a given timer */
|
80
|
-
void grpc_timer_cancel(
|
76
|
+
void grpc_timer_cancel(grpc_timer* timer);
|
81
77
|
|
82
78
|
/* iomgr internal api for dealing with timers */
|
83
79
|
|
@@ -94,10 +90,9 @@ typedef enum {
|
|
94
90
|
*next is never guaranteed to be updated on any given execution; however,
|
95
91
|
with high probability at least one thread in the system will see an update
|
96
92
|
at any time slice. */
|
97
|
-
grpc_timer_check_result grpc_timer_check(
|
98
|
-
|
99
|
-
void
|
100
|
-
void grpc_timer_list_shutdown(grpc_exec_ctx* exec_ctx);
|
93
|
+
grpc_timer_check_result grpc_timer_check(grpc_millis* next);
|
94
|
+
void grpc_timer_list_init();
|
95
|
+
void grpc_timer_list_shutdown();
|
101
96
|
|
102
97
|
/* Consume a kick issued by grpc_kick_poller */
|
103
98
|
void grpc_timer_consume_kick(void);
|
@@ -106,8 +101,4 @@ void grpc_timer_consume_kick(void);
|
|
106
101
|
|
107
102
|
void grpc_kick_poller(void);
|
108
103
|
|
109
|
-
#ifdef __cplusplus
|
110
|
-
}
|
111
|
-
#endif
|
112
|
-
|
113
104
|
#endif /* GRPC_CORE_LIB_IOMGR_TIMER_H */
|
@@ -32,9 +32,9 @@
|
|
32
32
|
#include <grpc/support/tls.h>
|
33
33
|
#include <grpc/support/useful.h>
|
34
34
|
#include "src/core/lib/debug/trace.h"
|
35
|
+
#include "src/core/lib/gpr/spinlock.h"
|
35
36
|
#include "src/core/lib/iomgr/time_averaged_stats.h"
|
36
37
|
#include "src/core/lib/iomgr/timer_heap.h"
|
37
|
-
#include "src/core/lib/support/spinlock.h"
|
38
38
|
|
39
39
|
#define INVALID_HEAP_INDEX 0xffffffffu
|
40
40
|
|
@@ -225,8 +225,7 @@ static gpr_atm saturating_add(gpr_atm a, gpr_atm b) {
|
|
225
225
|
return a + b;
|
226
226
|
}
|
227
227
|
|
228
|
-
static grpc_timer_check_result run_some_expired_timers(
|
229
|
-
gpr_atm now,
|
228
|
+
static grpc_timer_check_result run_some_expired_timers(gpr_atm now,
|
230
229
|
gpr_atm* next,
|
231
230
|
grpc_error* error);
|
232
231
|
|
@@ -236,7 +235,7 @@ static gpr_atm compute_min_deadline(timer_shard* shard) {
|
|
236
235
|
: grpc_timer_heap_top(&shard->heap)->deadline;
|
237
236
|
}
|
238
237
|
|
239
|
-
void grpc_timer_list_init(
|
238
|
+
void grpc_timer_list_init() {
|
240
239
|
uint32_t i;
|
241
240
|
|
242
241
|
g_num_shards = GPR_MIN(1, 2 * gpr_cpu_num_cores());
|
@@ -247,7 +246,7 @@ void grpc_timer_list_init(grpc_exec_ctx* exec_ctx) {
|
|
247
246
|
g_shared_mutables.initialized = true;
|
248
247
|
g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER;
|
249
248
|
gpr_mu_init(&g_shared_mutables.mu);
|
250
|
-
g_shared_mutables.min_timer =
|
249
|
+
g_shared_mutables.min_timer = grpc_core::ExecCtx::Get()->Now();
|
251
250
|
gpr_tls_init(&g_last_seen_min_timer);
|
252
251
|
gpr_tls_set(&g_last_seen_min_timer, 0);
|
253
252
|
|
@@ -267,10 +266,10 @@ void grpc_timer_list_init(grpc_exec_ctx* exec_ctx) {
|
|
267
266
|
INIT_TIMER_HASH_TABLE();
|
268
267
|
}
|
269
268
|
|
270
|
-
void grpc_timer_list_shutdown(
|
269
|
+
void grpc_timer_list_shutdown() {
|
271
270
|
size_t i;
|
272
271
|
run_some_expired_timers(
|
273
|
-
|
272
|
+
GPR_ATM_MAX, nullptr,
|
274
273
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timer list shutdown"));
|
275
274
|
for (i = 0; i < g_num_shards; i++) {
|
276
275
|
timer_shard* shard = &g_shards[i];
|
@@ -323,8 +322,8 @@ static void note_deadline_change(timer_shard* shard) {
|
|
323
322
|
|
324
323
|
void grpc_timer_init_unset(grpc_timer* timer) { timer->pending = false; }
|
325
324
|
|
326
|
-
void grpc_timer_init(
|
327
|
-
|
325
|
+
void grpc_timer_init(grpc_timer* timer, grpc_millis deadline,
|
326
|
+
grpc_closure* closure) {
|
328
327
|
int is_first_timer = 0;
|
329
328
|
timer_shard* shard = &g_shards[GPR_HASH_POINTER(timer, g_num_shards)];
|
330
329
|
timer->closure = closure;
|
@@ -337,12 +336,12 @@ void grpc_timer_init(grpc_exec_ctx* exec_ctx, grpc_timer* timer,
|
|
337
336
|
if (grpc_timer_trace.enabled()) {
|
338
337
|
gpr_log(GPR_DEBUG,
|
339
338
|
"TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer,
|
340
|
-
deadline,
|
339
|
+
deadline, grpc_core::ExecCtx::Get()->Now(), closure, closure->cb);
|
341
340
|
}
|
342
341
|
|
343
342
|
if (!g_shared_mutables.initialized) {
|
344
343
|
timer->pending = false;
|
345
|
-
GRPC_CLOSURE_SCHED(
|
344
|
+
GRPC_CLOSURE_SCHED(timer->closure,
|
346
345
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
347
346
|
"Attempt to create timer before initialization"));
|
348
347
|
return;
|
@@ -350,10 +349,10 @@ void grpc_timer_init(grpc_exec_ctx* exec_ctx, grpc_timer* timer,
|
|
350
349
|
|
351
350
|
gpr_mu_lock(&shard->mu);
|
352
351
|
timer->pending = true;
|
353
|
-
grpc_millis now =
|
352
|
+
grpc_millis now = grpc_core::ExecCtx::Get()->Now();
|
354
353
|
if (deadline <= now) {
|
355
354
|
timer->pending = false;
|
356
|
-
GRPC_CLOSURE_SCHED(
|
355
|
+
GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_NONE);
|
357
356
|
gpr_mu_unlock(&shard->mu);
|
358
357
|
/* early out */
|
359
358
|
return;
|
@@ -414,7 +413,7 @@ void grpc_timer_consume_kick(void) {
|
|
414
413
|
gpr_tls_set(&g_last_seen_min_timer, 0);
|
415
414
|
}
|
416
415
|
|
417
|
-
void grpc_timer_cancel(
|
416
|
+
void grpc_timer_cancel(grpc_timer* timer) {
|
418
417
|
if (!g_shared_mutables.initialized) {
|
419
418
|
/* must have already been cancelled, also the shard mutex is invalid */
|
420
419
|
return;
|
@@ -430,7 +429,7 @@ void grpc_timer_cancel(grpc_exec_ctx* exec_ctx, grpc_timer* timer) {
|
|
430
429
|
if (timer->pending) {
|
431
430
|
REMOVE_FROM_HASH_TABLE(timer);
|
432
431
|
|
433
|
-
GRPC_CLOSURE_SCHED(
|
432
|
+
GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_CANCELLED);
|
434
433
|
timer->pending = false;
|
435
434
|
if (timer->heap_index == INVALID_HEAP_INDEX) {
|
436
435
|
list_remove(timer);
|
@@ -516,15 +515,14 @@ static grpc_timer* pop_one(timer_shard* shard, gpr_atm now) {
|
|
516
515
|
}
|
517
516
|
|
518
517
|
/* REQUIRES: shard->mu unlocked */
|
519
|
-
static size_t pop_timers(
|
520
|
-
gpr_atm
|
521
|
-
grpc_error* error) {
|
518
|
+
static size_t pop_timers(timer_shard* shard, gpr_atm now,
|
519
|
+
gpr_atm* new_min_deadline, grpc_error* error) {
|
522
520
|
size_t n = 0;
|
523
521
|
grpc_timer* timer;
|
524
522
|
gpr_mu_lock(&shard->mu);
|
525
523
|
while ((timer = pop_one(shard, now))) {
|
526
524
|
REMOVE_FROM_HASH_TABLE(timer);
|
527
|
-
GRPC_CLOSURE_SCHED(
|
525
|
+
GRPC_CLOSURE_SCHED(timer->closure, GRPC_ERROR_REF(error));
|
528
526
|
n++;
|
529
527
|
}
|
530
528
|
*new_min_deadline = compute_min_deadline(shard);
|
@@ -536,8 +534,7 @@ static size_t pop_timers(grpc_exec_ctx* exec_ctx, timer_shard* shard,
|
|
536
534
|
return n;
|
537
535
|
}
|
538
536
|
|
539
|
-
static grpc_timer_check_result run_some_expired_timers(
|
540
|
-
gpr_atm now,
|
537
|
+
static grpc_timer_check_result run_some_expired_timers(gpr_atm now,
|
541
538
|
gpr_atm* next,
|
542
539
|
grpc_error* error) {
|
543
540
|
grpc_timer_check_result result = GRPC_TIMERS_NOT_CHECKED;
|
@@ -566,8 +563,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
|
|
566
563
|
/* For efficiency, we pop as many available timers as we can from the
|
567
564
|
shard. This may violate perfect timer deadline ordering, but that
|
568
565
|
shouldn't be a big deal because we don't make ordering guarantees. */
|
569
|
-
if (pop_timers(
|
570
|
-
error) > 0) {
|
566
|
+
if (pop_timers(g_shard_queue[0], now, &new_min_deadline, error) > 0) {
|
571
567
|
result = GRPC_TIMERS_FIRED;
|
572
568
|
}
|
573
569
|
|
@@ -604,10 +600,9 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
|
|
604
600
|
return result;
|
605
601
|
}
|
606
602
|
|
607
|
-
grpc_timer_check_result grpc_timer_check(
|
608
|
-
grpc_millis* next) {
|
603
|
+
grpc_timer_check_result grpc_timer_check(grpc_millis* next) {
|
609
604
|
// prelude
|
610
|
-
grpc_millis now =
|
605
|
+
grpc_millis now = grpc_core::ExecCtx::Get()->Now();
|
611
606
|
|
612
607
|
/* fetch from a thread-local first: this avoids contention on a globally
|
613
608
|
mutable cacheline in the common case */
|
@@ -646,7 +641,7 @@ grpc_timer_check_result grpc_timer_check(grpc_exec_ctx* exec_ctx,
|
|
646
641
|
}
|
647
642
|
// actual code
|
648
643
|
grpc_timer_check_result r =
|
649
|
-
run_some_expired_timers(
|
644
|
+
run_some_expired_timers(now, next, shutdown_error);
|
650
645
|
// tracing
|
651
646
|
if (grpc_timer_check_trace.enabled()) {
|
652
647
|
char* next_str;
|