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
@@ -23,11 +23,11 @@
|
|
23
23
|
#include <grpc/support/log.h>
|
24
24
|
#include <grpc/support/string_util.h>
|
25
25
|
|
26
|
+
#include "src/core/lib/gpr/string.h"
|
26
27
|
#include "src/core/lib/json/json.h"
|
27
28
|
#include "src/core/lib/slice/slice_hash_table.h"
|
28
29
|
#include "src/core/lib/slice/slice_internal.h"
|
29
30
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
30
|
-
#include "src/core/lib/support/string.h"
|
31
31
|
|
32
32
|
// The main purpose of the code here is to parse the service config in
|
33
33
|
// JSON form, which will look like this:
|
@@ -152,10 +152,8 @@ static char* parse_json_method_name(grpc_json* json) {
|
|
152
152
|
// each name found, incrementing \a idx for each entry added.
|
153
153
|
// Returns false on error.
|
154
154
|
static bool parse_json_method_config(
|
155
|
-
|
156
|
-
void* (*
|
157
|
-
void* (*ref_value)(void* value),
|
158
|
-
void (*unref_value)(grpc_exec_ctx* exec_ctx, void* value),
|
155
|
+
grpc_json* json, void* (*create_value)(const grpc_json* method_config_json),
|
156
|
+
void* (*ref_value)(void* value), void (*unref_value)(void* value),
|
159
157
|
grpc_slice_hash_table_entry* entries, size_t* idx) {
|
160
158
|
// Construct value.
|
161
159
|
void* method_config = create_value(json);
|
@@ -184,16 +182,15 @@ static bool parse_json_method_config(
|
|
184
182
|
}
|
185
183
|
success = true;
|
186
184
|
done:
|
187
|
-
unref_value(
|
185
|
+
unref_value(method_config);
|
188
186
|
gpr_strvec_destroy(&paths);
|
189
187
|
return success;
|
190
188
|
}
|
191
189
|
|
192
190
|
grpc_slice_hash_table* grpc_service_config_create_method_config_table(
|
193
|
-
|
191
|
+
const grpc_service_config* service_config,
|
194
192
|
void* (*create_value)(const grpc_json* method_config_json),
|
195
|
-
void* (*ref_value)(void* value),
|
196
|
-
void (*unref_value)(grpc_exec_ctx* exec_ctx, void* value)) {
|
193
|
+
void* (*ref_value)(void* value), void (*unref_value)(void* value)) {
|
197
194
|
const grpc_json* json = service_config->json_tree;
|
198
195
|
// Traverse parsed JSON tree.
|
199
196
|
if (json->type != GRPC_JSON_OBJECT || json->key != nullptr) return nullptr;
|
@@ -217,11 +214,11 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table(
|
|
217
214
|
size_t idx = 0;
|
218
215
|
for (grpc_json* method = field->child; method != nullptr;
|
219
216
|
method = method->next) {
|
220
|
-
if (!parse_json_method_config(
|
217
|
+
if (!parse_json_method_config(method, create_value, ref_value,
|
221
218
|
unref_value, entries, &idx)) {
|
222
219
|
for (size_t i = 0; i < idx; ++i) {
|
223
|
-
grpc_slice_unref_internal(
|
224
|
-
unref_value(
|
220
|
+
grpc_slice_unref_internal(entries[i].key);
|
221
|
+
unref_value(entries[i].value);
|
225
222
|
}
|
226
223
|
gpr_free(entries);
|
227
224
|
return nullptr;
|
@@ -240,8 +237,7 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table(
|
|
240
237
|
return method_config_table;
|
241
238
|
}
|
242
239
|
|
243
|
-
void* grpc_method_config_table_get(
|
244
|
-
const grpc_slice_hash_table* table,
|
240
|
+
void* grpc_method_config_table_get(const grpc_slice_hash_table* table,
|
245
241
|
grpc_slice path) {
|
246
242
|
void* value = grpc_slice_hash_table_get(table, path);
|
247
243
|
// If we didn't find a match for the path, try looking for a wildcard
|
@@ -257,7 +253,7 @@ void* grpc_method_config_table_get(grpc_exec_ctx* exec_ctx,
|
|
257
253
|
grpc_slice wildcard_path = grpc_slice_from_copied_string(buf);
|
258
254
|
gpr_free(buf);
|
259
255
|
value = grpc_slice_hash_table_get(table, wildcard_path);
|
260
|
-
grpc_slice_unref_internal(
|
256
|
+
grpc_slice_unref_internal(wildcard_path);
|
261
257
|
gpr_free(path_str);
|
262
258
|
}
|
263
259
|
return value;
|
@@ -22,10 +22,6 @@
|
|
22
22
|
#include "src/core/lib/json/json.h"
|
23
23
|
#include "src/core/lib/slice/slice_hash_table.h"
|
24
24
|
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
25
|
typedef struct grpc_service_config grpc_service_config;
|
30
26
|
|
31
27
|
grpc_service_config* grpc_service_config_create(const char* json_string);
|
@@ -49,10 +45,9 @@ const char* grpc_service_config_get_lb_policy_name(
|
|
49
45
|
/// \a ref_value() and \a unref_value() are used to ref and unref values.
|
50
46
|
/// Returns NULL on error.
|
51
47
|
grpc_slice_hash_table* grpc_service_config_create_method_config_table(
|
52
|
-
|
48
|
+
const grpc_service_config* service_config,
|
53
49
|
void* (*create_value)(const grpc_json* method_config_json),
|
54
|
-
void* (*ref_value)(void* value),
|
55
|
-
void (*unref_value)(grpc_exec_ctx* exec_ctx, void* value));
|
50
|
+
void* (*ref_value)(void* value), void (*unref_value)(void* value));
|
56
51
|
|
57
52
|
/// A helper function for looking up values in the table returned by
|
58
53
|
/// \a grpc_service_config_create_method_config_table().
|
@@ -60,12 +55,7 @@ grpc_slice_hash_table* grpc_service_config_create_method_config_table(
|
|
60
55
|
/// the form "/service/method".
|
61
56
|
/// Returns NULL if the method has no config.
|
62
57
|
/// Caller does NOT own a reference to the result.
|
63
|
-
void* grpc_method_config_table_get(
|
64
|
-
const grpc_slice_hash_table* table,
|
58
|
+
void* grpc_method_config_table_get(const grpc_slice_hash_table* table,
|
65
59
|
grpc_slice path);
|
66
60
|
|
67
|
-
#ifdef __cplusplus
|
68
|
-
}
|
69
|
-
#endif
|
70
|
-
|
71
61
|
#endif /* GRPC_CORE_LIB_TRANSPORT_SERVICE_CONFIG_H */
|
@@ -104,7 +104,7 @@ static uint8_t g_bytes[] = {
|
|
104
104
|
101, 44, 103, 122, 105, 112};
|
105
105
|
|
106
106
|
static void static_ref(void* unused) {}
|
107
|
-
static void static_unref(
|
107
|
+
static void static_unref(void* unused) {}
|
108
108
|
static const grpc_slice_refcount_vtable static_sub_vtable = {
|
109
109
|
static_ref, static_unref, grpc_slice_default_eq_impl,
|
110
110
|
grpc_slice_default_hash_impl};
|
@@ -27,10 +27,6 @@
|
|
27
27
|
#ifndef GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
|
28
28
|
#define GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
|
29
29
|
|
30
|
-
#ifdef __cplusplus
|
31
|
-
extern "C" {
|
32
|
-
#endif
|
33
|
-
|
34
30
|
#include "src/core/lib/transport/metadata.h"
|
35
31
|
|
36
32
|
#define GRPC_STATIC_MDSTR_COUNT 100
|
@@ -588,7 +584,5 @@ extern const uint8_t grpc_static_accept_stream_encoding_metadata[4];
|
|
588
584
|
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table \
|
589
585
|
[grpc_static_accept_stream_encoding_metadata[(algs)]], \
|
590
586
|
GRPC_MDELEM_STORAGE_STATIC))
|
591
|
-
|
592
|
-
}
|
593
|
-
#endif
|
587
|
+
|
594
588
|
#endif /* GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H */
|
@@ -37,8 +37,7 @@ grpc_http2_error_code grpc_status_to_http2_error(grpc_status_code status) {
|
|
37
37
|
}
|
38
38
|
}
|
39
39
|
|
40
|
-
grpc_status_code grpc_http2_error_to_grpc_status(
|
41
|
-
grpc_http2_error_code error,
|
40
|
+
grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error,
|
42
41
|
grpc_millis deadline) {
|
43
42
|
switch (error) {
|
44
43
|
case GRPC_HTTP2_NO_ERROR:
|
@@ -47,7 +46,7 @@ grpc_status_code grpc_http2_error_to_grpc_status(grpc_exec_ctx* exec_ctx,
|
|
47
46
|
case GRPC_HTTP2_CANCEL:
|
48
47
|
/* http2 cancel translates to STATUS_CANCELLED iff deadline hasn't been
|
49
48
|
* exceeded */
|
50
|
-
return
|
49
|
+
return grpc_core::ExecCtx::Get()->Now() > deadline
|
51
50
|
? GRPC_STATUS_DEADLINE_EXCEEDED
|
52
51
|
: GRPC_STATUS_CANCELLED;
|
53
52
|
case GRPC_HTTP2_ENHANCE_YOUR_CALM:
|
@@ -23,22 +23,13 @@
|
|
23
23
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
24
24
|
#include "src/core/lib/transport/http2_errors.h"
|
25
25
|
|
26
|
-
#ifdef __cplusplus
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
26
|
/* Conversion of grpc status codes to http2 error codes (for RST_STREAM) */
|
31
27
|
grpc_http2_error_code grpc_status_to_http2_error(grpc_status_code status);
|
32
|
-
grpc_status_code grpc_http2_error_to_grpc_status(
|
33
|
-
grpc_http2_error_code error,
|
28
|
+
grpc_status_code grpc_http2_error_to_grpc_status(grpc_http2_error_code error,
|
34
29
|
grpc_millis deadline);
|
35
30
|
|
36
31
|
/* Conversion of HTTP status codes (:status) to grpc status codes */
|
37
32
|
grpc_status_code grpc_http2_status_to_grpc_status(int status);
|
38
33
|
int grpc_status_to_http2_status(grpc_status_code status);
|
39
34
|
|
40
|
-
#ifdef __cplusplus
|
41
|
-
}
|
42
|
-
#endif
|
43
|
-
|
44
35
|
#endif /* GRPC_CORE_LIB_TRANSPORT_STATUS_CONVERSION_H */
|
@@ -22,7 +22,7 @@
|
|
22
22
|
#include <string.h>
|
23
23
|
|
24
24
|
#include <grpc/support/port_platform.h>
|
25
|
-
#include "src/core/lib/
|
25
|
+
#include "src/core/lib/gpr/string.h"
|
26
26
|
|
27
27
|
static int64_t round_up(int64_t x, int64_t divisor) {
|
28
28
|
return (x / divisor + (x % divisor != 0)) * divisor;
|
@@ -22,22 +22,14 @@
|
|
22
22
|
#include <grpc/slice.h>
|
23
23
|
#include <grpc/support/time.h>
|
24
24
|
|
25
|
+
#include "src/core/lib/gpr/string.h"
|
25
26
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
26
|
-
#include "src/core/lib/support/string.h"
|
27
27
|
|
28
28
|
#define GRPC_HTTP2_TIMEOUT_ENCODE_MIN_BUFSIZE (GPR_LTOA_MIN_BUFSIZE + 1)
|
29
29
|
|
30
|
-
#ifdef __cplusplus
|
31
|
-
extern "C" {
|
32
|
-
#endif
|
33
|
-
|
34
30
|
/* Encode/decode timeouts to the GRPC over HTTP/2 format;
|
35
31
|
encoding may round up arbitrarily */
|
36
32
|
void grpc_http2_encode_timeout(grpc_millis timeout, char* buffer);
|
37
33
|
int grpc_http2_decode_timeout(grpc_slice text, grpc_millis* timeout);
|
38
34
|
|
39
|
-
#ifdef __cplusplus
|
40
|
-
}
|
41
|
-
#endif
|
42
|
-
|
43
35
|
#endif /* GRPC_CORE_LIB_TRANSPORT_TIMEOUT_ENCODING_H */
|
@@ -25,10 +25,10 @@
|
|
25
25
|
#include <grpc/support/log.h>
|
26
26
|
#include <grpc/support/sync.h>
|
27
27
|
|
28
|
+
#include "src/core/lib/gpr/string.h"
|
28
29
|
#include "src/core/lib/iomgr/executor.h"
|
29
30
|
#include "src/core/lib/slice/slice_internal.h"
|
30
31
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
31
|
-
#include "src/core/lib/support/string.h"
|
32
32
|
#include "src/core/lib/transport/transport_impl.h"
|
33
33
|
|
34
34
|
grpc_core::DebugOnlyTraceFlag grpc_trace_stream_refcount(false,
|
@@ -49,8 +49,7 @@ void grpc_stream_ref(grpc_stream_refcount* refcount) {
|
|
49
49
|
}
|
50
50
|
|
51
51
|
#ifndef NDEBUG
|
52
|
-
void grpc_stream_unref(
|
53
|
-
const char* reason) {
|
52
|
+
void grpc_stream_unref(grpc_stream_refcount* refcount, const char* reason) {
|
54
53
|
if (grpc_trace_stream_refcount.enabled()) {
|
55
54
|
gpr_atm val = gpr_atm_no_barrier_load(&refcount->refs.count);
|
56
55
|
gpr_log(GPR_DEBUG, "%s %p:%p UNREF %" PRIdPTR "->%" PRIdPTR " %s",
|
@@ -58,11 +57,11 @@ void grpc_stream_unref(grpc_exec_ctx* exec_ctx, grpc_stream_refcount* refcount,
|
|
58
57
|
val - 1, reason);
|
59
58
|
}
|
60
59
|
#else
|
61
|
-
void grpc_stream_unref(
|
62
|
-
grpc_stream_refcount* refcount) {
|
60
|
+
void grpc_stream_unref(grpc_stream_refcount* refcount) {
|
63
61
|
#endif
|
64
62
|
if (gpr_unref(&refcount->refs)) {
|
65
|
-
if (
|
63
|
+
if (grpc_core::ExecCtx::Get()->flags() &
|
64
|
+
GRPC_EXEC_CTX_FLAG_THREAD_RESOURCE_LOOP) {
|
66
65
|
/* Ick.
|
67
66
|
The thread we're running on MAY be owned (indirectly) by a call-stack.
|
68
67
|
If that's the case, destroying the call-stack MAY try to destroy the
|
@@ -73,7 +72,7 @@ void grpc_stream_unref(grpc_exec_ctx* exec_ctx,
|
|
73
72
|
refcount->destroy.scheduler =
|
74
73
|
grpc_executor_scheduler(GRPC_EXECUTOR_SHORT);
|
75
74
|
}
|
76
|
-
GRPC_CLOSURE_SCHED(
|
75
|
+
GRPC_CLOSURE_SCHED(&refcount->destroy, GRPC_ERROR_NONE);
|
77
76
|
}
|
78
77
|
}
|
79
78
|
|
@@ -89,11 +88,11 @@ static void slice_stream_ref(void* p) {
|
|
89
88
|
#endif
|
90
89
|
}
|
91
90
|
|
92
|
-
static void slice_stream_unref(
|
91
|
+
static void slice_stream_unref(void* p) {
|
93
92
|
#ifndef NDEBUG
|
94
|
-
grpc_stream_unref(
|
93
|
+
grpc_stream_unref(STREAM_REF_FROM_SLICE_REF(p), "slice");
|
95
94
|
#else
|
96
|
-
grpc_stream_unref(
|
95
|
+
grpc_stream_unref(STREAM_REF_FROM_SLICE_REF(p));
|
97
96
|
#endif
|
98
97
|
}
|
99
98
|
|
@@ -151,59 +150,50 @@ size_t grpc_transport_stream_size(grpc_transport* transport) {
|
|
151
150
|
return transport->vtable->sizeof_stream;
|
152
151
|
}
|
153
152
|
|
154
|
-
void grpc_transport_destroy(
|
155
|
-
|
156
|
-
transport->vtable->destroy(exec_ctx, transport);
|
153
|
+
void grpc_transport_destroy(grpc_transport* transport) {
|
154
|
+
transport->vtable->destroy(transport);
|
157
155
|
}
|
158
156
|
|
159
|
-
int grpc_transport_init_stream(
|
160
|
-
grpc_transport* transport, grpc_stream* stream,
|
157
|
+
int grpc_transport_init_stream(grpc_transport* transport, grpc_stream* stream,
|
161
158
|
grpc_stream_refcount* refcount,
|
162
159
|
const void* server_data, gpr_arena* arena) {
|
163
|
-
return transport->vtable->init_stream(
|
160
|
+
return transport->vtable->init_stream(transport, stream, refcount,
|
164
161
|
server_data, arena);
|
165
162
|
}
|
166
163
|
|
167
|
-
void grpc_transport_perform_stream_op(
|
168
|
-
grpc_transport* transport,
|
164
|
+
void grpc_transport_perform_stream_op(grpc_transport* transport,
|
169
165
|
grpc_stream* stream,
|
170
166
|
grpc_transport_stream_op_batch* op) {
|
171
|
-
transport->vtable->perform_stream_op(
|
167
|
+
transport->vtable->perform_stream_op(transport, stream, op);
|
172
168
|
}
|
173
169
|
|
174
|
-
void grpc_transport_perform_op(
|
175
|
-
grpc_transport* transport,
|
170
|
+
void grpc_transport_perform_op(grpc_transport* transport,
|
176
171
|
grpc_transport_op* op) {
|
177
|
-
transport->vtable->perform_op(
|
172
|
+
transport->vtable->perform_op(transport, op);
|
178
173
|
}
|
179
174
|
|
180
|
-
void grpc_transport_set_pops(
|
181
|
-
grpc_stream* stream,
|
175
|
+
void grpc_transport_set_pops(grpc_transport* transport, grpc_stream* stream,
|
182
176
|
grpc_polling_entity* pollent) {
|
183
177
|
grpc_pollset* pollset;
|
184
178
|
grpc_pollset_set* pollset_set;
|
185
179
|
if ((pollset = grpc_polling_entity_pollset(pollent)) != nullptr) {
|
186
|
-
transport->vtable->set_pollset(
|
180
|
+
transport->vtable->set_pollset(transport, stream, pollset);
|
187
181
|
} else if ((pollset_set = grpc_polling_entity_pollset_set(pollent)) !=
|
188
182
|
nullptr) {
|
189
|
-
transport->vtable->set_pollset_set(
|
190
|
-
pollset_set);
|
183
|
+
transport->vtable->set_pollset_set(transport, stream, pollset_set);
|
191
184
|
} else {
|
192
185
|
abort();
|
193
186
|
}
|
194
187
|
}
|
195
188
|
|
196
|
-
void grpc_transport_destroy_stream(
|
197
|
-
grpc_transport* transport,
|
189
|
+
void grpc_transport_destroy_stream(grpc_transport* transport,
|
198
190
|
grpc_stream* stream,
|
199
191
|
grpc_closure* then_schedule_closure) {
|
200
|
-
transport->vtable->destroy_stream(
|
201
|
-
then_schedule_closure);
|
192
|
+
transport->vtable->destroy_stream(transport, stream, then_schedule_closure);
|
202
193
|
}
|
203
194
|
|
204
|
-
grpc_endpoint* grpc_transport_get_endpoint(
|
205
|
-
|
206
|
-
return transport->vtable->get_endpoint(exec_ctx, transport);
|
195
|
+
grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport) {
|
196
|
+
return transport->vtable->get_endpoint(transport);
|
207
197
|
}
|
208
198
|
|
209
199
|
// This comment should be sung to the tune of
|
@@ -214,25 +204,23 @@ grpc_endpoint* grpc_transport_get_endpoint(grpc_exec_ctx* exec_ctx,
|
|
214
204
|
// though it lives in lib, it handles transport stream ops sure
|
215
205
|
// it's grpc_transport_stream_op_batch_finish_with_failure
|
216
206
|
void grpc_transport_stream_op_batch_finish_with_failure(
|
217
|
-
|
218
|
-
|
207
|
+
grpc_transport_stream_op_batch* batch, grpc_error* error,
|
208
|
+
grpc_call_combiner* call_combiner) {
|
219
209
|
if (batch->send_message) {
|
220
|
-
grpc_byte_stream_destroy(
|
221
|
-
batch->payload->send_message.send_message);
|
210
|
+
grpc_byte_stream_destroy(batch->payload->send_message.send_message);
|
222
211
|
}
|
223
212
|
if (batch->recv_message) {
|
224
|
-
GRPC_CALL_COMBINER_START(
|
225
|
-
|
226
|
-
|
227
|
-
"failing recv_message_ready");
|
213
|
+
GRPC_CALL_COMBINER_START(
|
214
|
+
call_combiner, batch->payload->recv_message.recv_message_ready,
|
215
|
+
GRPC_ERROR_REF(error), "failing recv_message_ready");
|
228
216
|
}
|
229
217
|
if (batch->recv_initial_metadata) {
|
230
218
|
GRPC_CALL_COMBINER_START(
|
231
|
-
|
219
|
+
call_combiner,
|
232
220
|
batch->payload->recv_initial_metadata.recv_initial_metadata_ready,
|
233
221
|
GRPC_ERROR_REF(error), "failing recv_initial_metadata_ready");
|
234
222
|
}
|
235
|
-
GRPC_CLOSURE_SCHED(
|
223
|
+
GRPC_CLOSURE_SCHED(batch->on_complete, error);
|
236
224
|
if (batch->cancel_stream) {
|
237
225
|
GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error);
|
238
226
|
}
|
@@ -244,10 +232,9 @@ typedef struct {
|
|
244
232
|
grpc_transport_op op;
|
245
233
|
} made_transport_op;
|
246
234
|
|
247
|
-
static void destroy_made_transport_op(
|
248
|
-
grpc_error* error) {
|
235
|
+
static void destroy_made_transport_op(void* arg, grpc_error* error) {
|
249
236
|
made_transport_op* op = (made_transport_op*)arg;
|
250
|
-
GRPC_CLOSURE_SCHED(
|
237
|
+
GRPC_CLOSURE_SCHED(op->inner_on_complete, GRPC_ERROR_REF(error));
|
251
238
|
gpr_free(op);
|
252
239
|
}
|
253
240
|
|
@@ -268,12 +255,11 @@ typedef struct {
|
|
268
255
|
grpc_transport_stream_op_batch_payload payload;
|
269
256
|
} made_transport_stream_op;
|
270
257
|
|
271
|
-
static void destroy_made_transport_stream_op(
|
272
|
-
grpc_error* error) {
|
258
|
+
static void destroy_made_transport_stream_op(void* arg, grpc_error* error) {
|
273
259
|
made_transport_stream_op* op = (made_transport_stream_op*)arg;
|
274
260
|
grpc_closure* c = op->inner_on_complete;
|
275
261
|
gpr_free(op);
|
276
|
-
GRPC_CLOSURE_RUN(
|
262
|
+
GRPC_CLOSURE_RUN(c, GRPC_ERROR_REF(error));
|
277
263
|
}
|
278
264
|
|
279
265
|
grpc_transport_stream_op_batch* grpc_make_transport_stream_op(
|
@@ -22,20 +22,23 @@
|
|
22
22
|
#include <stddef.h>
|
23
23
|
|
24
24
|
#include "src/core/lib/channel/context.h"
|
25
|
+
#include "src/core/lib/gpr/arena.h"
|
25
26
|
#include "src/core/lib/iomgr/call_combiner.h"
|
26
27
|
#include "src/core/lib/iomgr/endpoint.h"
|
27
28
|
#include "src/core/lib/iomgr/polling_entity.h"
|
28
29
|
#include "src/core/lib/iomgr/pollset.h"
|
29
30
|
#include "src/core/lib/iomgr/pollset_set.h"
|
30
|
-
#include "src/core/lib/support/arena.h"
|
31
31
|
#include "src/core/lib/transport/byte_stream.h"
|
32
32
|
#include "src/core/lib/transport/metadata_batch.h"
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
#
|
34
|
+
/* Minimum and maximum protocol accepted versions. */
|
35
|
+
#define GRPC_PROTOCOL_VERSION_MAX_MAJOR 2
|
36
|
+
#define GRPC_PROTOCOL_VERSION_MAX_MINOR 1
|
37
|
+
#define GRPC_PROTOCOL_VERSION_MIN_MAJOR 2
|
38
|
+
#define GRPC_PROTOCOL_VERSION_MIN_MINOR 1
|
37
39
|
|
38
40
|
/* forward declarations */
|
41
|
+
|
39
42
|
typedef struct grpc_transport grpc_transport;
|
40
43
|
|
41
44
|
/* grpc_stream doesn't actually exist. It's used as a typesafe
|
@@ -59,15 +62,14 @@ void grpc_stream_ref_init(grpc_stream_refcount* refcount, int initial_refs,
|
|
59
62
|
grpc_iomgr_cb_func cb, void* cb_arg,
|
60
63
|
const char* object_type);
|
61
64
|
void grpc_stream_ref(grpc_stream_refcount* refcount, const char* reason);
|
62
|
-
void grpc_stream_unref(
|
63
|
-
const char* reason);
|
65
|
+
void grpc_stream_unref(grpc_stream_refcount* refcount, const char* reason);
|
64
66
|
#define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \
|
65
67
|
grpc_stream_ref_init(rc, ir, cb, cb_arg, objtype)
|
66
68
|
#else
|
67
69
|
void grpc_stream_ref_init(grpc_stream_refcount* refcount, int initial_refs,
|
68
70
|
grpc_iomgr_cb_func cb, void* cb_arg);
|
69
71
|
void grpc_stream_ref(grpc_stream_refcount* refcount);
|
70
|
-
void grpc_stream_unref(
|
72
|
+
void grpc_stream_unref(grpc_stream_refcount* refcount);
|
71
73
|
#define GRPC_STREAM_REF_INIT(rc, ir, cb, cb_arg, objtype) \
|
72
74
|
grpc_stream_ref_init(rc, ir, cb, cb_arg)
|
73
75
|
#endif
|
@@ -241,16 +243,21 @@ typedef struct grpc_transport_op {
|
|
241
243
|
If true, the callback is set to set_accept_stream_fn, with its
|
242
244
|
user_data argument set to set_accept_stream_user_data */
|
243
245
|
bool set_accept_stream;
|
244
|
-
void (*set_accept_stream_fn)(
|
245
|
-
grpc_transport* transport,
|
246
|
+
void (*set_accept_stream_fn)(void* user_data, grpc_transport* transport,
|
246
247
|
const void* server_data);
|
247
248
|
void* set_accept_stream_user_data;
|
248
249
|
/** add this transport to a pollset */
|
249
250
|
grpc_pollset* bind_pollset;
|
250
251
|
/** add this transport to a pollset_set */
|
251
252
|
grpc_pollset_set* bind_pollset_set;
|
252
|
-
/** send a ping,
|
253
|
-
|
253
|
+
/** send a ping, if either on_initiate or on_ack is not NULL */
|
254
|
+
struct {
|
255
|
+
/** Ping may be delayed by the transport, on_initiate callback will be
|
256
|
+
called when the ping is actually being sent. */
|
257
|
+
grpc_closure* on_initiate;
|
258
|
+
/** Called when the ping ack is received */
|
259
|
+
grpc_closure* on_ack;
|
260
|
+
} send_ping;
|
254
261
|
|
255
262
|
/***************************************************************************
|
256
263
|
* remaining fields are initialized and used at the discretion of the
|
@@ -273,13 +280,12 @@ size_t grpc_transport_stream_size(grpc_transport* transport);
|
|
273
280
|
stream - a pointer to uninitialized memory to initialize
|
274
281
|
server_data - either NULL for a client initiated stream, or a pointer
|
275
282
|
supplied from the accept_stream callback function */
|
276
|
-
int grpc_transport_init_stream(
|
277
|
-
grpc_transport* transport, grpc_stream* stream,
|
283
|
+
int grpc_transport_init_stream(grpc_transport* transport, grpc_stream* stream,
|
278
284
|
grpc_stream_refcount* refcount,
|
279
285
|
const void* server_data, gpr_arena* arena);
|
280
286
|
|
281
|
-
void grpc_transport_set_pops(
|
282
|
-
|
287
|
+
void grpc_transport_set_pops(grpc_transport* transport, grpc_stream* stream,
|
288
|
+
grpc_polling_entity* pollent);
|
283
289
|
|
284
290
|
/* Destroy transport data for a stream.
|
285
291
|
|
@@ -291,14 +297,13 @@ void grpc_transport_set_pops(grpc_exec_ctx* exec_ctx, grpc_transport* transport,
|
|
291
297
|
transport - the transport on which to create this stream
|
292
298
|
stream - the grpc_stream to destroy (memory is still owned by the
|
293
299
|
caller, but any child memory must be cleaned up) */
|
294
|
-
void grpc_transport_destroy_stream(
|
295
|
-
grpc_transport* transport,
|
300
|
+
void grpc_transport_destroy_stream(grpc_transport* transport,
|
296
301
|
grpc_stream* stream,
|
297
302
|
grpc_closure* then_schedule_closure);
|
298
303
|
|
299
304
|
void grpc_transport_stream_op_batch_finish_with_failure(
|
300
|
-
|
301
|
-
|
305
|
+
grpc_transport_stream_op_batch* op, grpc_error* error,
|
306
|
+
grpc_call_combiner* call_combiner);
|
302
307
|
|
303
308
|
char* grpc_transport_stream_op_batch_string(grpc_transport_stream_op_batch* op);
|
304
309
|
char* grpc_transport_op_string(grpc_transport_op* op);
|
@@ -313,13 +318,11 @@ char* grpc_transport_op_string(grpc_transport_op* op);
|
|
313
318
|
non-NULL and previously initialized by the same transport.
|
314
319
|
op - a grpc_transport_stream_op_batch specifying the op to perform
|
315
320
|
*/
|
316
|
-
void grpc_transport_perform_stream_op(
|
317
|
-
grpc_transport* transport,
|
321
|
+
void grpc_transport_perform_stream_op(grpc_transport* transport,
|
318
322
|
grpc_stream* stream,
|
319
323
|
grpc_transport_stream_op_batch* op);
|
320
324
|
|
321
|
-
void grpc_transport_perform_op(
|
322
|
-
grpc_transport* transport,
|
325
|
+
void grpc_transport_perform_op(grpc_transport* transport,
|
323
326
|
grpc_transport_op* op);
|
324
327
|
|
325
328
|
/* Send a ping on a transport
|
@@ -332,11 +335,10 @@ void grpc_transport_goaway(grpc_transport* transport, grpc_status_code status,
|
|
332
335
|
grpc_slice debug_data);
|
333
336
|
|
334
337
|
/* Destroy the transport */
|
335
|
-
void grpc_transport_destroy(
|
338
|
+
void grpc_transport_destroy(grpc_transport* transport);
|
336
339
|
|
337
340
|
/* Get the endpoint used by \a transport */
|
338
|
-
grpc_endpoint* grpc_transport_get_endpoint(
|
339
|
-
grpc_transport* transport);
|
341
|
+
grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport);
|
340
342
|
|
341
343
|
/* Allocate a grpc_transport_op, and preconfigure the on_consumed closure to
|
342
344
|
\a on_consumed and then delete the returned transport op */
|
@@ -347,8 +349,4 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_consumed);
|
|
347
349
|
grpc_transport_stream_op_batch* grpc_make_transport_stream_op(
|
348
350
|
grpc_closure* on_consumed);
|
349
351
|
|
350
|
-
#ifdef __cplusplus
|
351
|
-
}
|
352
|
-
#endif
|
353
|
-
|
354
352
|
#endif /* GRPC_CORE_LIB_TRANSPORT_TRANSPORT_H */
|