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
@@ -24,10 +24,6 @@
|
|
24
24
|
#include "src/core/lib/debug/trace.h"
|
25
25
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
26
26
|
|
27
|
-
#ifdef __cplusplus
|
28
|
-
extern "C" {
|
29
|
-
#endif
|
30
|
-
|
31
27
|
/** \file Tracks resource usage against a pool.
|
32
28
|
|
33
29
|
The current implementation tracks only memory usage, but in the future
|
@@ -69,8 +65,7 @@ extern grpc_core::TraceFlag grpc_resource_quota_trace;
|
|
69
65
|
|
70
66
|
grpc_resource_quota* grpc_resource_quota_ref_internal(
|
71
67
|
grpc_resource_quota* resource_quota);
|
72
|
-
void grpc_resource_quota_unref_internal(
|
73
|
-
grpc_resource_quota* resource_quota);
|
68
|
+
void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota);
|
74
69
|
grpc_resource_quota* grpc_resource_quota_from_channel_args(
|
75
70
|
const grpc_channel_args* channel_args);
|
76
71
|
|
@@ -93,32 +88,26 @@ grpc_resource_quota* grpc_resource_user_quota(
|
|
93
88
|
grpc_resource_user* resource_user);
|
94
89
|
|
95
90
|
void grpc_resource_user_ref(grpc_resource_user* resource_user);
|
96
|
-
void grpc_resource_user_unref(
|
97
|
-
|
98
|
-
void grpc_resource_user_shutdown(grpc_exec_ctx* exec_ctx,
|
99
|
-
grpc_resource_user* resource_user);
|
91
|
+
void grpc_resource_user_unref(grpc_resource_user* resource_user);
|
92
|
+
void grpc_resource_user_shutdown(grpc_resource_user* resource_user);
|
100
93
|
|
101
94
|
/* Allocate from the resource user (and its quota).
|
102
95
|
If optional_on_done is NULL, then allocate immediately. This may push the
|
103
96
|
quota over-limit, at which point reclamation will kick in.
|
104
97
|
If optional_on_done is non-NULL, it will be scheduled when the allocation has
|
105
98
|
been granted by the quota. */
|
106
|
-
void grpc_resource_user_alloc(
|
107
|
-
grpc_resource_user* resource_user, size_t size,
|
99
|
+
void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size,
|
108
100
|
grpc_closure* optional_on_done);
|
109
101
|
/* Release memory back to the quota */
|
110
|
-
void grpc_resource_user_free(
|
111
|
-
grpc_resource_user* resource_user, size_t size);
|
102
|
+
void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size);
|
112
103
|
/* Post a memory reclaimer to the resource user. Only one benign and one
|
113
104
|
destructive reclaimer can be posted at once. When executed, the reclaimer
|
114
105
|
MUST call grpc_resource_user_finish_reclamation before it completes, to
|
115
106
|
return control to the resource quota. */
|
116
|
-
void grpc_resource_user_post_reclaimer(
|
117
|
-
grpc_resource_user* resource_user,
|
107
|
+
void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
|
118
108
|
bool destructive, grpc_closure* closure);
|
119
109
|
/* Finish a reclamation step */
|
120
|
-
void grpc_resource_user_finish_reclamation(
|
121
|
-
grpc_resource_user* resource_user);
|
110
|
+
void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user);
|
122
111
|
|
123
112
|
/* Helper to allocate slices from a resource user */
|
124
113
|
typedef struct grpc_resource_user_slice_allocator {
|
@@ -145,17 +134,11 @@ void grpc_resource_user_slice_allocator_init(
|
|
145
134
|
/* Allocate \a count slices of length \a length into \a dest. Only one request
|
146
135
|
can be outstanding at a time. */
|
147
136
|
void grpc_resource_user_alloc_slices(
|
148
|
-
grpc_exec_ctx* exec_ctx,
|
149
137
|
grpc_resource_user_slice_allocator* slice_allocator, size_t length,
|
150
138
|
size_t count, grpc_slice_buffer* dest);
|
151
139
|
|
152
140
|
/* Allocate one slice of length \a size synchronously. */
|
153
|
-
grpc_slice grpc_resource_user_slice_malloc(
|
154
|
-
grpc_resource_user* resource_user,
|
141
|
+
grpc_slice grpc_resource_user_slice_malloc(grpc_resource_user* resource_user,
|
155
142
|
size_t size);
|
156
143
|
|
157
|
-
#ifdef __cplusplus
|
158
|
-
}
|
159
|
-
#endif
|
160
|
-
|
161
144
|
#endif /* GRPC_CORE_LIB_IOMGR_RESOURCE_QUOTA_H */
|
@@ -28,10 +28,10 @@
|
|
28
28
|
#include <grpc/support/port_platform.h>
|
29
29
|
#include <grpc/support/string_util.h>
|
30
30
|
|
31
|
+
#include "src/core/lib/gpr/string.h"
|
31
32
|
#include "src/core/lib/iomgr/sockaddr.h"
|
32
33
|
#include "src/core/lib/iomgr/socket_utils.h"
|
33
34
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
34
|
-
#include "src/core/lib/support/string.h"
|
35
35
|
|
36
36
|
static const uint8_t kV4MappedPrefix[] = {0, 0, 0, 0, 0, 0,
|
37
37
|
0, 0, 0, 0, 0xff, 0xff};
|
@@ -21,10 +21,6 @@
|
|
21
21
|
|
22
22
|
#include "src/core/lib/iomgr/resolve_address.h"
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
/* Returns true if addr is an IPv4-mapped IPv6 address within the
|
29
25
|
::ffff:0.0.0.0/96 range, or false otherwise.
|
30
26
|
|
@@ -81,8 +77,4 @@ const char* grpc_sockaddr_get_uri_scheme(const grpc_resolved_address* addr);
|
|
81
77
|
|
82
78
|
int grpc_sockaddr_get_family(const grpc_resolved_address* resolved_addr);
|
83
79
|
|
84
|
-
#ifdef __cplusplus
|
85
|
-
}
|
86
|
-
#endif
|
87
|
-
|
88
80
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_UTILS_H */
|
@@ -72,7 +72,7 @@ static void* socket_factory_arg_copy(void* p) {
|
|
72
72
|
return grpc_socket_factory_ref((grpc_socket_factory*)p);
|
73
73
|
}
|
74
74
|
|
75
|
-
static void socket_factory_arg_destroy(
|
75
|
+
static void socket_factory_arg_destroy(void* p) {
|
76
76
|
grpc_socket_factory_unref((grpc_socket_factory*)p);
|
77
77
|
}
|
78
78
|
|
@@ -23,10 +23,6 @@
|
|
23
23
|
#include <grpc/support/sync.h>
|
24
24
|
#include "src/core/lib/iomgr/resolve_address.h"
|
25
25
|
|
26
|
-
#ifdef __cplusplus
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
26
|
/** The virtual table of grpc_socket_factory */
|
31
27
|
typedef struct {
|
32
28
|
/** Replacement for socket(2) */
|
@@ -68,8 +64,4 @@ int grpc_socket_factory_compare(grpc_socket_factory* a, grpc_socket_factory* b);
|
|
68
64
|
grpc_socket_factory* grpc_socket_factory_ref(grpc_socket_factory* factory);
|
69
65
|
void grpc_socket_factory_unref(grpc_socket_factory* factory);
|
70
66
|
|
71
|
-
#ifdef __cplusplus
|
72
|
-
}
|
73
|
-
#endif
|
74
|
-
|
75
67
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_FACTORY_POSIX_H */
|
@@ -63,7 +63,7 @@ static void* socket_mutator_arg_copy(void* p) {
|
|
63
63
|
return grpc_socket_mutator_ref((grpc_socket_mutator*)p);
|
64
64
|
}
|
65
65
|
|
66
|
-
static void socket_mutator_arg_destroy(
|
66
|
+
static void socket_mutator_arg_destroy(void* p) {
|
67
67
|
grpc_socket_mutator_unref((grpc_socket_mutator*)p);
|
68
68
|
}
|
69
69
|
|
@@ -24,13 +24,9 @@
|
|
24
24
|
|
25
25
|
#include <stdbool.h>
|
26
26
|
|
27
|
-
#ifdef __cplusplus
|
28
|
-
extern "C" {
|
29
|
-
#endif
|
30
|
-
|
31
27
|
/** The virtual table of grpc_socket_mutator */
|
32
28
|
typedef struct {
|
33
|
-
/** Mutates the socket
|
29
|
+
/** Mutates the socket options of \a fd */
|
34
30
|
bool (*mutate_fd)(int fd, grpc_socket_mutator* mutator);
|
35
31
|
/** Compare socket mutator \a a and \a b */
|
36
32
|
int (*compare)(grpc_socket_mutator* a, grpc_socket_mutator* b);
|
@@ -60,8 +56,4 @@ int grpc_socket_mutator_compare(grpc_socket_mutator* a, grpc_socket_mutator* b);
|
|
60
56
|
grpc_socket_mutator* grpc_socket_mutator_ref(grpc_socket_mutator* mutator);
|
61
57
|
void grpc_socket_mutator_unref(grpc_socket_mutator* mutator);
|
62
58
|
|
63
|
-
#ifdef __cplusplus
|
64
|
-
}
|
65
|
-
#endif
|
66
|
-
|
67
59
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_MUTATOR_H */
|
@@ -21,15 +21,7 @@
|
|
21
21
|
|
22
22
|
#include <stddef.h>
|
23
23
|
|
24
|
-
#ifdef __cplusplus
|
25
|
-
extern "C" {
|
26
|
-
#endif
|
27
|
-
|
28
24
|
/* A wrapper for inet_ntop on POSIX systems and InetNtop on Windows systems */
|
29
25
|
const char* grpc_inet_ntop(int af, const void* src, char* dst, size_t size);
|
30
26
|
|
31
|
-
#ifdef __cplusplus
|
32
|
-
}
|
33
|
-
#endif
|
34
|
-
|
35
27
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_H */
|
@@ -40,8 +40,8 @@
|
|
40
40
|
#include <grpc/support/log.h>
|
41
41
|
#include <grpc/support/port_platform.h>
|
42
42
|
#include <grpc/support/sync.h>
|
43
|
+
#include "src/core/lib/gpr/string.h"
|
43
44
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
44
|
-
#include "src/core/lib/support/string.h"
|
45
45
|
|
46
46
|
/* set a socket to non blocking mode */
|
47
47
|
grpc_error* grpc_set_socket_nonblocking(int fd, int non_blocking) {
|
@@ -29,10 +29,6 @@
|
|
29
29
|
#include "src/core/lib/iomgr/socket_factory_posix.h"
|
30
30
|
#include "src/core/lib/iomgr/socket_mutator.h"
|
31
31
|
|
32
|
-
#ifdef __cplusplus
|
33
|
-
extern "C" {
|
34
|
-
#endif
|
35
|
-
|
36
32
|
/* a wrapper for accept or accept4 */
|
37
33
|
int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
|
38
34
|
int cloexec);
|
@@ -133,8 +129,4 @@ grpc_error* grpc_create_dualstack_socket_using_factory(
|
|
133
129
|
grpc_socket_factory* factory, const grpc_resolved_address* addr, int type,
|
134
130
|
int protocol, grpc_dualstack_mode* dsmode, int* newfd);
|
135
131
|
|
136
|
-
#ifdef __cplusplus
|
137
|
-
}
|
138
|
-
#endif
|
139
|
-
|
140
132
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_UTILS_POSIX_H */
|
@@ -109,37 +109,34 @@ void grpc_winsocket_destroy(grpc_winsocket* winsocket) {
|
|
109
109
|
-) The IOCP already completed in the background, and we need to call
|
110
110
|
the callback now.
|
111
111
|
-) The IOCP hasn't completed yet, and we're queuing it for later. */
|
112
|
-
static void socket_notify_on_iocp(
|
113
|
-
grpc_winsocket* socket, grpc_closure* closure,
|
112
|
+
static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure,
|
114
113
|
grpc_winsocket_callback_info* info) {
|
115
114
|
GPR_ASSERT(info->closure == NULL);
|
116
115
|
gpr_mu_lock(&socket->state_mu);
|
117
116
|
if (info->has_pending_iocp) {
|
118
117
|
info->has_pending_iocp = 0;
|
119
|
-
GRPC_CLOSURE_SCHED(
|
118
|
+
GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
|
120
119
|
} else {
|
121
120
|
info->closure = closure;
|
122
121
|
}
|
123
122
|
gpr_mu_unlock(&socket->state_mu);
|
124
123
|
}
|
125
124
|
|
126
|
-
void grpc_socket_notify_on_write(
|
127
|
-
grpc_winsocket* socket,
|
125
|
+
void grpc_socket_notify_on_write(grpc_winsocket* socket,
|
128
126
|
grpc_closure* closure) {
|
129
|
-
socket_notify_on_iocp(
|
127
|
+
socket_notify_on_iocp(socket, closure, &socket->write_info);
|
130
128
|
}
|
131
129
|
|
132
|
-
void grpc_socket_notify_on_read(
|
133
|
-
|
134
|
-
socket_notify_on_iocp(exec_ctx, socket, closure, &socket->read_info);
|
130
|
+
void grpc_socket_notify_on_read(grpc_winsocket* socket, grpc_closure* closure) {
|
131
|
+
socket_notify_on_iocp(socket, closure, &socket->read_info);
|
135
132
|
}
|
136
133
|
|
137
|
-
void grpc_socket_become_ready(
|
134
|
+
void grpc_socket_become_ready(grpc_winsocket* socket,
|
138
135
|
grpc_winsocket_callback_info* info) {
|
139
136
|
GPR_ASSERT(!info->has_pending_iocp);
|
140
137
|
gpr_mu_lock(&socket->state_mu);
|
141
138
|
if (info->closure) {
|
142
|
-
GRPC_CLOSURE_SCHED(
|
139
|
+
GRPC_CLOSURE_SCHED(info->closure, GRPC_ERROR_NONE);
|
143
140
|
info->closure = NULL;
|
144
141
|
} else {
|
145
142
|
info->has_pending_iocp = 1;
|
@@ -31,10 +31,6 @@
|
|
31
31
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
32
32
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
33
33
|
|
34
|
-
#ifdef __cplusplus
|
35
|
-
extern "C" {
|
36
|
-
#endif
|
37
|
-
|
38
34
|
/* This holds the data for an outstanding read or write on a socket.
|
39
35
|
The mutex to protect the concurrent access to that data is the one
|
40
36
|
inside the winsocket wrapper. */
|
@@ -102,22 +98,15 @@ void grpc_winsocket_shutdown(grpc_winsocket* socket);
|
|
102
98
|
/* Destroy a socket. Should only be called if there's no pending operation. */
|
103
99
|
void grpc_winsocket_destroy(grpc_winsocket* socket);
|
104
100
|
|
105
|
-
void grpc_socket_notify_on_write(
|
106
|
-
grpc_winsocket* winsocket,
|
101
|
+
void grpc_socket_notify_on_write(grpc_winsocket* winsocket,
|
107
102
|
grpc_closure* closure);
|
108
103
|
|
109
|
-
void grpc_socket_notify_on_read(
|
110
|
-
grpc_winsocket* winsocket,
|
104
|
+
void grpc_socket_notify_on_read(grpc_winsocket* winsocket,
|
111
105
|
grpc_closure* closure);
|
112
106
|
|
113
|
-
void grpc_socket_become_ready(
|
114
|
-
grpc_winsocket* winsocket,
|
107
|
+
void grpc_socket_become_ready(grpc_winsocket* winsocket,
|
115
108
|
grpc_winsocket_callback_info* ci);
|
116
109
|
|
117
|
-
#ifdef __cplusplus
|
118
|
-
}
|
119
|
-
#endif
|
120
|
-
|
121
110
|
#endif
|
122
111
|
|
123
112
|
#endif /* GRPC_CORE_LIB_IOMGR_SOCKET_WINDOWS_H */
|
@@ -25,24 +25,15 @@
|
|
25
25
|
#include "src/core/lib/iomgr/pollset_set.h"
|
26
26
|
#include "src/core/lib/iomgr/resolve_address.h"
|
27
27
|
|
28
|
-
#ifdef __cplusplus
|
29
|
-
extern "C" {
|
30
|
-
#endif
|
31
|
-
|
32
28
|
/* Asynchronously connect to an address (specified as (addr, len)), and call
|
33
29
|
cb with arg and the completed connection when done (or call cb with arg and
|
34
30
|
NULL on failure).
|
35
31
|
interested_parties points to a set of pollsets that would be interested
|
36
32
|
in this connection being established (in order to continue their work) */
|
37
|
-
void grpc_tcp_client_connect(
|
38
|
-
grpc_endpoint** endpoint,
|
33
|
+
void grpc_tcp_client_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
|
39
34
|
grpc_pollset_set* interested_parties,
|
40
35
|
const grpc_channel_args* channel_args,
|
41
36
|
const grpc_resolved_address* addr,
|
42
37
|
grpc_millis deadline);
|
43
38
|
|
44
|
-
#ifdef __cplusplus
|
45
|
-
}
|
46
|
-
#endif
|
47
|
-
|
48
39
|
#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_H */
|
@@ -33,6 +33,7 @@
|
|
33
33
|
#include <grpc/support/time.h>
|
34
34
|
|
35
35
|
#include "src/core/lib/channel/channel_args.h"
|
36
|
+
#include "src/core/lib/gpr/string.h"
|
36
37
|
#include "src/core/lib/iomgr/ev_posix.h"
|
37
38
|
#include "src/core/lib/iomgr/iomgr_posix.h"
|
38
39
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
@@ -41,7 +42,6 @@
|
|
41
42
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
42
43
|
#include "src/core/lib/iomgr/timer.h"
|
43
44
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
44
|
-
#include "src/core/lib/support/string.h"
|
45
45
|
|
46
46
|
extern grpc_core::TraceFlag grpc_tcp_trace;
|
47
47
|
|
@@ -96,7 +96,7 @@ done:
|
|
96
96
|
return err;
|
97
97
|
}
|
98
98
|
|
99
|
-
static void tc_on_alarm(
|
99
|
+
static void tc_on_alarm(void* acp, grpc_error* error) {
|
100
100
|
int done;
|
101
101
|
async_connect* ac = (async_connect*)acp;
|
102
102
|
if (grpc_tcp_trace.enabled()) {
|
@@ -107,26 +107,24 @@ static void tc_on_alarm(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
|
|
107
107
|
gpr_mu_lock(&ac->mu);
|
108
108
|
if (ac->fd != nullptr) {
|
109
109
|
grpc_fd_shutdown(
|
110
|
-
|
111
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
|
110
|
+
ac->fd, GRPC_ERROR_CREATE_FROM_STATIC_STRING("connect() timed out"));
|
112
111
|
}
|
113
112
|
done = (--ac->refs == 0);
|
114
113
|
gpr_mu_unlock(&ac->mu);
|
115
114
|
if (done) {
|
116
115
|
gpr_mu_destroy(&ac->mu);
|
117
116
|
gpr_free(ac->addr_str);
|
118
|
-
grpc_channel_args_destroy(
|
117
|
+
grpc_channel_args_destroy(ac->channel_args);
|
119
118
|
gpr_free(ac);
|
120
119
|
}
|
121
120
|
}
|
122
121
|
|
123
122
|
grpc_endpoint* grpc_tcp_client_create_from_fd(
|
124
|
-
|
125
|
-
|
126
|
-
return grpc_tcp_create(exec_ctx, fd, channel_args, addr_str);
|
123
|
+
grpc_fd* fd, const grpc_channel_args* channel_args, const char* addr_str) {
|
124
|
+
return grpc_tcp_create(fd, channel_args, addr_str);
|
127
125
|
}
|
128
126
|
|
129
|
-
static void on_writable(
|
127
|
+
static void on_writable(void* acp, grpc_error* error) {
|
130
128
|
async_connect* ac = (async_connect*)acp;
|
131
129
|
int so_error = 0;
|
132
130
|
socklen_t so_error_size;
|
@@ -150,7 +148,7 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
|
|
150
148
|
ac->fd = nullptr;
|
151
149
|
gpr_mu_unlock(&ac->mu);
|
152
150
|
|
153
|
-
grpc_timer_cancel(
|
151
|
+
grpc_timer_cancel(&ac->alarm);
|
154
152
|
|
155
153
|
gpr_mu_lock(&ac->mu);
|
156
154
|
if (error != GRPC_ERROR_NONE) {
|
@@ -172,9 +170,8 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
|
|
172
170
|
|
173
171
|
switch (so_error) {
|
174
172
|
case 0:
|
175
|
-
grpc_pollset_set_del_fd(
|
176
|
-
*ep = grpc_tcp_client_create_from_fd(
|
177
|
-
ac->addr_str);
|
173
|
+
grpc_pollset_set_del_fd(ac->interested_parties, fd);
|
174
|
+
*ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args, ac->addr_str);
|
178
175
|
fd = nullptr;
|
179
176
|
break;
|
180
177
|
case ENOBUFS:
|
@@ -194,7 +191,7 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
|
|
194
191
|
don't do that! */
|
195
192
|
gpr_log(GPR_ERROR, "kernel out of buffers");
|
196
193
|
gpr_mu_unlock(&ac->mu);
|
197
|
-
grpc_fd_notify_on_write(
|
194
|
+
grpc_fd_notify_on_write(fd, &ac->write_closure);
|
198
195
|
return;
|
199
196
|
case ECONNREFUSED:
|
200
197
|
/* This error shouldn't happen for anything other than connect(). */
|
@@ -209,12 +206,15 @@ static void on_writable(grpc_exec_ctx* exec_ctx, void* acp, grpc_error* error) {
|
|
209
206
|
|
210
207
|
finish:
|
211
208
|
if (fd != nullptr) {
|
212
|
-
grpc_pollset_set_del_fd(
|
213
|
-
grpc_fd_orphan(
|
209
|
+
grpc_pollset_set_del_fd(ac->interested_parties, fd);
|
210
|
+
grpc_fd_orphan(fd, nullptr, nullptr, false /* already_closed */,
|
214
211
|
"tcp_client_orphan");
|
215
212
|
fd = nullptr;
|
216
213
|
}
|
217
214
|
done = (--ac->refs == 0);
|
215
|
+
// Create a copy of the data from "ac" to be accessed after the unlock, as
|
216
|
+
// "ac" and its contents may be deallocated by the time they are read.
|
217
|
+
const grpc_slice addr_str_slice = grpc_slice_from_copied_string(ac->addr_str);
|
218
218
|
gpr_mu_unlock(&ac->mu);
|
219
219
|
if (error != GRPC_ERROR_NONE) {
|
220
220
|
char* error_descr;
|
@@ -228,89 +228,93 @@ finish:
|
|
228
228
|
gpr_free(error_descr);
|
229
229
|
gpr_free(desc);
|
230
230
|
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
231
|
-
|
231
|
+
addr_str_slice /* takes ownership */);
|
232
|
+
} else {
|
233
|
+
grpc_slice_unref(addr_str_slice);
|
232
234
|
}
|
233
235
|
if (done) {
|
236
|
+
// This is safe even outside the lock, because "done", the sentinel, is
|
237
|
+
// populated *inside* the lock.
|
234
238
|
gpr_mu_destroy(&ac->mu);
|
235
239
|
gpr_free(ac->addr_str);
|
236
|
-
grpc_channel_args_destroy(
|
240
|
+
grpc_channel_args_destroy(ac->channel_args);
|
237
241
|
gpr_free(ac);
|
238
242
|
}
|
239
|
-
GRPC_CLOSURE_SCHED(
|
243
|
+
GRPC_CLOSURE_SCHED(closure, error);
|
240
244
|
}
|
241
245
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
const grpc_resolved_address* addr,
|
247
|
-
grpc_millis deadline) {
|
248
|
-
int fd;
|
246
|
+
grpc_error* grpc_tcp_client_prepare_fd(const grpc_channel_args* channel_args,
|
247
|
+
const grpc_resolved_address* addr,
|
248
|
+
grpc_resolved_address* mapped_addr,
|
249
|
+
grpc_fd** fdobj) {
|
249
250
|
grpc_dualstack_mode dsmode;
|
250
|
-
int
|
251
|
-
|
252
|
-
grpc_resolved_address addr6_v4mapped;
|
253
|
-
grpc_resolved_address addr4_copy;
|
254
|
-
grpc_fd* fdobj;
|
251
|
+
int fd;
|
252
|
+
grpc_error* error;
|
255
253
|
char* name;
|
256
254
|
char* addr_str;
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
addr = &addr6_v4mapped;
|
255
|
+
*fdobj = nullptr;
|
256
|
+
/* Use dualstack sockets where available. Set mapped to v6 or v4 mapped to
|
257
|
+
v6. */
|
258
|
+
if (!grpc_sockaddr_to_v4mapped(addr, mapped_addr)) {
|
259
|
+
/* addr is v4 mapped to v6 or v6. */
|
260
|
+
memcpy(mapped_addr, addr, sizeof(*mapped_addr));
|
264
261
|
}
|
265
|
-
|
266
|
-
|
262
|
+
error =
|
263
|
+
grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, &fd);
|
267
264
|
if (error != GRPC_ERROR_NONE) {
|
268
|
-
|
269
|
-
return;
|
265
|
+
return error;
|
270
266
|
}
|
271
267
|
if (dsmode == GRPC_DSMODE_IPV4) {
|
272
|
-
/*
|
273
|
-
|
274
|
-
|
268
|
+
/* Original addr is either v4 or v4 mapped to v6. Set mapped_addr to v4. */
|
269
|
+
if (!grpc_sockaddr_is_v4mapped(addr, mapped_addr)) {
|
270
|
+
memcpy(mapped_addr, addr, sizeof(*mapped_addr));
|
271
|
+
}
|
275
272
|
}
|
276
|
-
if ((error = prepare_socket(
|
277
|
-
|
278
|
-
return;
|
273
|
+
if ((error = prepare_socket(mapped_addr, fd, channel_args)) !=
|
274
|
+
GRPC_ERROR_NONE) {
|
275
|
+
return error;
|
279
276
|
}
|
277
|
+
addr_str = grpc_sockaddr_to_uri(mapped_addr);
|
278
|
+
gpr_asprintf(&name, "tcp-client:%s", addr_str);
|
279
|
+
*fdobj = grpc_fd_create(fd, name);
|
280
|
+
gpr_free(name);
|
281
|
+
gpr_free(addr_str);
|
282
|
+
return GRPC_ERROR_NONE;
|
283
|
+
}
|
280
284
|
|
285
|
+
void grpc_tcp_client_create_from_prepared_fd(
|
286
|
+
grpc_pollset_set* interested_parties, grpc_closure* closure, grpc_fd* fdobj,
|
287
|
+
const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
|
288
|
+
grpc_millis deadline, grpc_endpoint** ep) {
|
289
|
+
const int fd = grpc_fd_wrapped_fd(fdobj);
|
290
|
+
int err;
|
291
|
+
async_connect* ac;
|
281
292
|
do {
|
282
293
|
GPR_ASSERT(addr->len < ~(socklen_t)0);
|
283
294
|
err = connect(fd, (const struct sockaddr*)addr->addr, (socklen_t)addr->len);
|
284
295
|
} while (err < 0 && errno == EINTR);
|
285
|
-
|
286
|
-
addr_str = grpc_sockaddr_to_uri(addr);
|
287
|
-
gpr_asprintf(&name, "tcp-client:%s", addr_str);
|
288
|
-
|
289
|
-
fdobj = grpc_fd_create(fd, name);
|
290
|
-
|
291
296
|
if (err >= 0) {
|
292
|
-
*
|
293
|
-
|
294
|
-
|
295
|
-
|
297
|
+
char* addr_str = grpc_sockaddr_to_uri(addr);
|
298
|
+
*ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_str);
|
299
|
+
gpr_free(addr_str);
|
300
|
+
GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
|
301
|
+
return;
|
296
302
|
}
|
297
|
-
|
298
303
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
299
|
-
grpc_fd_orphan(
|
300
|
-
|
301
|
-
GRPC_CLOSURE_SCHED(
|
302
|
-
|
304
|
+
grpc_fd_orphan(fdobj, nullptr, nullptr, false /* already_closed */,
|
305
|
+
"tcp_client_connect_error");
|
306
|
+
GRPC_CLOSURE_SCHED(closure, GRPC_OS_ERROR(errno, "connect"));
|
307
|
+
return;
|
303
308
|
}
|
304
309
|
|
305
|
-
grpc_pollset_set_add_fd(
|
310
|
+
grpc_pollset_set_add_fd(interested_parties, fdobj);
|
306
311
|
|
307
312
|
ac = (async_connect*)gpr_malloc(sizeof(async_connect));
|
308
313
|
ac->closure = closure;
|
309
314
|
ac->ep = ep;
|
310
315
|
ac->fd = fdobj;
|
311
316
|
ac->interested_parties = interested_parties;
|
312
|
-
ac->addr_str =
|
313
|
-
addr_str = nullptr;
|
317
|
+
ac->addr_str = grpc_sockaddr_to_uri(addr);
|
314
318
|
gpr_mu_init(&ac->mu);
|
315
319
|
ac->refs = 2;
|
316
320
|
GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
|
@@ -324,32 +328,44 @@ static void tcp_client_connect_impl(grpc_exec_ctx* exec_ctx,
|
|
324
328
|
|
325
329
|
gpr_mu_lock(&ac->mu);
|
326
330
|
GRPC_CLOSURE_INIT(&ac->on_alarm, tc_on_alarm, ac, grpc_schedule_on_exec_ctx);
|
327
|
-
grpc_timer_init(
|
328
|
-
grpc_fd_notify_on_write(
|
331
|
+
grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
|
332
|
+
grpc_fd_notify_on_write(ac->fd, &ac->write_closure);
|
329
333
|
gpr_mu_unlock(&ac->mu);
|
334
|
+
}
|
330
335
|
|
331
|
-
|
332
|
-
|
333
|
-
|
336
|
+
static void tcp_client_connect_impl(grpc_closure* closure, grpc_endpoint** ep,
|
337
|
+
grpc_pollset_set* interested_parties,
|
338
|
+
const grpc_channel_args* channel_args,
|
339
|
+
const grpc_resolved_address* addr,
|
340
|
+
grpc_millis deadline) {
|
341
|
+
grpc_resolved_address mapped_addr;
|
342
|
+
grpc_fd* fdobj = nullptr;
|
343
|
+
grpc_error* error;
|
344
|
+
*ep = nullptr;
|
345
|
+
if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr,
|
346
|
+
&fdobj)) != GRPC_ERROR_NONE) {
|
347
|
+
GRPC_CLOSURE_SCHED(closure, error);
|
348
|
+
return;
|
349
|
+
}
|
350
|
+
grpc_tcp_client_create_from_prepared_fd(interested_parties, closure, fdobj,
|
351
|
+
channel_args, &mapped_addr, deadline,
|
352
|
+
ep);
|
334
353
|
}
|
335
354
|
|
336
355
|
// overridden by api_fuzzer.c
|
337
|
-
extern "C" {
|
338
356
|
void (*grpc_tcp_client_connect_impl)(
|
339
|
-
|
357
|
+
grpc_closure* closure, grpc_endpoint** ep,
|
340
358
|
grpc_pollset_set* interested_parties, const grpc_channel_args* channel_args,
|
341
359
|
const grpc_resolved_address* addr,
|
342
360
|
grpc_millis deadline) = tcp_client_connect_impl;
|
343
|
-
}
|
344
361
|
|
345
|
-
void grpc_tcp_client_connect(
|
346
|
-
grpc_endpoint** ep,
|
362
|
+
void grpc_tcp_client_connect(grpc_closure* closure, grpc_endpoint** ep,
|
347
363
|
grpc_pollset_set* interested_parties,
|
348
364
|
const grpc_channel_args* channel_args,
|
349
365
|
const grpc_resolved_address* addr,
|
350
366
|
grpc_millis deadline) {
|
351
|
-
grpc_tcp_client_connect_impl(
|
352
|
-
|
367
|
+
grpc_tcp_client_connect_impl(closure, ep, interested_parties, channel_args,
|
368
|
+
addr, deadline);
|
353
369
|
}
|
354
370
|
|
355
371
|
#endif
|