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
@@ -26,9 +26,9 @@
|
|
26
26
|
|
27
27
|
#include "src/core/lib/channel/channel_args.h"
|
28
28
|
#include "src/core/lib/channel/handshaker_registry.h"
|
29
|
+
#include "src/core/lib/gpr/string.h"
|
29
30
|
#include "src/core/lib/security/transport/security_handshaker.h"
|
30
31
|
#include "src/core/lib/slice/slice_internal.h"
|
31
|
-
#include "src/core/lib/support/string.h"
|
32
32
|
#include "src/core/tsi/ssl_transport_security.h"
|
33
33
|
#include "src/core/tsi/transport_security_adapter.h"
|
34
34
|
|
@@ -38,8 +38,7 @@ typedef struct {
|
|
38
38
|
char* secure_peer_name;
|
39
39
|
} grpc_httpcli_ssl_channel_security_connector;
|
40
40
|
|
41
|
-
static void httpcli_ssl_destroy(
|
42
|
-
grpc_security_connector* sc) {
|
41
|
+
static void httpcli_ssl_destroy(grpc_security_connector* sc) {
|
43
42
|
grpc_httpcli_ssl_channel_security_connector* c =
|
44
43
|
(grpc_httpcli_ssl_channel_security_connector*)sc;
|
45
44
|
if (c->handshaker_factory != nullptr) {
|
@@ -50,8 +49,7 @@ static void httpcli_ssl_destroy(grpc_exec_ctx* exec_ctx,
|
|
50
49
|
gpr_free(sc);
|
51
50
|
}
|
52
51
|
|
53
|
-
static void httpcli_ssl_add_handshakers(
|
54
|
-
grpc_channel_security_connector* sc,
|
52
|
+
static void httpcli_ssl_add_handshakers(grpc_channel_security_connector* sc,
|
55
53
|
grpc_handshake_manager* handshake_mgr) {
|
56
54
|
grpc_httpcli_ssl_channel_security_connector* c =
|
57
55
|
(grpc_httpcli_ssl_channel_security_connector*)sc;
|
@@ -65,13 +63,11 @@ static void httpcli_ssl_add_handshakers(grpc_exec_ctx* exec_ctx,
|
|
65
63
|
}
|
66
64
|
}
|
67
65
|
grpc_handshake_manager_add(
|
68
|
-
handshake_mgr,
|
69
|
-
|
70
|
-
exec_ctx, tsi_create_adapter_handshaker(handshaker), &sc->base));
|
66
|
+
handshake_mgr, grpc_security_handshaker_create(
|
67
|
+
tsi_create_adapter_handshaker(handshaker), &sc->base));
|
71
68
|
}
|
72
69
|
|
73
|
-
static void httpcli_ssl_check_peer(
|
74
|
-
grpc_security_connector* sc, tsi_peer peer,
|
70
|
+
static void httpcli_ssl_check_peer(grpc_security_connector* sc, tsi_peer peer,
|
75
71
|
grpc_auth_context** auth_context,
|
76
72
|
grpc_closure* on_peer_checked) {
|
77
73
|
grpc_httpcli_ssl_channel_security_connector* c =
|
@@ -87,7 +83,7 @@ static void httpcli_ssl_check_peer(grpc_exec_ctx* exec_ctx,
|
|
87
83
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
88
84
|
gpr_free(msg);
|
89
85
|
}
|
90
|
-
GRPC_CLOSURE_SCHED(
|
86
|
+
GRPC_CLOSURE_SCHED(on_peer_checked, error);
|
91
87
|
tsi_peer_destruct(&peer);
|
92
88
|
}
|
93
89
|
|
@@ -104,8 +100,8 @@ static grpc_security_connector_vtable httpcli_ssl_vtable = {
|
|
104
100
|
httpcli_ssl_destroy, httpcli_ssl_check_peer, httpcli_ssl_cmp};
|
105
101
|
|
106
102
|
static grpc_security_status httpcli_ssl_channel_security_connector_create(
|
107
|
-
|
108
|
-
|
103
|
+
const char* pem_root_certs, const char* secure_peer_name,
|
104
|
+
grpc_channel_security_connector** sc) {
|
109
105
|
tsi_result result = TSI_OK;
|
110
106
|
grpc_httpcli_ssl_channel_security_connector* c;
|
111
107
|
|
@@ -128,12 +124,12 @@ static grpc_security_status httpcli_ssl_channel_security_connector_create(
|
|
128
124
|
if (result != TSI_OK) {
|
129
125
|
gpr_log(GPR_ERROR, "Handshaker factory creation failed with %s.",
|
130
126
|
tsi_result_to_string(result));
|
131
|
-
httpcli_ssl_destroy(
|
127
|
+
httpcli_ssl_destroy(&c->base.base);
|
132
128
|
*sc = nullptr;
|
133
129
|
return GRPC_SECURITY_ERROR;
|
134
130
|
}
|
135
131
|
// We don't actually need a channel credentials object in this case,
|
136
|
-
// but we set it to a non-
|
132
|
+
// but we set it to a non-nullptr address so that we don't trigger
|
137
133
|
// assertions in grpc_channel_security_connector_cmp().
|
138
134
|
c->base.channel_creds = (grpc_channel_credentials*)1;
|
139
135
|
c->base.add_handshakers = httpcli_ssl_add_handshakers;
|
@@ -144,40 +140,37 @@ static grpc_security_status httpcli_ssl_channel_security_connector_create(
|
|
144
140
|
/* handshaker */
|
145
141
|
|
146
142
|
typedef struct {
|
147
|
-
void (*func)(
|
143
|
+
void (*func)(void* arg, grpc_endpoint* endpoint);
|
148
144
|
void* arg;
|
149
145
|
grpc_handshake_manager* handshake_mgr;
|
150
146
|
} on_done_closure;
|
151
147
|
|
152
|
-
static void on_handshake_done(
|
153
|
-
grpc_error* error) {
|
148
|
+
static void on_handshake_done(void* arg, grpc_error* error) {
|
154
149
|
grpc_handshaker_args* args = (grpc_handshaker_args*)arg;
|
155
150
|
on_done_closure* c = (on_done_closure*)args->user_data;
|
156
151
|
if (error != GRPC_ERROR_NONE) {
|
157
152
|
const char* msg = grpc_error_string(error);
|
158
153
|
gpr_log(GPR_ERROR, "Secure transport setup failed: %s", msg);
|
159
154
|
|
160
|
-
c->func(
|
155
|
+
c->func(c->arg, nullptr);
|
161
156
|
} else {
|
162
|
-
grpc_channel_args_destroy(
|
163
|
-
grpc_slice_buffer_destroy_internal(
|
157
|
+
grpc_channel_args_destroy(args->args);
|
158
|
+
grpc_slice_buffer_destroy_internal(args->read_buffer);
|
164
159
|
gpr_free(args->read_buffer);
|
165
|
-
c->func(
|
160
|
+
c->func(c->arg, args->endpoint);
|
166
161
|
}
|
167
|
-
grpc_handshake_manager_destroy(
|
162
|
+
grpc_handshake_manager_destroy(c->handshake_mgr);
|
168
163
|
gpr_free(c);
|
169
164
|
}
|
170
165
|
|
171
|
-
static void ssl_handshake(
|
172
|
-
grpc_endpoint* tcp, const char* host,
|
166
|
+
static void ssl_handshake(void* arg, grpc_endpoint* tcp, const char* host,
|
173
167
|
grpc_millis deadline,
|
174
|
-
void (*on_done)(
|
175
|
-
grpc_endpoint* endpoint)) {
|
168
|
+
void (*on_done)(void* arg, grpc_endpoint* endpoint)) {
|
176
169
|
on_done_closure* c = (on_done_closure*)gpr_malloc(sizeof(*c));
|
177
170
|
const char* pem_root_certs = grpc_get_default_ssl_roots();
|
178
171
|
if (pem_root_certs == nullptr) {
|
179
172
|
gpr_log(GPR_ERROR, "Could not get default pem root certs.");
|
180
|
-
on_done(
|
173
|
+
on_done(arg, nullptr);
|
181
174
|
gpr_free(c);
|
182
175
|
return;
|
183
176
|
}
|
@@ -185,15 +178,16 @@ static void ssl_handshake(grpc_exec_ctx* exec_ctx, void* arg,
|
|
185
178
|
c->arg = arg;
|
186
179
|
grpc_channel_security_connector* sc = nullptr;
|
187
180
|
GPR_ASSERT(httpcli_ssl_channel_security_connector_create(
|
188
|
-
|
181
|
+
pem_root_certs, host, &sc) == GRPC_SECURITY_OK);
|
189
182
|
grpc_arg channel_arg = grpc_security_connector_to_arg(&sc->base);
|
190
183
|
grpc_channel_args args = {1, &channel_arg};
|
191
184
|
c->handshake_mgr = grpc_handshake_manager_create();
|
192
|
-
grpc_handshakers_add(
|
185
|
+
grpc_handshakers_add(HANDSHAKER_CLIENT, &args, c->handshake_mgr);
|
193
186
|
grpc_handshake_manager_do_handshake(
|
194
|
-
|
195
|
-
nullptr /*
|
196
|
-
|
187
|
+
c->handshake_mgr, nullptr /* interested_parties */, tcp,
|
188
|
+
nullptr /* channel_args */, deadline, nullptr /* acceptor */,
|
189
|
+
on_handshake_done, c /* user_data */);
|
190
|
+
GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "httpcli");
|
197
191
|
}
|
198
192
|
|
199
193
|
const grpc_httpcli_handshaker grpc_httpcli_ssl = {"https", ssl_handshake};
|
data/src/core/lib/http/parser.h
CHANGED
@@ -27,10 +27,6 @@
|
|
27
27
|
/* Maximum length of a header string of the form 'Key: Value\r\n' */
|
28
28
|
#define GRPC_HTTP_PARSER_MAX_HEADER_LENGTH 4096
|
29
29
|
|
30
|
-
#ifdef __cplusplus
|
31
|
-
extern "C" {
|
32
|
-
#endif
|
33
|
-
|
34
30
|
/* A single header to be passed in a request */
|
35
31
|
typedef struct grpc_http_header {
|
36
32
|
char* key;
|
@@ -113,8 +109,4 @@ void grpc_http_response_destroy(grpc_http_response* response);
|
|
113
109
|
|
114
110
|
extern grpc_core::TraceFlag grpc_http1_trace;
|
115
111
|
|
116
|
-
#ifdef __cplusplus
|
117
|
-
}
|
118
|
-
#endif
|
119
|
-
|
120
112
|
#endif /* GRPC_CORE_LIB_HTTP_PARSER_H */
|
@@ -19,17 +19,9 @@
|
|
19
19
|
#ifndef GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
|
20
20
|
#define GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
|
21
21
|
|
22
|
-
#ifdef __cplusplus
|
23
|
-
extern "C" {
|
24
|
-
#endif
|
25
|
-
|
26
22
|
void gpr_thd_start_blocking_region();
|
27
23
|
void gpr_thd_end_blocking_region();
|
28
24
|
|
29
|
-
#ifdef __cplusplus
|
30
|
-
}
|
31
|
-
#endif
|
32
|
-
|
33
25
|
/* These annotations identify the beginning and end of regions where
|
34
26
|
the code may block for reasons other than synchronization functions.
|
35
27
|
These include poll, epoll, and getaddrinfo. */
|
@@ -39,26 +31,27 @@ void gpr_thd_end_blocking_region();
|
|
39
31
|
do { \
|
40
32
|
gpr_thd_start_blocking_region(); \
|
41
33
|
} while (0)
|
34
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION \
|
35
|
+
do { \
|
36
|
+
gpr_thd_end_blocking_region(); \
|
37
|
+
grpc_core::ExecCtx::Get()->InvalidateNow(); \
|
38
|
+
} while (0)
|
42
39
|
#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
|
43
40
|
do { \
|
44
41
|
gpr_thd_end_blocking_region(); \
|
45
42
|
} while (0)
|
46
|
-
|
47
|
-
do { \
|
48
|
-
gpr_thd_end_blocking_region(); \
|
49
|
-
grpc_exec_ctx_invalidate_now((ec)); \
|
50
|
-
} while (0)
|
43
|
+
|
51
44
|
#else
|
52
45
|
#define GRPC_SCHEDULING_START_BLOCKING_REGION \
|
53
46
|
do { \
|
54
47
|
} while (0)
|
48
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION \
|
49
|
+
do { \
|
50
|
+
grpc_core::ExecCtx::Get()->InvalidateNow(); \
|
51
|
+
} while (0)
|
55
52
|
#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
|
56
53
|
do { \
|
57
54
|
} while (0)
|
58
|
-
#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \
|
59
|
-
do { \
|
60
|
-
grpc_exec_ctx_invalidate_now((ec)); \
|
61
|
-
} while (0)
|
62
55
|
#endif
|
63
56
|
|
64
57
|
#endif /* GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H */
|
@@ -56,8 +56,7 @@ void grpc_call_combiner_destroy(grpc_call_combiner* call_combiner) {
|
|
56
56
|
#define DEBUG_FMT_ARGS
|
57
57
|
#endif
|
58
58
|
|
59
|
-
void grpc_call_combiner_start(
|
60
|
-
grpc_call_combiner* call_combiner,
|
59
|
+
void grpc_call_combiner_start(grpc_call_combiner* call_combiner,
|
61
60
|
grpc_closure* closure,
|
62
61
|
grpc_error* error DEBUG_ARGS,
|
63
62
|
const char* reason) {
|
@@ -75,15 +74,16 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
|
|
75
74
|
gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
|
76
75
|
prev_size + 1);
|
77
76
|
}
|
78
|
-
GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(
|
77
|
+
GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS();
|
79
78
|
if (prev_size == 0) {
|
80
|
-
GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(
|
79
|
+
GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED();
|
80
|
+
|
81
81
|
GPR_TIMER_MARK("call_combiner_initiate", 0);
|
82
82
|
if (grpc_call_combiner_trace.enabled()) {
|
83
83
|
gpr_log(GPR_DEBUG, " EXECUTING IMMEDIATELY");
|
84
84
|
}
|
85
85
|
// Queue was empty, so execute this closure immediately.
|
86
|
-
GRPC_CLOSURE_SCHED(
|
86
|
+
GRPC_CLOSURE_SCHED(closure, error);
|
87
87
|
} else {
|
88
88
|
if (grpc_call_combiner_trace.enabled()) {
|
89
89
|
gpr_log(GPR_INFO, " QUEUING");
|
@@ -95,8 +95,7 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
|
|
95
95
|
GPR_TIMER_END("call_combiner_start", 0);
|
96
96
|
}
|
97
97
|
|
98
|
-
void grpc_call_combiner_stop(
|
99
|
-
grpc_call_combiner* call_combiner DEBUG_ARGS,
|
98
|
+
void grpc_call_combiner_stop(grpc_call_combiner* call_combiner DEBUG_ARGS,
|
100
99
|
const char* reason) {
|
101
100
|
GPR_TIMER_BEGIN("call_combiner_stop", 0);
|
102
101
|
if (grpc_call_combiner_trace.enabled()) {
|
@@ -131,7 +130,7 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
|
|
131
130
|
gpr_log(GPR_DEBUG, " EXECUTING FROM QUEUE: closure=%p error=%s",
|
132
131
|
closure, grpc_error_string(closure->error_data.error));
|
133
132
|
}
|
134
|
-
GRPC_CLOSURE_SCHED(
|
133
|
+
GRPC_CLOSURE_SCHED(closure, closure->error_data.error);
|
135
134
|
break;
|
136
135
|
}
|
137
136
|
} else if (grpc_call_combiner_trace.enabled()) {
|
@@ -140,10 +139,9 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
|
|
140
139
|
GPR_TIMER_END("call_combiner_stop", 0);
|
141
140
|
}
|
142
141
|
|
143
|
-
void grpc_call_combiner_set_notify_on_cancel(
|
144
|
-
grpc_call_combiner* call_combiner,
|
142
|
+
void grpc_call_combiner_set_notify_on_cancel(grpc_call_combiner* call_combiner,
|
145
143
|
grpc_closure* closure) {
|
146
|
-
GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(
|
144
|
+
GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL();
|
147
145
|
while (true) {
|
148
146
|
// Decode original state.
|
149
147
|
gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
|
@@ -157,7 +155,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
157
155
|
"for pre-existing cancellation",
|
158
156
|
call_combiner, closure);
|
159
157
|
}
|
160
|
-
GRPC_CLOSURE_SCHED(
|
158
|
+
GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_REF(original_error));
|
161
159
|
break;
|
162
160
|
} else {
|
163
161
|
if (gpr_atm_full_cas(&call_combiner->cancel_state, original_state,
|
@@ -176,7 +174,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
176
174
|
"call_combiner=%p: scheduling old cancel callback=%p",
|
177
175
|
call_combiner, closure);
|
178
176
|
}
|
179
|
-
GRPC_CLOSURE_SCHED(
|
177
|
+
GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
|
180
178
|
}
|
181
179
|
break;
|
182
180
|
}
|
@@ -185,10 +183,9 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
185
183
|
}
|
186
184
|
}
|
187
185
|
|
188
|
-
void grpc_call_combiner_cancel(
|
189
|
-
grpc_call_combiner* call_combiner,
|
186
|
+
void grpc_call_combiner_cancel(grpc_call_combiner* call_combiner,
|
190
187
|
grpc_error* error) {
|
191
|
-
GRPC_STATS_INC_CALL_COMBINER_CANCELLED(
|
188
|
+
GRPC_STATS_INC_CALL_COMBINER_CANCELLED();
|
192
189
|
while (true) {
|
193
190
|
gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
|
194
191
|
grpc_error* original_error = decode_cancel_state_error(original_state);
|
@@ -205,7 +202,7 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
|
|
205
202
|
"call_combiner=%p: scheduling notify_on_cancel callback=%p",
|
206
203
|
call_combiner, notify_on_cancel);
|
207
204
|
}
|
208
|
-
GRPC_CLOSURE_SCHED(
|
205
|
+
GRPC_CLOSURE_SCHED(notify_on_cancel, GRPC_ERROR_REF(error));
|
209
206
|
}
|
210
207
|
break;
|
211
208
|
}
|
@@ -23,13 +23,9 @@
|
|
23
23
|
|
24
24
|
#include <grpc/support/atm.h>
|
25
25
|
|
26
|
+
#include "src/core/lib/gpr/mpscq.h"
|
26
27
|
#include "src/core/lib/iomgr/closure.h"
|
27
28
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
28
|
-
#include "src/core/lib/support/mpscq.h"
|
29
|
-
|
30
|
-
#ifdef __cplusplus
|
31
|
-
extern "C" {
|
32
|
-
#endif
|
33
29
|
|
34
30
|
// A simple, lock-free mechanism for serializing activity related to a
|
35
31
|
// single call. This is similar to a combiner but is more lightweight.
|
@@ -57,37 +53,29 @@ void grpc_call_combiner_init(grpc_call_combiner* call_combiner);
|
|
57
53
|
void grpc_call_combiner_destroy(grpc_call_combiner* call_combiner);
|
58
54
|
|
59
55
|
#ifndef NDEBUG
|
60
|
-
#define GRPC_CALL_COMBINER_START(
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
grpc_call_combiner_stop((exec_ctx), (call_combiner), __FILE__, __LINE__, \
|
66
|
-
(reason))
|
56
|
+
#define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \
|
57
|
+
grpc_call_combiner_start((call_combiner), (closure), (error), __FILE__, \
|
58
|
+
__LINE__, (reason))
|
59
|
+
#define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
|
60
|
+
grpc_call_combiner_stop((call_combiner), __FILE__, __LINE__, (reason))
|
67
61
|
/// Starts processing \a closure on \a call_combiner.
|
68
|
-
void grpc_call_combiner_start(
|
69
|
-
grpc_call_combiner* call_combiner,
|
62
|
+
void grpc_call_combiner_start(grpc_call_combiner* call_combiner,
|
70
63
|
grpc_closure* closure, grpc_error* error,
|
71
64
|
const char* file, int line, const char* reason);
|
72
65
|
/// Yields the call combiner to the next closure in the queue, if any.
|
73
|
-
void grpc_call_combiner_stop(
|
74
|
-
grpc_call_combiner* call_combiner,
|
66
|
+
void grpc_call_combiner_stop(grpc_call_combiner* call_combiner,
|
75
67
|
const char* file, int line, const char* reason);
|
76
68
|
#else
|
77
|
-
#define GRPC_CALL_COMBINER_START(
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
#define GRPC_CALL_COMBINER_STOP(exec_ctx, call_combiner, reason) \
|
82
|
-
grpc_call_combiner_stop((exec_ctx), (call_combiner), (reason))
|
69
|
+
#define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \
|
70
|
+
grpc_call_combiner_start((call_combiner), (closure), (error), (reason))
|
71
|
+
#define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
|
72
|
+
grpc_call_combiner_stop((call_combiner), (reason))
|
83
73
|
/// Starts processing \a closure on \a call_combiner.
|
84
|
-
void grpc_call_combiner_start(
|
85
|
-
grpc_call_combiner* call_combiner,
|
74
|
+
void grpc_call_combiner_start(grpc_call_combiner* call_combiner,
|
86
75
|
grpc_closure* closure, grpc_error* error,
|
87
76
|
const char* reason);
|
88
77
|
/// Yields the call combiner to the next closure in the queue, if any.
|
89
|
-
void grpc_call_combiner_stop(
|
90
|
-
grpc_call_combiner* call_combiner,
|
78
|
+
void grpc_call_combiner_stop(grpc_call_combiner* call_combiner,
|
91
79
|
const char* reason);
|
92
80
|
#endif
|
93
81
|
|
@@ -113,17 +101,11 @@ void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
|
|
113
101
|
/// cancellation; this effectively unregisters the previously set closure.
|
114
102
|
/// However, most filters will not need to explicitly unregister their
|
115
103
|
/// callbacks, as this is done automatically when the call is destroyed.
|
116
|
-
void grpc_call_combiner_set_notify_on_cancel(
|
117
|
-
grpc_call_combiner* call_combiner,
|
104
|
+
void grpc_call_combiner_set_notify_on_cancel(grpc_call_combiner* call_combiner,
|
118
105
|
grpc_closure* closure);
|
119
106
|
|
120
107
|
/// Indicates that the call has been cancelled.
|
121
|
-
void grpc_call_combiner_cancel(
|
122
|
-
grpc_call_combiner* call_combiner,
|
108
|
+
void grpc_call_combiner_cancel(grpc_call_combiner* call_combiner,
|
123
109
|
grpc_error* error);
|
124
110
|
|
125
|
-
#ifdef __cplusplus
|
126
|
-
}
|
127
|
-
#endif
|
128
|
-
|
129
111
|
#endif /* GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H */
|
@@ -22,13 +22,12 @@
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include <assert.h>
|
25
|
-
#include <grpc/impl/codegen/exec_ctx_fwd.h>
|
26
25
|
#include <grpc/support/alloc.h>
|
27
26
|
#include <grpc/support/log.h>
|
28
27
|
#include <stdbool.h>
|
28
|
+
#include "src/core/lib/gpr/mpscq.h"
|
29
29
|
#include "src/core/lib/iomgr/error.h"
|
30
30
|
#include "src/core/lib/profiling/timers.h"
|
31
|
-
#include "src/core/lib/support/mpscq.h"
|
32
31
|
|
33
32
|
struct grpc_closure;
|
34
33
|
typedef struct grpc_closure grpc_closure;
|
@@ -47,18 +46,15 @@ typedef struct grpc_closure_list {
|
|
47
46
|
* describing what went wrong.
|
48
47
|
* Error contract: it is not the cb's job to unref this error;
|
49
48
|
* the closure scheduler will do that after the cb returns */
|
50
|
-
typedef void (*grpc_iomgr_cb_func)(
|
51
|
-
grpc_error* error);
|
49
|
+
typedef void (*grpc_iomgr_cb_func)(void* arg, grpc_error* error);
|
52
50
|
|
53
51
|
typedef struct grpc_closure_scheduler grpc_closure_scheduler;
|
54
52
|
|
55
53
|
typedef struct grpc_closure_scheduler_vtable {
|
56
54
|
/* NOTE: for all these functions, closure->scheduler == the scheduler that was
|
57
55
|
used to find this vtable */
|
58
|
-
void (*run)(
|
59
|
-
|
60
|
-
void (*sched)(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
|
61
|
-
grpc_error* error);
|
56
|
+
void (*run)(grpc_closure* closure, grpc_error* error);
|
57
|
+
void (*sched)(grpc_closure* closure, grpc_error* error);
|
62
58
|
const char* name;
|
63
59
|
} grpc_closure_scheduler_vtable;
|
64
60
|
|
@@ -146,13 +142,12 @@ typedef struct {
|
|
146
142
|
grpc_closure wrapper;
|
147
143
|
} wrapped_closure;
|
148
144
|
|
149
|
-
inline void closure_wrapper(
|
150
|
-
grpc_error* error) {
|
145
|
+
inline void closure_wrapper(void* arg, grpc_error* error) {
|
151
146
|
wrapped_closure* wc = (wrapped_closure*)arg;
|
152
147
|
grpc_iomgr_cb_func cb = wc->cb;
|
153
148
|
void* cb_arg = wc->cb_arg;
|
154
149
|
gpr_free(wc);
|
155
|
-
cb(
|
150
|
+
cb(cb_arg, error);
|
156
151
|
}
|
157
152
|
|
158
153
|
} // namespace closure_impl
|
@@ -247,12 +242,10 @@ inline bool grpc_closure_list_empty(grpc_closure_list closure_list) {
|
|
247
242
|
}
|
248
243
|
|
249
244
|
#ifndef NDEBUG
|
250
|
-
inline void grpc_closure_run(const char* file, int line,
|
251
|
-
grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
245
|
+
inline void grpc_closure_run(const char* file, int line, grpc_closure* c,
|
252
246
|
grpc_error* error) {
|
253
247
|
#else
|
254
|
-
inline void grpc_closure_run(
|
255
|
-
grpc_error* error) {
|
248
|
+
inline void grpc_closure_run(grpc_closure* c, grpc_error* error) {
|
256
249
|
#endif
|
257
250
|
GPR_TIMER_BEGIN("grpc_closure_run", 0);
|
258
251
|
if (c != nullptr) {
|
@@ -262,7 +255,7 @@ inline void grpc_closure_run(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
|
262
255
|
c->run = true;
|
263
256
|
#endif
|
264
257
|
assert(c->cb);
|
265
|
-
c->scheduler->vtable->run(
|
258
|
+
c->scheduler->vtable->run(c, error);
|
266
259
|
} else {
|
267
260
|
GRPC_ERROR_UNREF(error);
|
268
261
|
}
|
@@ -273,20 +266,17 @@ inline void grpc_closure_run(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
|
273
266
|
* Note that calling this at the end of a closure callback function itself is
|
274
267
|
* by definition safe. */
|
275
268
|
#ifndef NDEBUG
|
276
|
-
#define GRPC_CLOSURE_RUN(
|
277
|
-
grpc_closure_run(__FILE__, __LINE__,
|
269
|
+
#define GRPC_CLOSURE_RUN(closure, error) \
|
270
|
+
grpc_closure_run(__FILE__, __LINE__, closure, error)
|
278
271
|
#else
|
279
|
-
#define GRPC_CLOSURE_RUN(
|
280
|
-
grpc_closure_run(exec_ctx, closure, error)
|
272
|
+
#define GRPC_CLOSURE_RUN(closure, error) grpc_closure_run(closure, error)
|
281
273
|
#endif
|
282
274
|
|
283
275
|
#ifndef NDEBUG
|
284
|
-
inline void grpc_closure_sched(const char* file, int line,
|
285
|
-
grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
276
|
+
inline void grpc_closure_sched(const char* file, int line, grpc_closure* c,
|
286
277
|
grpc_error* error) {
|
287
278
|
#else
|
288
|
-
inline void grpc_closure_sched(
|
289
|
-
grpc_error* error) {
|
279
|
+
inline void grpc_closure_sched(grpc_closure* c, grpc_error* error) {
|
290
280
|
#endif
|
291
281
|
GPR_TIMER_BEGIN("grpc_closure_sched", 0);
|
292
282
|
if (c != nullptr) {
|
@@ -305,7 +295,7 @@ inline void grpc_closure_sched(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
|
305
295
|
c->run = false;
|
306
296
|
#endif
|
307
297
|
assert(c->cb);
|
308
|
-
c->scheduler->vtable->sched(
|
298
|
+
c->scheduler->vtable->sched(c, error);
|
309
299
|
} else {
|
310
300
|
GRPC_ERROR_UNREF(error);
|
311
301
|
}
|
@@ -314,20 +304,17 @@ inline void grpc_closure_sched(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
|
314
304
|
|
315
305
|
/** Schedule a closure to be run. Does not need to be run from a safe point. */
|
316
306
|
#ifndef NDEBUG
|
317
|
-
#define GRPC_CLOSURE_SCHED(
|
318
|
-
grpc_closure_sched(__FILE__, __LINE__,
|
307
|
+
#define GRPC_CLOSURE_SCHED(closure, error) \
|
308
|
+
grpc_closure_sched(__FILE__, __LINE__, closure, error)
|
319
309
|
#else
|
320
|
-
#define GRPC_CLOSURE_SCHED(
|
321
|
-
grpc_closure_sched(exec_ctx, closure, error)
|
310
|
+
#define GRPC_CLOSURE_SCHED(closure, error) grpc_closure_sched(closure, error)
|
322
311
|
#endif
|
323
312
|
|
324
313
|
#ifndef NDEBUG
|
325
314
|
inline void grpc_closure_list_sched(const char* file, int line,
|
326
|
-
grpc_exec_ctx* exec_ctx,
|
327
315
|
grpc_closure_list* list) {
|
328
316
|
#else
|
329
|
-
inline void grpc_closure_list_sched(
|
330
|
-
grpc_closure_list* list) {
|
317
|
+
inline void grpc_closure_list_sched(grpc_closure_list* list) {
|
331
318
|
#endif
|
332
319
|
grpc_closure* c = list->head;
|
333
320
|
while (c != nullptr) {
|
@@ -347,7 +334,7 @@ inline void grpc_closure_list_sched(grpc_exec_ctx* exec_ctx,
|
|
347
334
|
c->run = false;
|
348
335
|
#endif
|
349
336
|
assert(c->cb);
|
350
|
-
c->scheduler->vtable->sched(
|
337
|
+
c->scheduler->vtable->sched(c, c->error_data.error);
|
351
338
|
c = next;
|
352
339
|
}
|
353
340
|
list->head = list->tail = nullptr;
|
@@ -356,11 +343,11 @@ inline void grpc_closure_list_sched(grpc_exec_ctx* exec_ctx,
|
|
356
343
|
/** Schedule all closures in a list to be run. Does not need to be run from a
|
357
344
|
* safe point. */
|
358
345
|
#ifndef NDEBUG
|
359
|
-
#define GRPC_CLOSURE_LIST_SCHED(
|
360
|
-
grpc_closure_list_sched(__FILE__, __LINE__,
|
346
|
+
#define GRPC_CLOSURE_LIST_SCHED(closure_list) \
|
347
|
+
grpc_closure_list_sched(__FILE__, __LINE__, closure_list)
|
361
348
|
#else
|
362
|
-
#define GRPC_CLOSURE_LIST_SCHED(
|
363
|
-
grpc_closure_list_sched(
|
349
|
+
#define GRPC_CLOSURE_LIST_SCHED(closure_list) \
|
350
|
+
grpc_closure_list_sched(closure_list)
|
364
351
|
#endif
|
365
352
|
|
366
353
|
#endif /* GRPC_CORE_LIB_IOMGR_CLOSURE_H */
|