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
@@ -61,17 +61,15 @@ struct grpc_combiner {
|
|
61
61
|
gpr_refcount refs;
|
62
62
|
};
|
63
63
|
|
64
|
-
static void combiner_exec(
|
65
|
-
|
66
|
-
static void combiner_finally_exec(grpc_exec_ctx* exec_ctx,
|
67
|
-
grpc_closure* closure, grpc_error* error);
|
64
|
+
static void combiner_exec(grpc_closure* closure, grpc_error* error);
|
65
|
+
static void combiner_finally_exec(grpc_closure* closure, grpc_error* error);
|
68
66
|
|
69
67
|
static const grpc_closure_scheduler_vtable scheduler = {
|
70
68
|
combiner_exec, combiner_exec, "combiner:immediately"};
|
71
69
|
static const grpc_closure_scheduler_vtable finally_scheduler = {
|
72
70
|
combiner_finally_exec, combiner_finally_exec, "combiner:finally"};
|
73
71
|
|
74
|
-
static void offload(
|
72
|
+
static void offload(void* arg, grpc_error* error);
|
75
73
|
|
76
74
|
grpc_combiner* grpc_combiner_create(void) {
|
77
75
|
grpc_combiner* lock = (grpc_combiner*)gpr_zalloc(sizeof(*lock));
|
@@ -87,19 +85,19 @@ grpc_combiner* grpc_combiner_create(void) {
|
|
87
85
|
return lock;
|
88
86
|
}
|
89
87
|
|
90
|
-
static void really_destroy(
|
88
|
+
static void really_destroy(grpc_combiner* lock) {
|
91
89
|
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p really_destroy", lock));
|
92
90
|
GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0);
|
93
91
|
gpr_mpscq_destroy(&lock->queue);
|
94
92
|
gpr_free(lock);
|
95
93
|
}
|
96
94
|
|
97
|
-
static void start_destroy(
|
95
|
+
static void start_destroy(grpc_combiner* lock) {
|
98
96
|
gpr_atm old_state = gpr_atm_full_fetch_add(&lock->state, -STATE_UNORPHANED);
|
99
97
|
GRPC_COMBINER_TRACE(gpr_log(
|
100
98
|
GPR_DEBUG, "C:%p really_destroy old_state=%" PRIdPTR, lock, old_state));
|
101
99
|
if (old_state == 1) {
|
102
|
-
really_destroy(
|
100
|
+
really_destroy(lock);
|
103
101
|
}
|
104
102
|
}
|
105
103
|
|
@@ -115,11 +113,10 @@ static void start_destroy(grpc_exec_ctx* exec_ctx, grpc_combiner* lock) {
|
|
115
113
|
#define GRPC_COMBINER_DEBUG_SPAM(op, delta)
|
116
114
|
#endif
|
117
115
|
|
118
|
-
void grpc_combiner_unref(
|
119
|
-
grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
|
116
|
+
void grpc_combiner_unref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
|
120
117
|
GRPC_COMBINER_DEBUG_SPAM("UNREF", -1);
|
121
118
|
if (gpr_unref(&lock->refs)) {
|
122
|
-
start_destroy(
|
119
|
+
start_destroy(lock);
|
123
120
|
}
|
124
121
|
}
|
125
122
|
|
@@ -129,23 +126,25 @@ grpc_combiner* grpc_combiner_ref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS) {
|
|
129
126
|
return lock;
|
130
127
|
}
|
131
128
|
|
132
|
-
static void push_last_on_exec_ctx(
|
133
|
-
grpc_combiner* lock) {
|
129
|
+
static void push_last_on_exec_ctx(grpc_combiner* lock) {
|
134
130
|
lock->next_combiner_on_this_exec_ctx = nullptr;
|
135
|
-
if (
|
136
|
-
|
131
|
+
if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == nullptr) {
|
132
|
+
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner =
|
133
|
+
grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock;
|
137
134
|
} else {
|
138
|
-
|
139
|
-
|
135
|
+
grpc_core::ExecCtx::Get()
|
136
|
+
->combiner_data()
|
137
|
+
->last_combiner->next_combiner_on_this_exec_ctx = lock;
|
138
|
+
grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock;
|
140
139
|
}
|
141
140
|
}
|
142
141
|
|
143
|
-
static void push_first_on_exec_ctx(
|
144
|
-
|
145
|
-
|
146
|
-
|
142
|
+
static void push_first_on_exec_ctx(grpc_combiner* lock) {
|
143
|
+
lock->next_combiner_on_this_exec_ctx =
|
144
|
+
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
|
145
|
+
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner = lock;
|
147
146
|
if (lock->next_combiner_on_this_exec_ctx == nullptr) {
|
148
|
-
|
147
|
+
grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = lock;
|
149
148
|
}
|
150
149
|
}
|
151
150
|
|
@@ -153,9 +152,8 @@ static void push_first_on_exec_ctx(grpc_exec_ctx* exec_ctx,
|
|
153
152
|
((grpc_combiner*)(((char*)((closure)->scheduler)) - \
|
154
153
|
offsetof(grpc_combiner, scheduler_name)))
|
155
154
|
|
156
|
-
static void combiner_exec(
|
157
|
-
|
158
|
-
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx);
|
155
|
+
static void combiner_exec(grpc_closure* cl, grpc_error* error) {
|
156
|
+
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS();
|
159
157
|
GPR_TIMER_BEGIN("combiner.execute", 0);
|
160
158
|
grpc_combiner* lock = COMBINER_FROM_CLOSURE_SCHEDULER(cl, scheduler);
|
161
159
|
gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
|
@@ -163,19 +161,19 @@ static void combiner_exec(grpc_exec_ctx* exec_ctx, grpc_closure* cl,
|
|
163
161
|
"C:%p grpc_combiner_execute c=%p last=%" PRIdPTR,
|
164
162
|
lock, cl, last));
|
165
163
|
if (last == 1) {
|
166
|
-
GRPC_STATS_INC_COMBINER_LOCKS_INITIATED(
|
164
|
+
GRPC_STATS_INC_COMBINER_LOCKS_INITIATED();
|
167
165
|
GPR_TIMER_MARK("combiner.initiated", 0);
|
168
166
|
gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null,
|
169
|
-
(gpr_atm)
|
167
|
+
(gpr_atm)grpc_core::ExecCtx::Get());
|
170
168
|
// first element on this list: add it to the list of combiner locks
|
171
169
|
// executing within this exec_ctx
|
172
|
-
push_last_on_exec_ctx(
|
170
|
+
push_last_on_exec_ctx(lock);
|
173
171
|
} else {
|
174
172
|
// there may be a race with setting here: if that happens, we may delay
|
175
173
|
// offload for one or two actions, and that's fine
|
176
174
|
gpr_atm initiator =
|
177
175
|
gpr_atm_no_barrier_load(&lock->initiating_exec_ctx_or_null);
|
178
|
-
if (initiator != 0 && initiator != (gpr_atm)
|
176
|
+
if (initiator != 0 && initiator != (gpr_atm)grpc_core::ExecCtx::Get()) {
|
179
177
|
gpr_atm_no_barrier_store(&lock->initiating_exec_ctx_or_null, 0);
|
180
178
|
}
|
181
179
|
}
|
@@ -186,29 +184,32 @@ static void combiner_exec(grpc_exec_ctx* exec_ctx, grpc_closure* cl,
|
|
186
184
|
GPR_TIMER_END("combiner.execute", 0);
|
187
185
|
}
|
188
186
|
|
189
|
-
static void move_next(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
187
|
+
static void move_next() {
|
188
|
+
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner =
|
189
|
+
grpc_core::ExecCtx::Get()
|
190
|
+
->combiner_data()
|
191
|
+
->active_combiner->next_combiner_on_this_exec_ctx;
|
192
|
+
if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner == nullptr) {
|
193
|
+
grpc_core::ExecCtx::Get()->combiner_data()->last_combiner = nullptr;
|
194
194
|
}
|
195
195
|
}
|
196
196
|
|
197
|
-
static void offload(
|
197
|
+
static void offload(void* arg, grpc_error* error) {
|
198
198
|
grpc_combiner* lock = (grpc_combiner*)arg;
|
199
|
-
push_last_on_exec_ctx(
|
199
|
+
push_last_on_exec_ctx(lock);
|
200
200
|
}
|
201
201
|
|
202
|
-
static void queue_offload(
|
203
|
-
GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED(
|
204
|
-
move_next(
|
202
|
+
static void queue_offload(grpc_combiner* lock) {
|
203
|
+
GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED();
|
204
|
+
move_next();
|
205
205
|
GRPC_COMBINER_TRACE(gpr_log(GPR_DEBUG, "C:%p queue_offload", lock));
|
206
|
-
GRPC_CLOSURE_SCHED(
|
206
|
+
GRPC_CLOSURE_SCHED(&lock->offload, GRPC_ERROR_NONE);
|
207
207
|
}
|
208
208
|
|
209
|
-
bool grpc_combiner_continue_exec_ctx(
|
209
|
+
bool grpc_combiner_continue_exec_ctx() {
|
210
210
|
GPR_TIMER_BEGIN("combiner.continue_exec_ctx", 0);
|
211
|
-
grpc_combiner* lock =
|
211
|
+
grpc_combiner* lock =
|
212
|
+
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
|
212
213
|
if (lock == nullptr) {
|
213
214
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
214
215
|
return false;
|
@@ -223,15 +224,15 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
223
224
|
"exec_ctx_ready_to_finish=%d "
|
224
225
|
"time_to_execute_final_list=%d",
|
225
226
|
lock, contended,
|
226
|
-
|
227
|
+
grpc_core::ExecCtx::Get()->IsReadyToFinish(),
|
227
228
|
lock->time_to_execute_final_list));
|
228
229
|
|
229
|
-
if (contended &&
|
230
|
+
if (contended && grpc_core::ExecCtx::Get()->IsReadyToFinish() &&
|
230
231
|
grpc_executor_is_threaded()) {
|
231
232
|
GPR_TIMER_MARK("offload_from_finished_exec_ctx", 0);
|
232
233
|
// this execution context wants to move on: schedule remaining work to be
|
233
234
|
// picked up on the executor
|
234
|
-
queue_offload(
|
235
|
+
queue_offload(lock);
|
235
236
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
236
237
|
return true;
|
237
238
|
}
|
@@ -247,7 +248,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
247
248
|
// queue is in an inconsistent state: use this as a cue that we should
|
248
249
|
// go off and do something else for a while (and come back later)
|
249
250
|
GPR_TIMER_MARK("delay_busy", 0);
|
250
|
-
queue_offload(
|
251
|
+
queue_offload(lock);
|
251
252
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
252
253
|
return true;
|
253
254
|
}
|
@@ -257,7 +258,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
257
258
|
#ifndef NDEBUG
|
258
259
|
cl->scheduled = false;
|
259
260
|
#endif
|
260
|
-
cl->cb(
|
261
|
+
cl->cb(cl->cb_arg, cl_err);
|
261
262
|
GRPC_ERROR_UNREF(cl_err);
|
262
263
|
GPR_TIMER_END("combiner.exec1", 0);
|
263
264
|
} else {
|
@@ -274,7 +275,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
274
275
|
#ifndef NDEBUG
|
275
276
|
c->scheduled = false;
|
276
277
|
#endif
|
277
|
-
c->cb(
|
278
|
+
c->cb(c->cb_arg, error);
|
278
279
|
GRPC_ERROR_UNREF(error);
|
279
280
|
c = next;
|
280
281
|
GPR_TIMER_END("combiner.exec_1final", 0);
|
@@ -282,7 +283,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
282
283
|
}
|
283
284
|
|
284
285
|
GPR_TIMER_MARK("unref", 0);
|
285
|
-
move_next(
|
286
|
+
move_next();
|
286
287
|
lock->time_to_execute_final_list = false;
|
287
288
|
gpr_atm old_state =
|
288
289
|
gpr_atm_full_fetch_add(&lock->state, -STATE_ELEM_COUNT_LOW_BIT);
|
@@ -311,7 +312,7 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
311
312
|
return true;
|
312
313
|
case OLD_STATE_WAS(true, 1):
|
313
314
|
// and one count, one orphaned --> unlocked and orphaned
|
314
|
-
really_destroy(
|
315
|
+
really_destroy(lock);
|
315
316
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
316
317
|
return true;
|
317
318
|
case OLD_STATE_WAS(false, 0):
|
@@ -321,27 +322,24 @@ bool grpc_combiner_continue_exec_ctx(grpc_exec_ctx* exec_ctx) {
|
|
321
322
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
322
323
|
GPR_UNREACHABLE_CODE(return true);
|
323
324
|
}
|
324
|
-
push_first_on_exec_ctx(
|
325
|
+
push_first_on_exec_ctx(lock);
|
325
326
|
GPR_TIMER_END("combiner.continue_exec_ctx", 0);
|
326
327
|
return true;
|
327
328
|
}
|
328
329
|
|
329
|
-
static void enqueue_finally(
|
330
|
-
grpc_error* error);
|
330
|
+
static void enqueue_finally(void* closure, grpc_error* error);
|
331
331
|
|
332
|
-
static void combiner_finally_exec(
|
333
|
-
|
334
|
-
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS(exec_ctx);
|
332
|
+
static void combiner_finally_exec(grpc_closure* closure, grpc_error* error) {
|
333
|
+
GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS();
|
335
334
|
grpc_combiner* lock =
|
336
335
|
COMBINER_FROM_CLOSURE_SCHEDULER(closure, finally_scheduler);
|
337
|
-
GRPC_COMBINER_TRACE(gpr_log(
|
338
|
-
|
339
|
-
|
336
|
+
GRPC_COMBINER_TRACE(gpr_log(
|
337
|
+
GPR_DEBUG, "C:%p grpc_combiner_execute_finally c=%p; ac=%p", lock,
|
338
|
+
closure, grpc_core::ExecCtx::Get()->combiner_data()->active_combiner));
|
340
339
|
GPR_TIMER_BEGIN("combiner.execute_finally", 0);
|
341
|
-
if (
|
340
|
+
if (grpc_core::ExecCtx::Get()->combiner_data()->active_combiner != lock) {
|
342
341
|
GPR_TIMER_MARK("slowpath", 0);
|
343
|
-
GRPC_CLOSURE_SCHED(
|
344
|
-
GRPC_CLOSURE_CREATE(enqueue_finally, closure,
|
342
|
+
GRPC_CLOSURE_SCHED(GRPC_CLOSURE_CREATE(enqueue_finally, closure,
|
345
343
|
grpc_combiner_scheduler(lock)),
|
346
344
|
error);
|
347
345
|
GPR_TIMER_END("combiner.execute_finally", 0);
|
@@ -355,10 +353,8 @@ static void combiner_finally_exec(grpc_exec_ctx* exec_ctx,
|
|
355
353
|
GPR_TIMER_END("combiner.execute_finally", 0);
|
356
354
|
}
|
357
355
|
|
358
|
-
static void enqueue_finally(
|
359
|
-
|
360
|
-
combiner_finally_exec(exec_ctx, (grpc_closure*)closure,
|
361
|
-
GRPC_ERROR_REF(error));
|
356
|
+
static void enqueue_finally(void* closure, grpc_error* error) {
|
357
|
+
combiner_finally_exec((grpc_closure*)closure, GRPC_ERROR_REF(error));
|
362
358
|
}
|
363
359
|
|
364
360
|
grpc_closure_scheduler* grpc_combiner_scheduler(grpc_combiner* combiner) {
|
@@ -23,12 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <grpc/support/atm.h>
|
25
25
|
#include "src/core/lib/debug/trace.h"
|
26
|
+
#include "src/core/lib/gpr/mpscq.h"
|
26
27
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
27
|
-
#include "src/core/lib/support/mpscq.h"
|
28
|
-
|
29
|
-
#ifdef __cplusplus
|
30
|
-
extern "C" {
|
31
|
-
#endif
|
32
28
|
|
33
29
|
// Provides serialized access to some resource.
|
34
30
|
// Each action queued on a combiner is executed serially in a borrowed thread.
|
@@ -44,31 +40,25 @@ grpc_combiner* grpc_combiner_create(void);
|
|
44
40
|
, const char *file, int line, const char *reason
|
45
41
|
#define GRPC_COMBINER_REF(combiner, reason) \
|
46
42
|
grpc_combiner_ref((combiner), __FILE__, __LINE__, (reason))
|
47
|
-
#define GRPC_COMBINER_UNREF(
|
48
|
-
grpc_combiner_unref((
|
43
|
+
#define GRPC_COMBINER_UNREF(combiner, reason) \
|
44
|
+
grpc_combiner_unref((combiner), __FILE__, __LINE__, (reason))
|
49
45
|
#else
|
50
46
|
#define GRPC_COMBINER_DEBUG_ARGS
|
51
47
|
#define GRPC_COMBINER_REF(combiner, reason) grpc_combiner_ref((combiner))
|
52
|
-
#define GRPC_COMBINER_UNREF(
|
53
|
-
grpc_combiner_unref((exec_ctx), (combiner))
|
48
|
+
#define GRPC_COMBINER_UNREF(combiner, reason) grpc_combiner_unref((combiner))
|
54
49
|
#endif
|
55
50
|
|
56
51
|
// Ref/unref the lock, for when we're sharing the lock ownership
|
57
52
|
// Prefer to use the macros above
|
58
53
|
grpc_combiner* grpc_combiner_ref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS);
|
59
|
-
void grpc_combiner_unref(
|
60
|
-
grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS);
|
54
|
+
void grpc_combiner_unref(grpc_combiner* lock GRPC_COMBINER_DEBUG_ARGS);
|
61
55
|
// Fetch a scheduler to schedule closures against
|
62
56
|
grpc_closure_scheduler* grpc_combiner_scheduler(grpc_combiner* lock);
|
63
57
|
// Scheduler to execute \a action within the lock just prior to unlocking.
|
64
58
|
grpc_closure_scheduler* grpc_combiner_finally_scheduler(grpc_combiner* lock);
|
65
59
|
|
66
|
-
bool grpc_combiner_continue_exec_ctx(
|
60
|
+
bool grpc_combiner_continue_exec_ctx();
|
67
61
|
|
68
62
|
extern grpc_core::TraceFlag grpc_combiner_trace;
|
69
63
|
|
70
|
-
#ifdef __cplusplus
|
71
|
-
}
|
72
|
-
#endif
|
73
|
-
|
74
64
|
#endif /* GRPC_CORE_LIB_IOMGR_COMBINER_H */
|
@@ -18,41 +18,35 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/iomgr/endpoint.h"
|
20
20
|
|
21
|
-
void grpc_endpoint_read(
|
22
|
-
|
23
|
-
ep->vtable->read(
|
21
|
+
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
22
|
+
grpc_closure* cb) {
|
23
|
+
ep->vtable->read(ep, slices, cb);
|
24
24
|
}
|
25
25
|
|
26
|
-
void grpc_endpoint_write(
|
27
|
-
|
28
|
-
ep->vtable->write(
|
26
|
+
void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
27
|
+
grpc_closure* cb) {
|
28
|
+
ep->vtable->write(ep, slices, cb);
|
29
29
|
}
|
30
30
|
|
31
|
-
void grpc_endpoint_add_to_pollset(
|
32
|
-
|
33
|
-
ep->vtable->add_to_pollset(exec_ctx, ep, pollset);
|
31
|
+
void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
|
32
|
+
ep->vtable->add_to_pollset(ep, pollset);
|
34
33
|
}
|
35
34
|
|
36
|
-
void grpc_endpoint_add_to_pollset_set(
|
37
|
-
grpc_endpoint* ep,
|
35
|
+
void grpc_endpoint_add_to_pollset_set(grpc_endpoint* ep,
|
38
36
|
grpc_pollset_set* pollset_set) {
|
39
|
-
ep->vtable->add_to_pollset_set(
|
37
|
+
ep->vtable->add_to_pollset_set(ep, pollset_set);
|
40
38
|
}
|
41
39
|
|
42
|
-
void grpc_endpoint_delete_from_pollset_set(
|
43
|
-
grpc_endpoint* ep,
|
40
|
+
void grpc_endpoint_delete_from_pollset_set(grpc_endpoint* ep,
|
44
41
|
grpc_pollset_set* pollset_set) {
|
45
|
-
ep->vtable->delete_from_pollset_set(
|
42
|
+
ep->vtable->delete_from_pollset_set(ep, pollset_set);
|
46
43
|
}
|
47
44
|
|
48
|
-
void grpc_endpoint_shutdown(
|
49
|
-
|
50
|
-
ep->vtable->shutdown(exec_ctx, ep, why);
|
45
|
+
void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) {
|
46
|
+
ep->vtable->shutdown(ep, why);
|
51
47
|
}
|
52
48
|
|
53
|
-
void grpc_endpoint_destroy(
|
54
|
-
ep->vtable->destroy(exec_ctx, ep);
|
55
|
-
}
|
49
|
+
void grpc_endpoint_destroy(grpc_endpoint* ep) { ep->vtable->destroy(ep); }
|
56
50
|
|
57
51
|
char* grpc_endpoint_get_peer(grpc_endpoint* ep) {
|
58
52
|
return ep->vtable->get_peer(ep);
|
@@ -26,10 +26,6 @@
|
|
26
26
|
#include "src/core/lib/iomgr/pollset_set.h"
|
27
27
|
#include "src/core/lib/iomgr/resource_quota.h"
|
28
28
|
|
29
|
-
#ifdef __cplusplus
|
30
|
-
extern "C" {
|
31
|
-
#endif
|
32
|
-
|
33
29
|
/* An endpoint caps a streaming channel between two communicating processes.
|
34
30
|
Examples may be: a tcp socket, <stdin+stdout>, or some shared memory. */
|
35
31
|
|
@@ -37,18 +33,13 @@ typedef struct grpc_endpoint grpc_endpoint;
|
|
37
33
|
typedef struct grpc_endpoint_vtable grpc_endpoint_vtable;
|
38
34
|
|
39
35
|
struct grpc_endpoint_vtable {
|
40
|
-
void (*read)(
|
41
|
-
|
42
|
-
void (*
|
43
|
-
|
44
|
-
void (*
|
45
|
-
|
46
|
-
void (*
|
47
|
-
grpc_pollset_set* pollset);
|
48
|
-
void (*delete_from_pollset_set)(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
49
|
-
grpc_pollset_set* pollset);
|
50
|
-
void (*shutdown)(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep, grpc_error* why);
|
51
|
-
void (*destroy)(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep);
|
36
|
+
void (*read)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb);
|
37
|
+
void (*write)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb);
|
38
|
+
void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset);
|
39
|
+
void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
|
40
|
+
void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
|
41
|
+
void (*shutdown)(grpc_endpoint* ep, grpc_error* why);
|
42
|
+
void (*destroy)(grpc_endpoint* ep);
|
52
43
|
grpc_resource_user* (*get_resource_user)(grpc_endpoint* ep);
|
53
44
|
char* (*get_peer)(grpc_endpoint* ep);
|
54
45
|
int (*get_fd)(grpc_endpoint* ep);
|
@@ -59,8 +50,8 @@ struct grpc_endpoint_vtable {
|
|
59
50
|
indicates the endpoint is closed.
|
60
51
|
Valid slices may be placed into \a slices even when the callback is
|
61
52
|
invoked with error != GRPC_ERROR_NONE. */
|
62
|
-
void grpc_endpoint_read(
|
63
|
-
|
53
|
+
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
54
|
+
grpc_closure* cb);
|
64
55
|
|
65
56
|
char* grpc_endpoint_get_peer(grpc_endpoint* ep);
|
66
57
|
|
@@ -78,26 +69,22 @@ int grpc_endpoint_get_fd(grpc_endpoint* ep);
|
|
78
69
|
No guarantee is made to the content of slices after a write EXCEPT that
|
79
70
|
it is a valid slice buffer.
|
80
71
|
*/
|
81
|
-
void grpc_endpoint_write(
|
82
|
-
|
72
|
+
void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
73
|
+
grpc_closure* cb);
|
83
74
|
|
84
75
|
/* Causes any pending and future read/write callbacks to run immediately with
|
85
76
|
success==0 */
|
86
|
-
void grpc_endpoint_shutdown(
|
87
|
-
|
88
|
-
void grpc_endpoint_destroy(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep);
|
77
|
+
void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why);
|
78
|
+
void grpc_endpoint_destroy(grpc_endpoint* ep);
|
89
79
|
|
90
80
|
/* Add an endpoint to a pollset or pollset_set, so that when the pollset is
|
91
81
|
polled, events from this endpoint are considered */
|
92
|
-
void grpc_endpoint_add_to_pollset(
|
93
|
-
|
94
|
-
void grpc_endpoint_add_to_pollset_set(grpc_exec_ctx* exec_ctx,
|
95
|
-
grpc_endpoint* ep,
|
82
|
+
void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset);
|
83
|
+
void grpc_endpoint_add_to_pollset_set(grpc_endpoint* ep,
|
96
84
|
grpc_pollset_set* pollset_set);
|
97
85
|
|
98
86
|
/* Delete an endpoint from a pollset_set */
|
99
|
-
void grpc_endpoint_delete_from_pollset_set(
|
100
|
-
grpc_endpoint* ep,
|
87
|
+
void grpc_endpoint_delete_from_pollset_set(grpc_endpoint* ep,
|
101
88
|
grpc_pollset_set* pollset_set);
|
102
89
|
|
103
90
|
grpc_resource_user* grpc_endpoint_get_resource_user(grpc_endpoint* endpoint);
|
@@ -106,8 +93,4 @@ struct grpc_endpoint {
|
|
106
93
|
const grpc_endpoint_vtable* vtable;
|
107
94
|
};
|
108
95
|
|
109
|
-
#ifdef __cplusplus
|
110
|
-
}
|
111
|
-
#endif
|
112
|
-
|
113
96
|
#endif /* GRPC_CORE_LIB_IOMGR_ENDPOINT_H */
|