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
@@ -40,15 +40,11 @@
|
|
40
40
|
#include <grpc/support/time.h>
|
41
41
|
|
42
42
|
#include "src/core/lib/debug/trace.h"
|
43
|
+
#include "src/core/lib/gpr/arena.h"
|
43
44
|
#include "src/core/lib/iomgr/call_combiner.h"
|
44
45
|
#include "src/core/lib/iomgr/polling_entity.h"
|
45
|
-
#include "src/core/lib/support/arena.h"
|
46
46
|
#include "src/core/lib/transport/transport.h"
|
47
47
|
|
48
|
-
#ifdef __cplusplus
|
49
|
-
extern "C" {
|
50
|
-
#endif
|
51
|
-
|
52
48
|
typedef struct grpc_channel_element grpc_channel_element;
|
53
49
|
typedef struct grpc_call_element grpc_call_element;
|
54
50
|
|
@@ -100,14 +96,12 @@ typedef struct {
|
|
100
96
|
typedef struct {
|
101
97
|
/* Called to eg. send/receive data on a call.
|
102
98
|
See grpc_call_next_op on how to call the next element in the stack */
|
103
|
-
void (*start_transport_stream_op_batch)(
|
104
|
-
grpc_call_element* elem,
|
99
|
+
void (*start_transport_stream_op_batch)(grpc_call_element* elem,
|
105
100
|
grpc_transport_stream_op_batch* op);
|
106
101
|
/* Called to handle channel level operations - e.g. new calls, or transport
|
107
102
|
closure.
|
108
103
|
See grpc_channel_next_op on how to call the next element in the stack */
|
109
|
-
void (*start_transport_op)(
|
110
|
-
grpc_channel_element* elem, grpc_transport_op* op);
|
104
|
+
void (*start_transport_op)(grpc_channel_element* elem, grpc_transport_op* op);
|
111
105
|
|
112
106
|
/* sizeof(per call data) */
|
113
107
|
size_t sizeof_call_data;
|
@@ -120,11 +114,9 @@ typedef struct {
|
|
120
114
|
transport and is on the server. Most filters want to ignore this
|
121
115
|
argument.
|
122
116
|
Implementations may assume that elem->call_data is all zeros. */
|
123
|
-
grpc_error* (*init_call_elem)(
|
124
|
-
grpc_call_element* elem,
|
117
|
+
grpc_error* (*init_call_elem)(grpc_call_element* elem,
|
125
118
|
const grpc_call_element_args* args);
|
126
|
-
void (*set_pollset_or_pollset_set)(
|
127
|
-
grpc_call_element* elem,
|
119
|
+
void (*set_pollset_or_pollset_set)(grpc_call_element* elem,
|
128
120
|
grpc_polling_entity* pollent);
|
129
121
|
/* Destroy per call data.
|
130
122
|
The filter does not need to do any chaining.
|
@@ -132,7 +124,7 @@ typedef struct {
|
|
132
124
|
\a then_schedule_closure that should be passed to GRPC_CLOSURE_SCHED when
|
133
125
|
destruction is complete. \a final_info contains data about the completed
|
134
126
|
call, mainly for reporting purposes. */
|
135
|
-
void (*destroy_call_elem)(
|
127
|
+
void (*destroy_call_elem)(grpc_call_element* elem,
|
136
128
|
const grpc_call_final_info* final_info,
|
137
129
|
grpc_closure* then_schedule_closure);
|
138
130
|
|
@@ -145,16 +137,14 @@ typedef struct {
|
|
145
137
|
useful for asserting correct configuration by upper layer code.
|
146
138
|
The filter does not need to do any chaining.
|
147
139
|
Implementations may assume that elem->call_data is all zeros. */
|
148
|
-
grpc_error* (*init_channel_elem)(
|
149
|
-
grpc_channel_element* elem,
|
140
|
+
grpc_error* (*init_channel_elem)(grpc_channel_element* elem,
|
150
141
|
grpc_channel_element_args* args);
|
151
142
|
/* Destroy per channel data.
|
152
143
|
The filter does not need to do any chaining */
|
153
|
-
void (*destroy_channel_elem)(
|
154
|
-
grpc_channel_element* elem);
|
144
|
+
void (*destroy_channel_elem)(grpc_channel_element* elem);
|
155
145
|
|
156
146
|
/* Implement grpc_channel_get_info() */
|
157
|
-
void (*get_channel_info)(
|
147
|
+
void (*get_channel_info)(grpc_channel_element* elem,
|
158
148
|
const grpc_channel_info* channel_info);
|
159
149
|
|
160
150
|
/* The name of this filter */
|
@@ -212,68 +202,62 @@ size_t grpc_channel_stack_size(const grpc_channel_filter** filters,
|
|
212
202
|
size_t filter_count);
|
213
203
|
/* Initialize a channel stack given some filters */
|
214
204
|
grpc_error* grpc_channel_stack_init(
|
215
|
-
|
216
|
-
|
205
|
+
int initial_refs, grpc_iomgr_cb_func destroy, void* destroy_arg,
|
206
|
+
const grpc_channel_filter** filters, size_t filter_count,
|
217
207
|
const grpc_channel_args* args, grpc_transport* optional_transport,
|
218
208
|
const char* name, grpc_channel_stack* stack);
|
219
209
|
/* Destroy a channel stack */
|
220
|
-
void grpc_channel_stack_destroy(
|
221
|
-
grpc_channel_stack* stack);
|
210
|
+
void grpc_channel_stack_destroy(grpc_channel_stack* stack);
|
222
211
|
|
223
212
|
/* Initialize a call stack given a channel stack. transport_server_data is
|
224
213
|
expected to be NULL on a client, or an opaque transport owned pointer on the
|
225
214
|
server. */
|
226
|
-
grpc_error* grpc_call_stack_init(
|
227
|
-
grpc_channel_stack* channel_stack,
|
215
|
+
grpc_error* grpc_call_stack_init(grpc_channel_stack* channel_stack,
|
228
216
|
int initial_refs, grpc_iomgr_cb_func destroy,
|
229
217
|
void* destroy_arg,
|
230
218
|
const grpc_call_element_args* elem_args);
|
231
219
|
/* Set a pollset or a pollset_set for a call stack: must occur before the first
|
232
220
|
* op is started */
|
233
|
-
void grpc_call_stack_set_pollset_or_pollset_set(
|
234
|
-
grpc_call_stack* call_stack,
|
221
|
+
void grpc_call_stack_set_pollset_or_pollset_set(grpc_call_stack* call_stack,
|
235
222
|
grpc_polling_entity* pollent);
|
236
223
|
|
237
224
|
#ifndef NDEBUG
|
238
225
|
#define GRPC_CALL_STACK_REF(call_stack, reason) \
|
239
226
|
grpc_stream_ref(&(call_stack)->refcount, reason)
|
240
|
-
#define GRPC_CALL_STACK_UNREF(
|
241
|
-
grpc_stream_unref(
|
227
|
+
#define GRPC_CALL_STACK_UNREF(call_stack, reason) \
|
228
|
+
grpc_stream_unref(&(call_stack)->refcount, reason)
|
242
229
|
#define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \
|
243
230
|
grpc_stream_ref(&(channel_stack)->refcount, reason)
|
244
|
-
#define GRPC_CHANNEL_STACK_UNREF(
|
245
|
-
grpc_stream_unref(
|
231
|
+
#define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \
|
232
|
+
grpc_stream_unref(&(channel_stack)->refcount, reason)
|
246
233
|
#else
|
247
234
|
#define GRPC_CALL_STACK_REF(call_stack, reason) \
|
248
235
|
grpc_stream_ref(&(call_stack)->refcount)
|
249
|
-
#define GRPC_CALL_STACK_UNREF(
|
250
|
-
grpc_stream_unref(
|
236
|
+
#define GRPC_CALL_STACK_UNREF(call_stack, reason) \
|
237
|
+
grpc_stream_unref(&(call_stack)->refcount)
|
251
238
|
#define GRPC_CHANNEL_STACK_REF(channel_stack, reason) \
|
252
239
|
grpc_stream_ref(&(channel_stack)->refcount)
|
253
|
-
#define GRPC_CHANNEL_STACK_UNREF(
|
254
|
-
grpc_stream_unref(
|
240
|
+
#define GRPC_CHANNEL_STACK_UNREF(channel_stack, reason) \
|
241
|
+
grpc_stream_unref(&(channel_stack)->refcount)
|
255
242
|
#endif
|
256
243
|
|
257
244
|
/* Destroy a call stack */
|
258
|
-
void grpc_call_stack_destroy(
|
245
|
+
void grpc_call_stack_destroy(grpc_call_stack* stack,
|
259
246
|
const grpc_call_final_info* final_info,
|
260
247
|
grpc_closure* then_schedule_closure);
|
261
248
|
|
262
249
|
/* Ignore set pollset{_set} - used by filters if they don't care about pollsets
|
263
250
|
* at all. Does nothing. */
|
264
251
|
void grpc_call_stack_ignore_set_pollset_or_pollset_set(
|
265
|
-
|
266
|
-
grpc_polling_entity* pollent);
|
252
|
+
grpc_call_element* elem, grpc_polling_entity* pollent);
|
267
253
|
/* Call the next operation in a call stack */
|
268
|
-
void grpc_call_next_op(
|
254
|
+
void grpc_call_next_op(grpc_call_element* elem,
|
269
255
|
grpc_transport_stream_op_batch* op);
|
270
256
|
/* Call the next operation (depending on call directionality) in a channel
|
271
257
|
stack */
|
272
|
-
void grpc_channel_next_op(
|
273
|
-
grpc_transport_op* op);
|
258
|
+
void grpc_channel_next_op(grpc_channel_element* elem, grpc_transport_op* op);
|
274
259
|
/* Pass through a request to get_channel_info() to the next child element */
|
275
|
-
void grpc_channel_next_get_info(
|
276
|
-
grpc_channel_element* elem,
|
260
|
+
void grpc_channel_next_get_info(grpc_channel_element* elem,
|
277
261
|
const grpc_channel_info* channel_info);
|
278
262
|
|
279
263
|
/* Given the top element of a channel stack, get the channel stack itself */
|
@@ -291,8 +275,4 @@ extern grpc_core::TraceFlag grpc_trace_channel;
|
|
291
275
|
#define GRPC_CALL_LOG_OP(sev, elem, op) \
|
292
276
|
if (grpc_trace_channel.enabled()) grpc_call_log_op(sev, elem, op)
|
293
277
|
|
294
|
-
#ifdef __cplusplus
|
295
|
-
}
|
296
|
-
#endif
|
297
|
-
|
298
278
|
#endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_H */
|
@@ -150,10 +150,9 @@ void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder* builder,
|
|
150
150
|
}
|
151
151
|
|
152
152
|
void grpc_channel_stack_builder_set_channel_arguments(
|
153
|
-
|
154
|
-
const grpc_channel_args* args) {
|
153
|
+
grpc_channel_stack_builder* builder, const grpc_channel_args* args) {
|
155
154
|
if (builder->args != nullptr) {
|
156
|
-
grpc_channel_args_destroy(
|
155
|
+
grpc_channel_args_destroy(builder->args);
|
157
156
|
}
|
158
157
|
builder->args = grpc_channel_args_copy(args);
|
159
158
|
}
|
@@ -241,8 +240,7 @@ bool grpc_channel_stack_builder_add_filter_after(
|
|
241
240
|
return true;
|
242
241
|
}
|
243
242
|
|
244
|
-
void grpc_channel_stack_builder_destroy(
|
245
|
-
grpc_channel_stack_builder* builder) {
|
243
|
+
void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder* builder) {
|
246
244
|
filter_node* p = builder->begin.next;
|
247
245
|
while (p != &builder->end) {
|
248
246
|
filter_node* next = p->next;
|
@@ -250,16 +248,15 @@ void grpc_channel_stack_builder_destroy(grpc_exec_ctx* exec_ctx,
|
|
250
248
|
p = next;
|
251
249
|
}
|
252
250
|
if (builder->args != nullptr) {
|
253
|
-
grpc_channel_args_destroy(
|
251
|
+
grpc_channel_args_destroy(builder->args);
|
254
252
|
}
|
255
253
|
gpr_free(builder->target);
|
256
254
|
gpr_free(builder);
|
257
255
|
}
|
258
256
|
|
259
257
|
grpc_error* grpc_channel_stack_builder_finish(
|
260
|
-
|
261
|
-
|
262
|
-
void* destroy_arg, void** result) {
|
258
|
+
grpc_channel_stack_builder* builder, size_t prefix_bytes, int initial_refs,
|
259
|
+
grpc_iomgr_cb_func destroy, void* destroy_arg, void** result) {
|
263
260
|
// count the number of filters
|
264
261
|
size_t num_filters = 0;
|
265
262
|
for (filter_node* p = builder->begin.next; p != &builder->end; p = p->next) {
|
@@ -284,12 +281,12 @@ grpc_error* grpc_channel_stack_builder_finish(
|
|
284
281
|
(grpc_channel_stack*)((char*)(*result) + prefix_bytes);
|
285
282
|
// and initialize it
|
286
283
|
grpc_error* error = grpc_channel_stack_init(
|
287
|
-
|
288
|
-
|
289
|
-
|
284
|
+
initial_refs, destroy, destroy_arg == nullptr ? *result : destroy_arg,
|
285
|
+
filters, num_filters, builder->args, builder->transport, builder->name,
|
286
|
+
channel_stack);
|
290
287
|
|
291
288
|
if (error != GRPC_ERROR_NONE) {
|
292
|
-
grpc_channel_stack_destroy(
|
289
|
+
grpc_channel_stack_destroy(channel_stack);
|
293
290
|
gpr_free(*result);
|
294
291
|
*result = nullptr;
|
295
292
|
} else {
|
@@ -305,7 +302,7 @@ grpc_error* grpc_channel_stack_builder_finish(
|
|
305
302
|
}
|
306
303
|
}
|
307
304
|
|
308
|
-
grpc_channel_stack_builder_destroy(
|
305
|
+
grpc_channel_stack_builder_destroy(builder);
|
309
306
|
gpr_free((grpc_channel_filter**)filters);
|
310
307
|
|
311
308
|
return error;
|
@@ -24,10 +24,6 @@
|
|
24
24
|
#include "src/core/lib/channel/channel_args.h"
|
25
25
|
#include "src/core/lib/channel/channel_stack.h"
|
26
26
|
|
27
|
-
#ifdef __cplusplus
|
28
|
-
extern "C" {
|
29
|
-
#endif
|
30
|
-
|
31
27
|
/// grpc_channel_stack_builder offers a programmatic interface to selected
|
32
28
|
/// and order channel filters
|
33
29
|
typedef struct grpc_channel_stack_builder grpc_channel_stack_builder;
|
@@ -58,8 +54,7 @@ grpc_transport* grpc_channel_stack_builder_get_transport(
|
|
58
54
|
|
59
55
|
/// Set channel arguments: copies args
|
60
56
|
void grpc_channel_stack_builder_set_channel_arguments(
|
61
|
-
|
62
|
-
const grpc_channel_args* args);
|
57
|
+
grpc_channel_stack_builder* builder, const grpc_channel_args* args);
|
63
58
|
|
64
59
|
/// Return a borrowed pointer to the channel arguments
|
65
60
|
const grpc_channel_args* grpc_channel_stack_builder_get_channel_arguments(
|
@@ -152,18 +147,12 @@ void grpc_channel_stack_builder_iterator_destroy(
|
|
152
147
|
/// \a initial_refs, \a destroy, \a destroy_arg are as per
|
153
148
|
/// grpc_channel_stack_init
|
154
149
|
grpc_error* grpc_channel_stack_builder_finish(
|
155
|
-
|
156
|
-
|
157
|
-
void* destroy_arg, void** result);
|
150
|
+
grpc_channel_stack_builder* builder, size_t prefix_bytes, int initial_refs,
|
151
|
+
grpc_iomgr_cb_func destroy, void* destroy_arg, void** result);
|
158
152
|
|
159
153
|
/// Destroy the builder without creating a channel stack
|
160
|
-
void grpc_channel_stack_builder_destroy(
|
161
|
-
grpc_channel_stack_builder* builder);
|
154
|
+
void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder* builder);
|
162
155
|
|
163
156
|
extern grpc_core::TraceFlag grpc_trace_channel_stack_builder;
|
164
157
|
|
165
|
-
#ifdef __cplusplus
|
166
|
-
}
|
167
|
-
#endif
|
168
|
-
|
169
158
|
#endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H */
|
@@ -26,8 +26,8 @@
|
|
26
26
|
#include <grpc/slice_buffer.h>
|
27
27
|
#include <grpc/support/alloc.h>
|
28
28
|
#include <grpc/support/log.h>
|
29
|
+
#include "src/core/lib/gpr/string.h"
|
29
30
|
#include "src/core/lib/profiling/timers.h"
|
30
|
-
#include "src/core/lib/support/string.h"
|
31
31
|
#include "src/core/lib/transport/transport.h"
|
32
32
|
|
33
33
|
#define MAX_BUFFER_LENGTH 8192
|
@@ -51,17 +51,14 @@ typedef struct connected_channel_call_data {
|
|
51
51
|
callback_state recv_message_ready;
|
52
52
|
} call_data;
|
53
53
|
|
54
|
-
static void run_in_call_combiner(
|
55
|
-
grpc_error* error) {
|
54
|
+
static void run_in_call_combiner(void* arg, grpc_error* error) {
|
56
55
|
callback_state* state = (callback_state*)arg;
|
57
|
-
GRPC_CALL_COMBINER_START(
|
58
|
-
|
59
|
-
state->reason);
|
56
|
+
GRPC_CALL_COMBINER_START(state->call_combiner, state->original_closure,
|
57
|
+
GRPC_ERROR_REF(error), state->reason);
|
60
58
|
}
|
61
59
|
|
62
|
-
static void run_cancel_in_call_combiner(
|
63
|
-
|
64
|
-
run_in_call_combiner(exec_ctx, arg, error);
|
60
|
+
static void run_cancel_in_call_combiner(void* arg, grpc_error* error) {
|
61
|
+
run_in_call_combiner(arg, error);
|
65
62
|
gpr_free(arg);
|
66
63
|
}
|
67
64
|
|
@@ -98,8 +95,7 @@ static callback_state* get_state_for_batch(
|
|
98
95
|
/* Intercept a call operation and either push it directly up or translate it
|
99
96
|
into transport stream operations */
|
100
97
|
static void con_start_transport_stream_op_batch(
|
101
|
-
|
102
|
-
grpc_transport_stream_op_batch* batch) {
|
98
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
103
99
|
call_data* calld = (call_data*)elem->call_data;
|
104
100
|
channel_data* chand = (channel_data*)elem->channel_data;
|
105
101
|
if (batch->recv_initial_metadata) {
|
@@ -126,58 +122,52 @@ static void con_start_transport_stream_op_batch(
|
|
126
122
|
callback_state* state = get_state_for_batch(calld, batch);
|
127
123
|
intercept_callback(calld, state, false, "on_complete", &batch->on_complete);
|
128
124
|
}
|
129
|
-
grpc_transport_perform_stream_op(
|
130
|
-
|
131
|
-
|
132
|
-
GRPC_CALL_COMBINER_STOP(exec_ctx, calld->call_combiner,
|
133
|
-
"passed batch to transport");
|
125
|
+
grpc_transport_perform_stream_op(
|
126
|
+
chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), batch);
|
127
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner, "passed batch to transport");
|
134
128
|
}
|
135
129
|
|
136
|
-
static void con_start_transport_op(
|
137
|
-
grpc_channel_element* elem,
|
130
|
+
static void con_start_transport_op(grpc_channel_element* elem,
|
138
131
|
grpc_transport_op* op) {
|
139
132
|
channel_data* chand = (channel_data*)elem->channel_data;
|
140
|
-
grpc_transport_perform_op(
|
133
|
+
grpc_transport_perform_op(chand->transport, op);
|
141
134
|
}
|
142
135
|
|
143
136
|
/* Constructor for call_data */
|
144
|
-
static grpc_error* init_call_elem(
|
145
|
-
grpc_call_element* elem,
|
137
|
+
static grpc_error* init_call_elem(grpc_call_element* elem,
|
146
138
|
const grpc_call_element_args* args) {
|
147
139
|
call_data* calld = (call_data*)elem->call_data;
|
148
140
|
channel_data* chand = (channel_data*)elem->channel_data;
|
149
141
|
calld->call_combiner = args->call_combiner;
|
150
142
|
int r = grpc_transport_init_stream(
|
151
|
-
|
143
|
+
chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld),
|
152
144
|
&args->call_stack->refcount, args->server_transport_data, args->arena);
|
153
145
|
return r == 0 ? GRPC_ERROR_NONE
|
154
146
|
: GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
155
147
|
"transport stream initialization failed");
|
156
148
|
}
|
157
149
|
|
158
|
-
static void set_pollset_or_pollset_set(
|
159
|
-
grpc_call_element* elem,
|
150
|
+
static void set_pollset_or_pollset_set(grpc_call_element* elem,
|
160
151
|
grpc_polling_entity* pollent) {
|
161
152
|
call_data* calld = (call_data*)elem->call_data;
|
162
153
|
channel_data* chand = (channel_data*)elem->channel_data;
|
163
|
-
grpc_transport_set_pops(
|
154
|
+
grpc_transport_set_pops(chand->transport,
|
164
155
|
TRANSPORT_STREAM_FROM_CALL_DATA(calld), pollent);
|
165
156
|
}
|
166
157
|
|
167
158
|
/* Destructor for call_data */
|
168
|
-
static void destroy_call_elem(
|
159
|
+
static void destroy_call_elem(grpc_call_element* elem,
|
169
160
|
const grpc_call_final_info* final_info,
|
170
161
|
grpc_closure* then_schedule_closure) {
|
171
162
|
call_data* calld = (call_data*)elem->call_data;
|
172
163
|
channel_data* chand = (channel_data*)elem->channel_data;
|
173
|
-
grpc_transport_destroy_stream(
|
164
|
+
grpc_transport_destroy_stream(chand->transport,
|
174
165
|
TRANSPORT_STREAM_FROM_CALL_DATA(calld),
|
175
166
|
then_schedule_closure);
|
176
167
|
}
|
177
168
|
|
178
169
|
/* Constructor for channel_data */
|
179
|
-
static grpc_error* init_channel_elem(
|
180
|
-
grpc_channel_element* elem,
|
170
|
+
static grpc_error* init_channel_elem(grpc_channel_element* elem,
|
181
171
|
grpc_channel_element_args* args) {
|
182
172
|
channel_data* cd = (channel_data*)elem->channel_data;
|
183
173
|
GPR_ASSERT(args->is_last);
|
@@ -186,17 +176,15 @@ static grpc_error* init_channel_elem(grpc_exec_ctx* exec_ctx,
|
|
186
176
|
}
|
187
177
|
|
188
178
|
/* Destructor for channel_data */
|
189
|
-
static void destroy_channel_elem(
|
190
|
-
grpc_channel_element* elem) {
|
179
|
+
static void destroy_channel_elem(grpc_channel_element* elem) {
|
191
180
|
channel_data* cd = (channel_data*)elem->channel_data;
|
192
181
|
if (cd->transport) {
|
193
|
-
grpc_transport_destroy(
|
182
|
+
grpc_transport_destroy(cd->transport);
|
194
183
|
}
|
195
184
|
}
|
196
185
|
|
197
186
|
/* No-op. */
|
198
|
-
static void con_get_channel_info(
|
199
|
-
grpc_channel_element* elem,
|
187
|
+
static void con_get_channel_info(grpc_channel_element* elem,
|
200
188
|
const grpc_channel_info* channel_info) {}
|
201
189
|
|
202
190
|
const grpc_channel_filter grpc_connected_filter = {
|
@@ -230,8 +218,7 @@ static void bind_transport(grpc_channel_stack* channel_stack,
|
|
230
218
|
grpc_transport_stream_size((grpc_transport*)t);
|
231
219
|
}
|
232
220
|
|
233
|
-
bool grpc_add_connected_filter(
|
234
|
-
grpc_channel_stack_builder* builder,
|
221
|
+
bool grpc_add_connected_filter(grpc_channel_stack_builder* builder,
|
235
222
|
void* arg_must_be_null) {
|
236
223
|
GPR_ASSERT(arg_must_be_null == nullptr);
|
237
224
|
grpc_transport* t = grpc_channel_stack_builder_get_transport(builder);
|
@@ -21,21 +21,12 @@
|
|
21
21
|
|
22
22
|
#include "src/core/lib/channel/channel_stack_builder.h"
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
extern const grpc_channel_filter grpc_connected_filter;
|
29
25
|
|
30
|
-
bool grpc_add_connected_filter(
|
31
|
-
grpc_channel_stack_builder* builder,
|
26
|
+
bool grpc_add_connected_filter(grpc_channel_stack_builder* builder,
|
32
27
|
void* arg_must_be_null);
|
33
28
|
|
34
29
|
/* Debug helper to dig the transport stream out of a call element */
|
35
30
|
grpc_stream* grpc_connected_channel_get_stream(grpc_call_element* elem);
|
36
31
|
|
37
|
-
#ifdef __cplusplus
|
38
|
-
}
|
39
|
-
#endif
|
40
|
-
|
41
32
|
#endif /* GRPC_CORE_LIB_CHANNEL_CONNECTED_CHANNEL_H */
|
@@ -34,23 +34,20 @@ void grpc_handshaker_init(const grpc_handshaker_vtable* vtable,
|
|
34
34
|
handshaker->vtable = vtable;
|
35
35
|
}
|
36
36
|
|
37
|
-
void grpc_handshaker_destroy(
|
38
|
-
|
39
|
-
handshaker->vtable->destroy(exec_ctx, handshaker);
|
37
|
+
void grpc_handshaker_destroy(grpc_handshaker* handshaker) {
|
38
|
+
handshaker->vtable->destroy(handshaker);
|
40
39
|
}
|
41
40
|
|
42
|
-
void grpc_handshaker_shutdown(
|
43
|
-
|
44
|
-
handshaker->vtable->shutdown(exec_ctx, handshaker, why);
|
41
|
+
void grpc_handshaker_shutdown(grpc_handshaker* handshaker, grpc_error* why) {
|
42
|
+
handshaker->vtable->shutdown(handshaker, why);
|
45
43
|
}
|
46
44
|
|
47
|
-
void grpc_handshaker_do_handshake(
|
48
|
-
grpc_handshaker* handshaker,
|
45
|
+
void grpc_handshaker_do_handshake(grpc_handshaker* handshaker,
|
49
46
|
grpc_tcp_server_acceptor* acceptor,
|
50
47
|
grpc_closure* on_handshake_done,
|
51
48
|
grpc_handshaker_args* args) {
|
52
|
-
handshaker->vtable->do_handshake(
|
53
|
-
|
49
|
+
handshaker->vtable->do_handshake(handshaker, acceptor, on_handshake_done,
|
50
|
+
args);
|
54
51
|
}
|
55
52
|
|
56
53
|
//
|
@@ -116,9 +113,9 @@ void grpc_handshake_manager_pending_list_remove(grpc_handshake_manager** head,
|
|
116
113
|
}
|
117
114
|
|
118
115
|
void grpc_handshake_manager_pending_list_shutdown_all(
|
119
|
-
|
116
|
+
grpc_handshake_manager* head, grpc_error* why) {
|
120
117
|
while (head != nullptr) {
|
121
|
-
grpc_handshake_manager_shutdown(
|
118
|
+
grpc_handshake_manager_shutdown(head, GRPC_ERROR_REF(why));
|
122
119
|
head = head->next;
|
123
120
|
}
|
124
121
|
GRPC_ERROR_UNREF(why);
|
@@ -145,11 +142,10 @@ void grpc_handshake_manager_add(grpc_handshake_manager* mgr,
|
|
145
142
|
gpr_mu_unlock(&mgr->mu);
|
146
143
|
}
|
147
144
|
|
148
|
-
static void grpc_handshake_manager_unref(
|
149
|
-
grpc_handshake_manager* mgr) {
|
145
|
+
static void grpc_handshake_manager_unref(grpc_handshake_manager* mgr) {
|
150
146
|
if (gpr_unref(&mgr->refs)) {
|
151
147
|
for (size_t i = 0; i < mgr->count; ++i) {
|
152
|
-
grpc_handshaker_destroy(
|
148
|
+
grpc_handshaker_destroy(mgr->handshakers[i]);
|
153
149
|
}
|
154
150
|
gpr_free(mgr->handshakers);
|
155
151
|
gpr_mu_destroy(&mgr->mu);
|
@@ -157,19 +153,17 @@ static void grpc_handshake_manager_unref(grpc_exec_ctx* exec_ctx,
|
|
157
153
|
}
|
158
154
|
}
|
159
155
|
|
160
|
-
void grpc_handshake_manager_destroy(
|
161
|
-
|
162
|
-
grpc_handshake_manager_unref(exec_ctx, mgr);
|
156
|
+
void grpc_handshake_manager_destroy(grpc_handshake_manager* mgr) {
|
157
|
+
grpc_handshake_manager_unref(mgr);
|
163
158
|
}
|
164
159
|
|
165
|
-
void grpc_handshake_manager_shutdown(
|
166
|
-
grpc_handshake_manager* mgr,
|
160
|
+
void grpc_handshake_manager_shutdown(grpc_handshake_manager* mgr,
|
167
161
|
grpc_error* why) {
|
168
162
|
gpr_mu_lock(&mgr->mu);
|
169
163
|
// Shutdown the handshaker that's currently in progress, if any.
|
170
164
|
if (!mgr->shutdown && mgr->index > 0) {
|
171
165
|
mgr->shutdown = true;
|
172
|
-
grpc_handshaker_shutdown(
|
166
|
+
grpc_handshaker_shutdown(mgr->handshakers[mgr->index - 1],
|
173
167
|
GRPC_ERROR_REF(why));
|
174
168
|
}
|
175
169
|
gpr_mu_unlock(&mgr->mu);
|
@@ -179,8 +173,7 @@ void grpc_handshake_manager_shutdown(grpc_exec_ctx* exec_ctx,
|
|
179
173
|
// Helper function to call either the next handshaker or the
|
180
174
|
// on_handshake_done callback.
|
181
175
|
// Returns true if we've scheduled the on_handshake_done callback.
|
182
|
-
static bool call_next_handshaker_locked(
|
183
|
-
grpc_handshake_manager* mgr,
|
176
|
+
static bool call_next_handshaker_locked(grpc_handshake_manager* mgr,
|
184
177
|
grpc_error* error) {
|
185
178
|
GPR_ASSERT(mgr->index <= mgr->count);
|
186
179
|
// If we got an error or we've been shut down or we're exiting early or
|
@@ -190,13 +183,12 @@ static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx,
|
|
190
183
|
mgr->index == mgr->count) {
|
191
184
|
// Cancel deadline timer, since we're invoking the on_handshake_done
|
192
185
|
// callback now.
|
193
|
-
grpc_timer_cancel(
|
194
|
-
GRPC_CLOSURE_SCHED(
|
186
|
+
grpc_timer_cancel(&mgr->deadline_timer);
|
187
|
+
GRPC_CLOSURE_SCHED(&mgr->on_handshake_done, error);
|
195
188
|
mgr->shutdown = true;
|
196
189
|
} else {
|
197
|
-
grpc_handshaker_do_handshake(
|
198
|
-
mgr->
|
199
|
-
&mgr->args);
|
190
|
+
grpc_handshaker_do_handshake(mgr->handshakers[mgr->index], mgr->acceptor,
|
191
|
+
&mgr->call_next_handshaker, &mgr->args);
|
200
192
|
}
|
201
193
|
++mgr->index;
|
202
194
|
return mgr->shutdown;
|
@@ -204,33 +196,31 @@ static bool call_next_handshaker_locked(grpc_exec_ctx* exec_ctx,
|
|
204
196
|
|
205
197
|
// A function used as the handshaker-done callback when chaining
|
206
198
|
// handshakers together.
|
207
|
-
static void call_next_handshaker(
|
208
|
-
grpc_error* error) {
|
199
|
+
static void call_next_handshaker(void* arg, grpc_error* error) {
|
209
200
|
grpc_handshake_manager* mgr = (grpc_handshake_manager*)arg;
|
210
201
|
gpr_mu_lock(&mgr->mu);
|
211
|
-
bool done = call_next_handshaker_locked(
|
202
|
+
bool done = call_next_handshaker_locked(mgr, GRPC_ERROR_REF(error));
|
212
203
|
gpr_mu_unlock(&mgr->mu);
|
213
204
|
// If we're invoked the final callback, we won't be coming back
|
214
205
|
// to this function, so we can release our reference to the
|
215
206
|
// handshake manager.
|
216
207
|
if (done) {
|
217
|
-
grpc_handshake_manager_unref(
|
208
|
+
grpc_handshake_manager_unref(mgr);
|
218
209
|
}
|
219
210
|
}
|
220
211
|
|
221
212
|
// Callback invoked when deadline is exceeded.
|
222
|
-
static void on_timeout(
|
213
|
+
static void on_timeout(void* arg, grpc_error* error) {
|
223
214
|
grpc_handshake_manager* mgr = (grpc_handshake_manager*)arg;
|
224
215
|
if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled.
|
225
216
|
grpc_handshake_manager_shutdown(
|
226
|
-
|
227
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out"));
|
217
|
+
mgr, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out"));
|
228
218
|
}
|
229
|
-
grpc_handshake_manager_unref(
|
219
|
+
grpc_handshake_manager_unref(mgr);
|
230
220
|
}
|
231
221
|
|
232
222
|
void grpc_handshake_manager_do_handshake(
|
233
|
-
|
223
|
+
grpc_handshake_manager* mgr, grpc_pollset_set* interested_parties,
|
234
224
|
grpc_endpoint* endpoint, const grpc_channel_args* channel_args,
|
235
225
|
grpc_millis deadline, grpc_tcp_server_acceptor* acceptor,
|
236
226
|
grpc_iomgr_cb_func on_handshake_done, void* user_data) {
|
@@ -239,6 +229,7 @@ void grpc_handshake_manager_do_handshake(
|
|
239
229
|
GPR_ASSERT(!mgr->shutdown);
|
240
230
|
// Construct handshaker args. These will be passed through all
|
241
231
|
// handshakers and eventually be freed by the on_handshake_done callback.
|
232
|
+
mgr->args.interested_parties = interested_parties;
|
242
233
|
mgr->args.endpoint = endpoint;
|
243
234
|
mgr->args.args = grpc_channel_args_copy(channel_args);
|
244
235
|
mgr->args.user_data = user_data;
|
@@ -255,12 +246,12 @@ void grpc_handshake_manager_do_handshake(
|
|
255
246
|
gpr_ref(&mgr->refs);
|
256
247
|
GRPC_CLOSURE_INIT(&mgr->on_timeout, on_timeout, mgr,
|
257
248
|
grpc_schedule_on_exec_ctx);
|
258
|
-
grpc_timer_init(
|
249
|
+
grpc_timer_init(&mgr->deadline_timer, deadline, &mgr->on_timeout);
|
259
250
|
// Start first handshaker, which also owns a ref.
|
260
251
|
gpr_ref(&mgr->refs);
|
261
|
-
bool done = call_next_handshaker_locked(
|
252
|
+
bool done = call_next_handshaker_locked(mgr, GRPC_ERROR_NONE);
|
262
253
|
gpr_mu_unlock(&mgr->mu);
|
263
254
|
if (done) {
|
264
|
-
grpc_handshake_manager_unref(
|
255
|
+
grpc_handshake_manager_unref(mgr);
|
265
256
|
}
|
266
257
|
}
|