grpc 1.10.0 → 1.11.0.pre2
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 +2098 -501
- data/include/grpc/byte_buffer.h +2 -0
- data/include/grpc/byte_buffer_reader.h +2 -0
- data/include/grpc/census.h +2 -0
- data/include/grpc/fork.h +2 -0
- data/include/grpc/grpc.h +10 -0
- data/include/grpc/grpc_cronet.h +2 -0
- data/include/grpc/grpc_posix.h +2 -1
- data/include/grpc/grpc_security.h +21 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/byte_buffer.h +2 -0
- data/include/grpc/impl/codegen/grpc_types.h +24 -0
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/include/grpc/impl/codegen/sync.h +1 -0
- data/include/grpc/impl/codegen/sync_custom.h +2 -0
- data/include/grpc/impl/codegen/sync_generic.h +2 -0
- data/include/grpc/impl/codegen/sync_posix.h +2 -0
- data/include/grpc/impl/codegen/sync_windows.h +2 -0
- data/include/grpc/slice.h +2 -0
- data/include/grpc/slice_buffer.h +2 -0
- data/include/grpc/status.h +2 -0
- data/include/grpc/support/alloc.h +2 -2
- data/include/grpc/support/atm.h +2 -0
- data/include/grpc/support/atm_gcc_atomic.h +2 -0
- data/include/grpc/support/atm_gcc_sync.h +2 -0
- data/include/grpc/support/atm_windows.h +2 -0
- data/include/grpc/support/log.h +1 -1
- data/include/grpc/support/sync.h +2 -0
- data/include/grpc/support/sync_custom.h +2 -0
- data/include/grpc/support/sync_generic.h +2 -0
- data/include/grpc/support/sync_posix.h +2 -0
- data/include/grpc/support/sync_windows.h +2 -0
- data/include/grpc/support/time.h +2 -0
- data/src/boringssl/err_data.c +444 -438
- data/src/core/ext/census/grpc_context.cc +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +13 -8
- data/src/core/ext/filters/client_channel/backup_poller.h +3 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +1988 -433
- data/src/core/ext/filters/client_channel/client_channel.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +2 -27
- data/src/core/ext/filters/client_channel/connector.cc +2 -0
- data/src/core/ext/filters/client_channel/connector.h +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +96 -78
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +9 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +70 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +2 -1
- data/src/core/ext/filters/client_channel/method_params.cc +178 -0
- data/src/core/ext/filters/client_channel/method_params.h +74 -0
- data/src/core/ext/filters/client_channel/parse_address.cc +17 -13
- data/src/core/ext/filters/client_channel/parse_address.h +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -0
- data/src/core/ext/filters/client_channel/resolver.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver.h +6 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +55 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +30 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +102 -120
- data/src/core/ext/filters/client_channel/retry_throttle.h +52 -25
- data/src/core/ext/filters/client_channel/subchannel.cc +14 -4
- data/src/core/ext/filters/client_channel/subchannel.h +10 -1
- data/src/core/ext/filters/client_channel/subchannel_index.cc +2 -0
- data/src/core/ext/filters/client_channel/subchannel_index.h +2 -0
- data/src/core/ext/filters/client_channel/uri_parser.cc +2 -1
- data/src/core/ext/filters/client_channel/uri_parser.h +2 -1
- data/src/core/ext/filters/deadline/deadline_filter.cc +2 -1
- data/src/core/ext/filters/deadline/deadline_filter.h +2 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +27 -25
- data/src/core/ext/filters/http/client/http_client_filter.h +2 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +156 -0
- data/src/core/ext/filters/http/client_authority_filter.h +34 -0
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -0
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +21 -22
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -8
- data/src/core/ext/filters/http/server/http_server_filter.h +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +2 -0
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +2 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -0
- data/src/core/ext/filters/max_age/max_age_filter.h +2 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +52 -49
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -0
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +2 -0
- data/src/core/ext/filters/workarounds/workaround_utils.cc +2 -0
- data/src/core/ext/filters/workarounds/workaround_utils.h +2 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +3 -1
- data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -0
- data/src/core/ext/transport/chttp2/client/authority.cc +42 -0
- data/src/core/ext/transport/chttp2/client/authority.h +36 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -0
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +10 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +2 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -1
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +2 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +152 -182
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +15 -19
- data/src/core/ext/transport/chttp2/transport/frame_data.h +7 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +60 -24
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/varint.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -6
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -23
- data/src/core/ext/transport/inproc/inproc_transport.h +2 -0
- data/src/core/lib/avl/avl.cc +2 -0
- data/src/core/lib/avl/avl.h +2 -0
- data/src/core/lib/backoff/backoff.cc +2 -0
- data/src/core/lib/backoff/backoff.h +2 -0
- data/src/core/lib/channel/channel_args.h +2 -0
- data/src/core/lib/channel/channel_stack.cc +3 -1
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder.cc +2 -0
- data/src/core/lib/channel/channel_stack_builder.h +2 -0
- data/src/core/lib/channel/channel_trace.cc +239 -0
- data/src/core/lib/channel/channel_trace.h +133 -0
- data/src/core/lib/channel/channel_trace_registry.cc +80 -0
- data/src/core/lib/channel/channel_trace_registry.h +43 -0
- data/src/core/lib/channel/connected_channel.cc +2 -0
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/handshaker.cc +2 -0
- data/src/core/lib/channel/handshaker.h +2 -0
- data/src/core/lib/channel/handshaker_factory.cc +2 -0
- data/src/core/lib/channel/handshaker_factory.h +2 -1
- data/src/core/lib/channel/handshaker_registry.cc +2 -0
- data/src/core/lib/channel/handshaker_registry.h +2 -1
- data/src/core/lib/channel/status_util.cc +100 -0
- data/src/core/lib/channel/status_util.h +58 -0
- data/src/core/lib/compression/algorithm_metadata.h +2 -0
- data/src/core/lib/compression/compression.cc +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -0
- data/src/core/lib/compression/compression_internal.h +2 -0
- data/src/core/lib/compression/message_compress.cc +2 -0
- data/src/core/lib/compression/message_compress.h +2 -0
- data/src/core/lib/compression/stream_compression.cc +2 -0
- data/src/core/lib/compression/stream_compression.h +2 -0
- data/src/core/lib/compression/stream_compression_gzip.cc +2 -0
- data/src/core/lib/compression/stream_compression_gzip.h +2 -0
- data/src/core/lib/compression/stream_compression_identity.cc +2 -1
- data/src/core/lib/compression/stream_compression_identity.h +2 -0
- data/src/core/lib/debug/stats.cc +2 -0
- data/src/core/lib/debug/stats.h +2 -0
- data/src/core/lib/debug/stats_data.cc +3 -1
- data/src/core/lib/debug/stats_data.h +2 -0
- data/src/core/lib/debug/trace.cc +2 -0
- data/src/core/lib/debug/trace.h +2 -1
- data/src/core/lib/gpr/alloc.cc +2 -1
- data/src/core/lib/gpr/arena.cc +47 -0
- data/src/core/lib/gpr/arena.h +2 -0
- data/src/core/lib/gpr/atm.cc +2 -0
- data/src/core/lib/gpr/cpu_linux.cc +5 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/env.h +2 -0
- data/src/core/lib/gpr/fork.cc +2 -0
- data/src/core/lib/gpr/host_port.cc +2 -0
- data/src/core/lib/gpr/log.cc +2 -1
- data/src/core/lib/gpr/log_linux.cc +1 -0
- data/src/core/lib/gpr/mpscq.cc +2 -0
- data/src/core/lib/gpr/mpscq.h +2 -0
- data/src/core/lib/gpr/murmur_hash.cc +2 -0
- data/src/core/lib/gpr/spinlock.h +2 -0
- data/src/core/lib/gpr/string.cc +2 -1
- data/src/core/lib/gpr/string.h +2 -2
- data/src/core/lib/gpr/sync.cc +2 -0
- data/src/core/lib/gpr/time.cc +2 -0
- data/src/core/lib/gpr/time_posix.cc +1 -0
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +2 -0
- data/src/core/lib/gpr/tls_gcc.h +2 -0
- data/src/core/lib/gpr/tls_msvc.h +2 -0
- data/src/core/lib/gpr/tls_pthread.h +2 -0
- data/src/core/lib/gpr/tmpfile.h +2 -0
- data/src/core/lib/gprpp/atomic_with_atm.h +2 -0
- data/src/core/lib/gprpp/atomic_with_std.h +2 -0
- data/src/core/lib/gprpp/inlined_vector.h +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +3 -1
- data/src/core/lib/gprpp/memory.h +5 -3
- data/src/core/lib/gprpp/orphanable.h +3 -0
- data/src/core/lib/gprpp/ref_counted.h +4 -0
- data/src/core/lib/gprpp/ref_counted_ptr.h +3 -0
- data/src/core/lib/gprpp/thd.h +135 -0
- data/src/core/lib/gprpp/thd_posix.cc +209 -0
- data/src/core/lib/gprpp/thd_windows.cc +162 -0
- data/src/core/lib/http/format_request.cc +2 -0
- data/src/core/lib/http/format_request.h +2 -0
- data/src/core/lib/http/httpcli.cc +2 -0
- data/src/core/lib/http/httpcli.h +2 -0
- data/src/core/lib/http/httpcli_security_connector.cc +16 -7
- data/src/core/lib/http/parser.cc +2 -0
- data/src/core/lib/http/parser.h +2 -1
- data/src/core/lib/iomgr/call_combiner.cc +2 -0
- data/src/core/lib/iomgr/call_combiner.h +2 -1
- data/src/core/lib/iomgr/combiner.cc +2 -0
- data/src/core/lib/iomgr/combiner.h +2 -0
- data/src/core/lib/iomgr/endpoint.cc +4 -0
- data/src/core/lib/iomgr/endpoint.h +2 -0
- data/src/core/lib/iomgr/endpoint_pair.h +2 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -0
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +2 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +7 -4
- data/src/core/lib/iomgr/error.h +2 -0
- data/src/core/lib/iomgr/error_internal.h +2 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +2 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.h +2 -0
- data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -18
- data/src/core/lib/iomgr/ev_epollex_linux.h +2 -0
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +2 -0
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -0
- data/src/core/lib/iomgr/ev_poll_posix.cc +61 -31
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -0
- data/src/core/lib/iomgr/ev_posix.cc +35 -19
- data/src/core/lib/iomgr/ev_posix.h +2 -0
- data/src/core/lib/iomgr/ev_windows.cc +2 -0
- data/src/core/lib/iomgr/exec_ctx.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +21 -9
- data/src/core/lib/iomgr/executor.cc +13 -11
- data/src/core/lib/iomgr/executor.h +2 -0
- data/src/core/lib/iomgr/fork_posix.cc +4 -2
- data/src/core/lib/iomgr/fork_windows.cc +2 -0
- data/src/core/lib/iomgr/gethostname_fallback.cc +2 -0
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +2 -0
- data/src/core/lib/iomgr/gethostname_sysconf.cc +2 -0
- data/src/core/lib/iomgr/iocp_windows.cc +3 -1
- data/src/core/lib/iomgr/iocp_windows.h +3 -0
- data/src/core/lib/iomgr/iomgr.cc +2 -1
- data/src/core/lib/iomgr/iomgr.h +2 -0
- data/src/core/lib/iomgr/iomgr_custom.cc +63 -0
- data/src/core/lib/iomgr/iomgr_custom.h +47 -0
- data/src/core/lib/iomgr/iomgr_internal.cc +43 -0
- data/src/core/lib/iomgr/iomgr_internal.h +14 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +30 -3
- data/src/core/lib/iomgr/iomgr_posix.h +2 -0
- data/src/core/lib/iomgr/iomgr_uv.cc +17 -20
- data/src/core/lib/iomgr/iomgr_windows.cc +29 -3
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +2 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.h +2 -0
- data/src/core/lib/iomgr/load_file.cc +2 -0
- data/src/core/lib/iomgr/load_file.h +2 -0
- data/src/core/lib/iomgr/lockfree_event.cc +2 -0
- data/src/core/lib/iomgr/lockfree_event.h +14 -1
- data/src/core/lib/iomgr/nameser.h +2 -0
- data/src/core/lib/iomgr/network_status_tracker.cc +3 -1
- data/src/core/lib/iomgr/network_status_tracker.h +2 -0
- data/src/core/lib/iomgr/polling_entity.cc +2 -0
- data/src/core/lib/iomgr/polling_entity.h +2 -0
- data/src/core/lib/iomgr/pollset.cc +56 -0
- data/src/core/lib/iomgr/pollset.h +19 -0
- data/src/core/lib/iomgr/pollset_custom.cc +106 -0
- data/src/core/lib/iomgr/{timer_generic.h → pollset_custom.h} +15 -17
- data/src/core/lib/iomgr/pollset_set.cc +55 -0
- data/src/core/lib/iomgr/pollset_set.h +13 -0
- data/src/core/lib/iomgr/pollset_set_custom.cc +48 -0
- data/src/core/lib/iomgr/{pollset_uv.h → pollset_set_custom.h} +6 -7
- data/src/core/lib/iomgr/pollset_set_windows.cc +17 -10
- data/src/core/lib/iomgr/pollset_set_windows.h +2 -0
- data/src/core/lib/iomgr/pollset_uv.cc +42 -105
- data/src/core/lib/iomgr/pollset_windows.cc +20 -12
- data/src/core/lib/iomgr/pollset_windows.h +2 -0
- data/src/core/lib/iomgr/port.h +10 -19
- data/src/core/lib/iomgr/resolve_address.cc +50 -0
- data/src/core/lib/iomgr/resolve_address.h +39 -10
- data/src/core/lib/iomgr/resolve_address_custom.cc +187 -0
- data/src/core/lib/iomgr/resolve_address_custom.h +43 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -22
- data/src/core/lib/iomgr/resolve_address_windows.cc +10 -22
- data/src/core/lib/iomgr/resource_quota.cc +2 -0
- data/src/core/lib/iomgr/resource_quota.h +3 -5
- data/src/core/lib/iomgr/sockaddr.h +3 -11
- data/src/core/lib/iomgr/sockaddr_custom.h +54 -0
- data/src/core/lib/iomgr/sockaddr_posix.h +26 -0
- data/src/core/lib/iomgr/sockaddr_utils.cc +91 -71
- data/src/core/lib/iomgr/sockaddr_utils.h +4 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +21 -0
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -0
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -0
- data/src/core/lib/iomgr/socket_mutator.cc +2 -0
- data/src/core/lib/iomgr/socket_mutator.h +2 -0
- data/src/core/lib/iomgr/socket_utils.h +11 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +15 -6
- data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_utils_posix.h +2 -0
- data/src/core/lib/iomgr/socket_utils_uv.cc +13 -2
- data/src/core/lib/iomgr/socket_utils_windows.cc +10 -0
- data/src/core/lib/iomgr/socket_windows.cc +2 -0
- data/src/core/lib/iomgr/socket_windows.h +2 -1
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +2 -0
- data/src/core/lib/iomgr/tcp_client.cc +36 -0
- data/src/core/lib/iomgr/tcp_client.h +13 -0
- data/src/core/lib/iomgr/tcp_client_custom.cc +151 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +11 -24
- data/src/core/lib/iomgr/tcp_client_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_client_windows.cc +10 -23
- data/src/core/lib/iomgr/tcp_custom.cc +365 -0
- data/src/core/lib/iomgr/tcp_custom.h +81 -0
- data/src/core/lib/iomgr/tcp_posix.cc +3 -1
- data/src/core/lib/iomgr/tcp_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_server.cc +73 -0
- data/src/core/lib/iomgr/tcp_server.h +24 -0
- data/src/core/lib/iomgr/tcp_server_custom.cc +472 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +41 -23
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +2 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +43 -21
- data/src/core/lib/iomgr/tcp_uv.cc +308 -314
- data/src/core/lib/iomgr/tcp_windows.cc +3 -1
- data/src/core/lib/iomgr/tcp_windows.h +2 -0
- data/src/core/lib/iomgr/time_averaged_stats.cc +2 -0
- data/src/core/lib/iomgr/timer.cc +45 -0
- data/src/core/lib/iomgr/timer.h +36 -15
- data/src/core/lib/iomgr/timer_custom.cc +93 -0
- data/src/core/lib/iomgr/timer_custom.h +43 -0
- data/src/core/lib/iomgr/timer_generic.cc +12 -10
- data/src/core/lib/iomgr/timer_heap.cc +2 -4
- data/src/core/lib/iomgr/timer_heap.h +2 -0
- data/src/core/lib/iomgr/timer_manager.cc +12 -20
- data/src/core/lib/iomgr/timer_manager.h +2 -0
- data/src/core/lib/iomgr/timer_uv.cc +15 -49
- data/src/core/lib/iomgr/udp_server.cc +271 -230
- data/src/core/lib/iomgr/udp_server.h +44 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +10 -7
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -0
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +3 -1
- data/src/core/lib/iomgr/wakeup_fd_cv.h +2 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +2 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +2 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.h +2 -0
- data/src/core/lib/json/json.cc +38 -0
- data/src/core/lib/json/json.h +22 -1
- data/src/core/lib/json/json_reader.cc +2 -2
- data/src/core/lib/json/json_reader.h +1 -0
- data/src/core/lib/json/json_string.cc +2 -0
- data/src/core/lib/json/json_writer.cc +2 -2
- data/src/core/lib/json/json_writer.h +2 -0
- data/src/core/lib/profiling/basic_timers.cc +11 -9
- data/src/core/lib/profiling/timers.h +6 -3
- data/src/core/lib/security/context/security_context.cc +2 -0
- data/src/core/lib/security/context/security_context.h +2 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +119 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.h +102 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +72 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment.h +57 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +67 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +33 -0
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +114 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +126 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +46 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +112 -0
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +58 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +2 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -0
- data/src/core/lib/security/credentials/credentials.cc +2 -0
- data/src/core/lib/security/credentials/credentials.h +2 -0
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +5 -0
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +2 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +2 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -0
- data/src/core/lib/security/security_connector/alts_security_connector.cc +287 -0
- data/src/core/lib/security/security_connector/alts_security_connector.h +69 -0
- data/src/core/lib/security/security_connector/security_connector.cc +174 -74
- data/src/core/lib/security/security_connector/security_connector.h +41 -7
- data/src/core/lib/security/transport/auth_filters.h +2 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +14 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -0
- data/src/core/lib/security/transport/secure_endpoint.h +2 -0
- data/src/core/lib/security/transport/security_handshaker.cc +2 -0
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
- data/src/core/lib/security/transport/target_authority_table.cc +75 -0
- data/src/core/lib/security/transport/{lb_targets_info.h → target_authority_table.h} +16 -8
- data/src/core/lib/security/transport/tsi_error.cc +2 -0
- data/src/core/lib/security/transport/tsi_error.h +2 -0
- data/src/core/lib/security/util/json_util.cc +2 -0
- data/src/core/lib/security/util/json_util.h +2 -0
- data/src/core/lib/slice/b64.cc +2 -0
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +2 -0
- data/src/core/lib/slice/percent_encoding.h +2 -0
- data/src/core/lib/slice/slice.cc +2 -0
- data/src/core/lib/slice/slice_buffer.cc +3 -1
- data/src/core/lib/slice/slice_hash_table.h +178 -45
- data/src/core/lib/slice/slice_intern.cc +2 -0
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/slice/slice_string_helpers.cc +2 -0
- data/src/core/lib/slice/slice_string_helpers.h +2 -1
- data/src/core/lib/slice/slice_weak_hash_table.h +105 -0
- data/src/core/lib/surface/api_trace.cc +3 -1
- data/src/core/lib/surface/api_trace.h +2 -0
- data/src/core/lib/surface/byte_buffer.cc +3 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +3 -0
- data/src/core/lib/surface/call.cc +46 -80
- data/src/core/lib/surface/call.h +2 -0
- data/src/core/lib/surface/call_details.cc +2 -0
- data/src/core/lib/surface/call_log_batch.cc +2 -0
- data/src/core/lib/surface/call_test_only.h +2 -0
- data/src/core/lib/surface/channel.cc +72 -41
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_init.cc +2 -0
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +2 -0
- data/src/core/lib/surface/channel_stack_type.cc +3 -2
- data/src/core/lib/surface/channel_stack_type.h +2 -0
- data/src/core/lib/surface/completion_queue.h +2 -0
- data/src/core/lib/surface/completion_queue_factory.cc +3 -1
- data/src/core/lib/surface/completion_queue_factory.h +2 -0
- data/src/core/lib/surface/event_string.cc +2 -0
- data/src/core/lib/surface/event_string.h +2 -0
- data/src/core/lib/surface/init.cc +5 -2
- data/src/core/lib/surface/init_secure.cc +5 -2
- data/src/core/lib/surface/lame_client.cc +7 -5
- data/src/core/lib/surface/lame_client.h +2 -0
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +2 -0
- data/src/core/lib/surface/server.h +2 -0
- data/src/core/lib/surface/validate_metadata.cc +2 -1
- data/src/core/lib/surface/validate_metadata.h +2 -0
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -0
- data/src/core/lib/transport/byte_stream.cc +94 -116
- data/src/core/lib/transport/byte_stream.h +111 -78
- data/src/core/lib/transport/connectivity_state.cc +2 -0
- data/src/core/lib/transport/connectivity_state.h +3 -1
- data/src/core/lib/transport/error_utils.cc +2 -0
- data/src/core/lib/transport/error_utils.h +2 -0
- data/src/core/lib/transport/metadata.cc +2 -0
- data/src/core/lib/transport/metadata.h +3 -1
- data/src/core/lib/transport/metadata_batch.cc +26 -0
- data/src/core/lib/transport/metadata_batch.h +12 -1
- data/src/core/lib/transport/pid_controller.cc +2 -0
- data/src/core/lib/transport/pid_controller.h +2 -0
- data/src/core/lib/transport/service_config.cc +21 -175
- data/src/core/lib/transport/service_config.h +223 -35
- data/src/core/lib/transport/static_metadata.cc +310 -294
- data/src/core/lib/transport/static_metadata.h +96 -82
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +3 -0
- data/src/core/lib/transport/status_metadata.cc +54 -0
- data/src/core/lib/{iomgr/timer_uv.h → transport/status_metadata.h} +10 -12
- data/src/core/lib/transport/timeout_encoding.cc +2 -1
- data/src/core/lib/transport/timeout_encoding.h +2 -0
- data/src/core/lib/transport/transport.cc +3 -1
- data/src/core/lib/transport/transport.h +33 -7
- data/src/core/lib/transport/transport_impl.h +2 -0
- data/src/core/lib/transport/transport_op_string.cc +10 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +687 -0
- data/src/core/tsi/alts/crypt/gsec.cc +189 -0
- data/src/core/tsi/alts/crypt/gsec.h +454 -0
- data/src/core/tsi/alts/frame_protector/alts_counter.cc +118 -0
- data/src/core/tsi/alts/frame_protector/alts_counter.h +98 -0
- data/src/core/tsi/alts/frame_protector/alts_crypter.cc +66 -0
- data/src/core/tsi/alts/frame_protector/alts_crypter.h +255 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +407 -0
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +55 -0
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +114 -0
- data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +114 -0
- data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +105 -0
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +103 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +218 -0
- data/src/core/tsi/alts/frame_protector/frame_handler.h +236 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +316 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +137 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +520 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +323 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +143 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +149 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_event.cc +73 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_event.h +93 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +483 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +83 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +52 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +58 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +52 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.c +48 -0
- data/src/core/tsi/alts/handshaker/altscontext.pb.h +64 -0
- data/src/core/tsi/alts/handshaker/handshaker.pb.c +123 -0
- data/src/core/tsi/alts/handshaker/handshaker.pb.h +255 -0
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +50 -0
- data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +78 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +196 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +163 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +180 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +52 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +144 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +49 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +91 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +174 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +100 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +476 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +199 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +296 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +52 -0
- data/src/core/tsi/alts_transport_security.cc +3 -1
- data/src/core/tsi/alts_transport_security.h +4 -2
- data/src/core/tsi/fake_transport_security.cc +2 -1
- data/src/core/tsi/fake_transport_security.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +73 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +58 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +211 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +93 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +76 -0
- data/src/core/tsi/ssl_transport_security.cc +266 -62
- data/src/core/tsi/ssl_transport_security.h +128 -6
- data/src/core/tsi/ssl_types.h +2 -0
- data/src/core/tsi/transport_security.cc +2 -0
- data/src/core/tsi/transport_security.h +2 -0
- data/src/core/tsi/transport_security_adapter.cc +2 -0
- data/src/core/tsi/transport_security_adapter.h +2 -0
- data/src/core/tsi/transport_security_grpc.cc +2 -0
- data/src/core/tsi/transport_security_grpc.h +2 -0
- data/src/core/tsi/transport_security_interface.h +2 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -2
- data/src/ruby/ext/grpc/rb_call.c +1 -13
- data/src/ruby/ext/grpc/rb_channel.c +6 -6
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -0
- data/src/ruby/lib/grpc/core/time_consts.rb +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +19 -8
- data/src/ruby/lib/grpc/generic/client_stub.rb +6 -10
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +133 -0
- data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +54 -0
- data/src/ruby/spec/pb/package_with_underscore/data.proto +23 -0
- data/src/ruby/spec/pb/package_with_underscore/service.proto +23 -0
- data/third_party/address_sorting/address_sorting.c +369 -0
- data/third_party/address_sorting/address_sorting_internal.h +70 -0
- data/third_party/address_sorting/address_sorting_posix.c +97 -0
- data/third_party/address_sorting/address_sorting_windows.c +55 -0
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +110 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +20 -9
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +19 -8
- data/third_party/boringssl/crypto/asn1/a_object.c +0 -128
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +2 -4
- data/third_party/boringssl/crypto/asn1/tasn_new.c +3 -2
- data/third_party/boringssl/crypto/bn_extra/bn_asn1.c +0 -16
- data/third_party/boringssl/crypto/buf/buf.c +14 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +93 -0
- data/third_party/boringssl/crypto/conf/conf.c +2 -2
- data/third_party/boringssl/crypto/cpu-intel.c +17 -17
- data/third_party/boringssl/crypto/crypto.c +16 -4
- data/third_party/boringssl/crypto/curve25519/spake25519.c +11 -11
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +9 -21
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +2 -2
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -8
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +2 -23
- data/third_party/boringssl/crypto/ex_data.c +0 -1
- data/third_party/boringssl/crypto/fipsmodule/bn/add.c +7 -11
- data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +19 -16
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +15 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +53 -46
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +242 -85
- data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +42 -47
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +176 -34
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +118 -65
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +94 -61
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +79 -63
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +26 -28
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +250 -149
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -27
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +54 -20
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +7 -41
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +6 -40
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +3 -64
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +27 -9
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +203 -205
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +14 -15
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +12 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +4 -3
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +25 -36
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +10 -0
- data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -4
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +9 -19
- data/third_party/boringssl/crypto/lhash/lhash.c +19 -0
- data/third_party/boringssl/crypto/obj/obj.c +29 -69
- data/third_party/boringssl/crypto/pem/pem_lib.c +2 -2
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +4 -55
- data/third_party/boringssl/crypto/rsa_extra/rsa_asn1.c +3 -22
- data/third_party/boringssl/crypto/x509/by_dir.c +1 -3
- data/third_party/boringssl/crypto/x509/by_file.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_obj.c +1 -3
- data/third_party/boringssl/crypto/x509/x509_txt.c +0 -6
- data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -1
- data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -1
- data/third_party/boringssl/crypto/x509/x_algor.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +3 -4
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +1 -2
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +15 -7
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +41 -2
- data/third_party/boringssl/include/openssl/asn1.h +0 -1
- data/third_party/boringssl/include/openssl/base.h +1 -1
- data/third_party/boringssl/include/openssl/bio.h +5 -2
- data/third_party/boringssl/include/openssl/bn.h +2 -17
- data/third_party/boringssl/include/openssl/buf.h +4 -0
- data/third_party/boringssl/include/openssl/bytestring.h +11 -0
- data/third_party/boringssl/include/openssl/chacha.h +5 -1
- data/third_party/boringssl/include/openssl/cipher.h +10 -0
- data/third_party/boringssl/include/openssl/conf.h +4 -8
- data/third_party/boringssl/include/openssl/dsa.h +2 -18
- data/third_party/boringssl/include/openssl/ec.h +5 -5
- data/third_party/boringssl/include/openssl/ecdsa.h +10 -28
- data/third_party/boringssl/include/openssl/evp.h +0 -4
- data/third_party/boringssl/include/openssl/lhash.h +1 -18
- data/third_party/boringssl/include/openssl/obj.h +1 -0
- data/third_party/boringssl/include/openssl/rsa.h +3 -4
- data/third_party/boringssl/include/openssl/ssl.h +35 -54
- data/third_party/boringssl/include/openssl/ssl3.h +2 -0
- data/third_party/boringssl/include/openssl/stack.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +1 -16
- data/third_party/boringssl/include/openssl/x509.h +3 -2
- data/third_party/boringssl/include/openssl/x509_vfy.h +0 -2
- data/third_party/boringssl/include/openssl/x509v3.h +1 -0
- data/third_party/boringssl/ssl/custom_extensions.cc +1 -1
- data/third_party/boringssl/ssl/d1_both.cc +120 -129
- data/third_party/boringssl/ssl/d1_lib.cc +23 -21
- data/third_party/boringssl/ssl/d1_pkt.cc +39 -143
- data/third_party/boringssl/ssl/dtls_method.cc +16 -23
- data/third_party/boringssl/ssl/dtls_record.cc +11 -4
- data/third_party/boringssl/ssl/handshake.cc +109 -40
- data/third_party/boringssl/ssl/handshake_client.cc +104 -96
- data/third_party/boringssl/ssl/handshake_server.cc +62 -72
- data/third_party/boringssl/ssl/internal.h +397 -318
- data/third_party/boringssl/ssl/s3_both.cc +173 -191
- data/third_party/boringssl/ssl/s3_lib.cc +26 -34
- data/third_party/boringssl/ssl/s3_pkt.cc +105 -247
- data/third_party/boringssl/ssl/ssl_asn1.cc +22 -22
- data/third_party/boringssl/ssl/ssl_buffer.cc +98 -108
- data/third_party/boringssl/ssl/ssl_cert.cc +12 -1
- data/third_party/boringssl/ssl/ssl_cipher.cc +23 -28
- data/third_party/boringssl/ssl/ssl_key_share.cc +11 -6
- data/third_party/boringssl/ssl/ssl_lib.cc +190 -113
- data/third_party/boringssl/ssl/ssl_privkey.cc +76 -106
- data/third_party/boringssl/ssl/ssl_session.cc +3 -3
- data/third_party/boringssl/ssl/ssl_stat.cc +3 -3
- data/third_party/boringssl/ssl/ssl_transcript.cc +38 -22
- data/third_party/boringssl/ssl/ssl_versions.cc +64 -31
- data/third_party/boringssl/ssl/t1_enc.cc +137 -154
- data/third_party/boringssl/ssl/t1_lib.cc +463 -478
- data/third_party/boringssl/ssl/tls13_both.cc +57 -58
- data/third_party/boringssl/ssl/tls13_client.cc +256 -121
- data/third_party/boringssl/ssl/tls13_enc.cc +187 -72
- data/third_party/boringssl/ssl/tls13_server.cc +187 -86
- data/third_party/boringssl/ssl/tls_method.cc +20 -30
- data/third_party/boringssl/ssl/tls_record.cc +77 -40
- data/third_party/boringssl/third_party/fiat/curve25519.c +5062 -0
- data/third_party/boringssl/{crypto/curve25519 → third_party/fiat}/internal.h +40 -27
- data/third_party/nanopb/pb.h +1 -1
- metadata +147 -45
- data/src/core/lib/gpr/thd.cc +0 -49
- data/src/core/lib/gpr/thd.h +0 -71
- data/src/core/lib/gpr/thd_posix.cc +0 -154
- data/src/core/lib/gpr/thd_windows.cc +0 -107
- data/src/core/lib/iomgr/iomgr_uv.h +0 -37
- data/src/core/lib/iomgr/pollset_set_uv.cc +0 -43
- data/src/core/lib/iomgr/resolve_address_uv.cc +0 -284
- data/src/core/lib/iomgr/tcp_client_uv.cc +0 -175
- data/src/core/lib/iomgr/tcp_server_uv.cc +0 -471
- data/src/core/lib/iomgr/tcp_uv.h +0 -51
- data/src/core/lib/security/transport/lb_targets_info.cc +0 -59
- data/src/core/lib/slice/slice_hash_table.cc +0 -145
- data/third_party/boringssl/crypto/curve25519/curve25519.c +0 -4938
@@ -16,6 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
19
21
|
#include "src/core/lib/iomgr/port.h"
|
20
22
|
|
21
23
|
#include <grpc/support/log.h>
|
@@ -57,7 +59,7 @@
|
|
57
59
|
//#define GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP 1
|
58
60
|
|
59
61
|
#define MAX_EPOLL_EVENTS 100
|
60
|
-
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL
|
62
|
+
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL 1
|
61
63
|
|
62
64
|
grpc_core::DebugOnlyTraceFlag grpc_trace_pollable_refcount(false,
|
63
65
|
"pollable_refcount");
|
@@ -196,7 +198,6 @@ struct grpc_pollset_worker {
|
|
196
198
|
|
197
199
|
struct grpc_pollset {
|
198
200
|
gpr_mu mu;
|
199
|
-
gpr_atm worker_count;
|
200
201
|
pollable* active_pollable;
|
201
202
|
bool kicked_without_poller;
|
202
203
|
grpc_closure* shutdown_closure;
|
@@ -684,7 +685,6 @@ static grpc_error* pollset_kick_all(grpc_pollset* pollset) {
|
|
684
685
|
|
685
686
|
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
686
687
|
gpr_mu_init(&pollset->mu);
|
687
|
-
gpr_atm_no_barrier_store(&pollset->worker_count, 0);
|
688
688
|
pollset->active_pollable = POLLABLE_REF(g_empty_pollable, "pollset");
|
689
689
|
pollset->kicked_without_poller = false;
|
690
690
|
pollset->shutdown_closure = nullptr;
|
@@ -758,20 +758,8 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
|
758
758
|
pollable* pollable_obj, bool drain) {
|
759
759
|
GPR_TIMER_SCOPE("pollable_process_events", 0);
|
760
760
|
static const char* err_desc = "pollset_process_events";
|
761
|
-
// Use a simple heuristic to determine how many fd events to process
|
762
|
-
// per loop iteration. (events/workers)
|
763
|
-
int handle_count = 1;
|
764
|
-
int worker_count = gpr_atm_no_barrier_load(&pollset->worker_count);
|
765
|
-
GPR_ASSERT(worker_count > 0);
|
766
|
-
handle_count =
|
767
|
-
(pollable_obj->event_count - pollable_obj->event_cursor) / worker_count;
|
768
|
-
if (handle_count == 0) {
|
769
|
-
handle_count = 1;
|
770
|
-
} else if (handle_count > MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) {
|
771
|
-
handle_count = MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL;
|
772
|
-
}
|
773
761
|
grpc_error* error = GRPC_ERROR_NONE;
|
774
|
-
for (int i = 0; (drain || i <
|
762
|
+
for (int i = 0; (drain || i < MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) &&
|
775
763
|
pollable_obj->event_cursor != pollable_obj->event_count;
|
776
764
|
i++) {
|
777
765
|
int n = pollable_obj->event_cursor++;
|
@@ -896,7 +884,6 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
896
884
|
GPR_TIMER_SCOPE("begin_worker", 0);
|
897
885
|
bool do_poll =
|
898
886
|
(pollset->shutdown_closure == nullptr && !pollset->already_shutdown);
|
899
|
-
gpr_atm_no_barrier_fetch_add(&pollset->worker_count, 1);
|
900
887
|
if (worker_hdl != nullptr) *worker_hdl = worker;
|
901
888
|
worker->initialized_cv = false;
|
902
889
|
worker->kicked = false;
|
@@ -977,7 +964,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
977
964
|
if (worker->initialized_cv) {
|
978
965
|
gpr_cv_destroy(&worker->cv);
|
979
966
|
}
|
980
|
-
gpr_atm_no_barrier_fetch_add(&pollset->worker_count, -1);
|
981
967
|
}
|
982
968
|
|
983
969
|
#ifndef NDEBUG
|
@@ -16,6 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
19
21
|
#include "src/core/lib/iomgr/port.h"
|
20
22
|
|
21
23
|
#ifdef GRPC_POSIX_SOCKET
|
@@ -36,9 +38,9 @@
|
|
36
38
|
|
37
39
|
#include "src/core/lib/debug/stats.h"
|
38
40
|
#include "src/core/lib/gpr/murmur_hash.h"
|
39
|
-
#include "src/core/lib/gpr/thd.h"
|
40
41
|
#include "src/core/lib/gpr/tls.h"
|
41
42
|
#include "src/core/lib/gpr/useful.h"
|
43
|
+
#include "src/core/lib/gprpp/thd.h"
|
42
44
|
#include "src/core/lib/iomgr/block_annotate.h"
|
43
45
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
44
46
|
#include "src/core/lib/iomgr/wakeup_fd_cv.h"
|
@@ -175,7 +177,6 @@ struct grpc_pollset {
|
|
175
177
|
int called_shutdown;
|
176
178
|
int kicked_without_pollers;
|
177
179
|
grpc_closure* shutdown_done;
|
178
|
-
grpc_closure_list idle_jobs;
|
179
180
|
int pollset_set_count;
|
180
181
|
/* all polled fds */
|
181
182
|
size_t fd_count;
|
@@ -253,8 +254,13 @@ typedef struct poll_result {
|
|
253
254
|
} poll_result;
|
254
255
|
|
255
256
|
typedef struct poll_args {
|
257
|
+
grpc_core::Thread poller_thd;
|
256
258
|
gpr_cv trigger;
|
257
259
|
int trigger_set;
|
260
|
+
bool harvestable;
|
261
|
+
gpr_cv harvest;
|
262
|
+
bool joinable;
|
263
|
+
gpr_cv join;
|
258
264
|
struct pollfd* fds;
|
259
265
|
nfds_t nfds;
|
260
266
|
poll_result* result;
|
@@ -264,15 +270,17 @@ typedef struct poll_args {
|
|
264
270
|
|
265
271
|
// This is a 2-tiered cache, we mantain a hash table
|
266
272
|
// of active poll calls, so we can wait on the result
|
267
|
-
// of that call. We also maintain
|
268
|
-
// poll threads.
|
273
|
+
// of that call. We also maintain freelists of inactive
|
274
|
+
// poll args and of dead poller threads.
|
269
275
|
typedef struct poll_hash_table {
|
270
276
|
poll_args* free_pollers;
|
271
277
|
poll_args** active_pollers;
|
278
|
+
poll_args* dead_pollers;
|
272
279
|
unsigned int size;
|
273
280
|
unsigned int count;
|
274
281
|
} poll_hash_table;
|
275
282
|
|
283
|
+
// TODO(kpayson64): Eliminate use of global non-POD variables
|
276
284
|
poll_hash_table poll_cache;
|
277
285
|
grpc_cv_fd_table g_cvfds;
|
278
286
|
|
@@ -803,7 +811,6 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
|
803
811
|
pollset->shutting_down = 0;
|
804
812
|
pollset->called_shutdown = 0;
|
805
813
|
pollset->kicked_without_pollers = 0;
|
806
|
-
pollset->idle_jobs.head = pollset->idle_jobs.tail = nullptr;
|
807
814
|
pollset->local_wakeup_cache = nullptr;
|
808
815
|
pollset->kicked_without_pollers = 0;
|
809
816
|
pollset->fd_count = 0;
|
@@ -814,7 +821,6 @@ static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
|
814
821
|
|
815
822
|
static void pollset_destroy(grpc_pollset* pollset) {
|
816
823
|
GPR_ASSERT(!pollset_has_workers(pollset));
|
817
|
-
GPR_ASSERT(pollset->idle_jobs.head == pollset->idle_jobs.tail);
|
818
824
|
while (pollset->local_wakeup_cache) {
|
819
825
|
grpc_cached_wakeup_fd* next = pollset->local_wakeup_cache->next;
|
820
826
|
grpc_wakeup_fd_destroy(&pollset->local_wakeup_cache->fd);
|
@@ -846,7 +852,6 @@ exit:
|
|
846
852
|
}
|
847
853
|
|
848
854
|
static void finish_shutdown(grpc_pollset* pollset) {
|
849
|
-
GPR_ASSERT(grpc_closure_list_empty(pollset->idle_jobs));
|
850
855
|
size_t i;
|
851
856
|
for (i = 0; i < pollset->fd_count; i++) {
|
852
857
|
GRPC_FD_UNREF(pollset->fds[i], "multipoller");
|
@@ -867,7 +872,6 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
867
872
|
grpc_pollset_worker** worker_hdl,
|
868
873
|
grpc_millis deadline) {
|
869
874
|
GPR_TIMER_SCOPE("pollset_work", 0);
|
870
|
-
|
871
875
|
grpc_pollset_worker worker;
|
872
876
|
if (worker_hdl) *worker_hdl = &worker;
|
873
877
|
grpc_error* error = GRPC_ERROR_NONE;
|
@@ -898,14 +902,6 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
898
902
|
}
|
899
903
|
}
|
900
904
|
worker.kicked_specifically = 0;
|
901
|
-
/* If there's work waiting for the pollset to be idle, and the
|
902
|
-
pollset is idle, then do that work */
|
903
|
-
if (!pollset_has_workers(pollset) &&
|
904
|
-
!grpc_closure_list_empty(pollset->idle_jobs)) {
|
905
|
-
GPR_TIMER_MARK("pollset_work.idle_jobs", 0);
|
906
|
-
GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs);
|
907
|
-
goto done;
|
908
|
-
}
|
909
905
|
/* If we're shutting down then we don't execute any extended work */
|
910
906
|
if (pollset->shutting_down) {
|
911
907
|
GPR_TIMER_MARK("pollset_work.shutting_down", 0);
|
@@ -918,7 +914,8 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
918
914
|
gpr_tls_set(&g_current_thread_poller, (intptr_t)pollset);
|
919
915
|
while (keep_polling) {
|
920
916
|
keep_polling = 0;
|
921
|
-
if (!pollset->kicked_without_pollers
|
917
|
+
if (!pollset->kicked_without_pollers ||
|
918
|
+
deadline <= grpc_core::ExecCtx::Get()->Now()) {
|
922
919
|
if (!added_worker) {
|
923
920
|
push_front_worker(pollset, &worker);
|
924
921
|
added_worker = 1;
|
@@ -1092,11 +1089,6 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
1092
1089
|
* pollset_work.
|
1093
1090
|
* TODO(dklempner): Can we refactor the shutdown logic to avoid this? */
|
1094
1091
|
gpr_mu_lock(&pollset->mu);
|
1095
|
-
} else if (!grpc_closure_list_empty(pollset->idle_jobs)) {
|
1096
|
-
GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs);
|
1097
|
-
gpr_mu_unlock(&pollset->mu);
|
1098
|
-
grpc_core::ExecCtx::Get()->Flush();
|
1099
|
-
gpr_mu_lock(&pollset->mu);
|
1100
1092
|
}
|
1101
1093
|
}
|
1102
1094
|
if (worker_hdl) *worker_hdl = nullptr;
|
@@ -1109,9 +1101,6 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
1109
1101
|
pollset->shutting_down = 1;
|
1110
1102
|
pollset->shutdown_done = closure;
|
1111
1103
|
pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
1112
|
-
if (!pollset_has_workers(pollset)) {
|
1113
|
-
GRPC_CLOSURE_LIST_SCHED(&pollset->idle_jobs);
|
1114
|
-
}
|
1115
1104
|
if (!pollset->called_shutdown && !pollset_has_observers(pollset)) {
|
1116
1105
|
pollset->called_shutdown = 1;
|
1117
1106
|
finish_shutdown(pollset);
|
@@ -1299,6 +1288,7 @@ static void pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
|
1299
1288
|
|
1300
1289
|
static void run_poll(void* args);
|
1301
1290
|
static void cache_poller_locked(poll_args* args);
|
1291
|
+
static void cache_harvest_locked();
|
1302
1292
|
|
1303
1293
|
static void cache_insert_locked(poll_args* args) {
|
1304
1294
|
uint32_t key = gpr_murmur_hash3(args->fds, args->nfds * sizeof(struct pollfd),
|
@@ -1361,6 +1351,10 @@ static poll_args* get_poller_locked(struct pollfd* fds, nfds_t count) {
|
|
1361
1351
|
poll_args* pargs =
|
1362
1352
|
static_cast<poll_args*>(gpr_malloc(sizeof(struct poll_args)));
|
1363
1353
|
gpr_cv_init(&pargs->trigger);
|
1354
|
+
gpr_cv_init(&pargs->harvest);
|
1355
|
+
gpr_cv_init(&pargs->join);
|
1356
|
+
pargs->harvestable = false;
|
1357
|
+
pargs->joinable = false;
|
1364
1358
|
pargs->fds = fds;
|
1365
1359
|
pargs->nfds = count;
|
1366
1360
|
pargs->next = nullptr;
|
@@ -1368,11 +1362,9 @@ static poll_args* get_poller_locked(struct pollfd* fds, nfds_t count) {
|
|
1368
1362
|
pargs->trigger_set = 0;
|
1369
1363
|
init_result(pargs);
|
1370
1364
|
cache_poller_locked(pargs);
|
1371
|
-
gpr_thd_id t_id;
|
1372
|
-
gpr_thd_options opt = gpr_thd_options_default();
|
1373
1365
|
gpr_ref(&g_cvfds.pollcount);
|
1374
|
-
|
1375
|
-
|
1366
|
+
pargs->poller_thd = grpc_core::Thread("grpc_poller", &run_poll, pargs);
|
1367
|
+
pargs->poller_thd.Start();
|
1376
1368
|
return pargs;
|
1377
1369
|
}
|
1378
1370
|
|
@@ -1437,7 +1429,33 @@ static void cache_destroy_locked(poll_args* args) {
|
|
1437
1429
|
poll_cache.free_pollers = args->next;
|
1438
1430
|
}
|
1439
1431
|
|
1440
|
-
|
1432
|
+
// Now move this args to the dead poller list for later join
|
1433
|
+
if (poll_cache.dead_pollers != nullptr) {
|
1434
|
+
poll_cache.dead_pollers->prev = args;
|
1435
|
+
}
|
1436
|
+
args->prev = nullptr;
|
1437
|
+
args->next = poll_cache.dead_pollers;
|
1438
|
+
poll_cache.dead_pollers = args;
|
1439
|
+
}
|
1440
|
+
|
1441
|
+
static void cache_harvest_locked() {
|
1442
|
+
while (poll_cache.dead_pollers) {
|
1443
|
+
poll_args* args = poll_cache.dead_pollers;
|
1444
|
+
poll_cache.dead_pollers = poll_cache.dead_pollers->next;
|
1445
|
+
// Keep the list consistent in case new dead pollers get added when we
|
1446
|
+
// release the lock below to wait on joining
|
1447
|
+
if (poll_cache.dead_pollers) {
|
1448
|
+
poll_cache.dead_pollers->prev = nullptr;
|
1449
|
+
}
|
1450
|
+
args->harvestable = true;
|
1451
|
+
gpr_cv_signal(&args->harvest);
|
1452
|
+
while (!args->joinable) {
|
1453
|
+
gpr_cv_wait(&args->join, &g_cvfds.mu,
|
1454
|
+
gpr_inf_future(GPR_CLOCK_MONOTONIC));
|
1455
|
+
}
|
1456
|
+
args->poller_thd.Join();
|
1457
|
+
gpr_free(args);
|
1458
|
+
}
|
1441
1459
|
}
|
1442
1460
|
|
1443
1461
|
static void decref_poll_result(poll_result* res) {
|
@@ -1469,6 +1487,7 @@ static void run_poll(void* args) {
|
|
1469
1487
|
poll_result* result = pargs->result;
|
1470
1488
|
int retval = g_cvfds.poll(result->fds, result->nfds, CV_POLL_PERIOD_MS);
|
1471
1489
|
gpr_mu_lock(&g_cvfds.mu);
|
1490
|
+
cache_harvest_locked();
|
1472
1491
|
if (retval != 0) {
|
1473
1492
|
result->completed = 1;
|
1474
1493
|
result->retval = retval;
|
@@ -1488,6 +1507,7 @@ static void run_poll(void* args) {
|
|
1488
1507
|
deadline = gpr_time_add(deadline, thread_grace);
|
1489
1508
|
pargs->trigger_set = 0;
|
1490
1509
|
gpr_cv_wait(&pargs->trigger, &g_cvfds.mu, deadline);
|
1510
|
+
cache_harvest_locked();
|
1491
1511
|
if (!pargs->trigger_set) {
|
1492
1512
|
cache_destroy_locked(pargs);
|
1493
1513
|
break;
|
@@ -1496,10 +1516,15 @@ static void run_poll(void* args) {
|
|
1496
1516
|
gpr_mu_unlock(&g_cvfds.mu);
|
1497
1517
|
}
|
1498
1518
|
|
1499
|
-
// We still have the lock here
|
1500
1519
|
if (gpr_unref(&g_cvfds.pollcount)) {
|
1501
1520
|
gpr_cv_signal(&g_cvfds.shutdown_cv);
|
1502
1521
|
}
|
1522
|
+
while (!pargs->harvestable) {
|
1523
|
+
gpr_cv_wait(&pargs->harvest, &g_cvfds.mu,
|
1524
|
+
gpr_inf_future(GPR_CLOCK_MONOTONIC));
|
1525
|
+
}
|
1526
|
+
pargs->joinable = true;
|
1527
|
+
gpr_cv_signal(&pargs->join);
|
1503
1528
|
gpr_mu_unlock(&g_cvfds.mu);
|
1504
1529
|
}
|
1505
1530
|
|
@@ -1512,6 +1537,7 @@ static int cvfd_poll(struct pollfd* fds, nfds_t nfds, int timeout) {
|
|
1512
1537
|
nfds_t nsockfds = 0;
|
1513
1538
|
poll_result* result = nullptr;
|
1514
1539
|
gpr_mu_lock(&g_cvfds.mu);
|
1540
|
+
cache_harvest_locked();
|
1515
1541
|
pollcv = static_cast<grpc_cv_node*>(gpr_malloc(sizeof(grpc_cv_node)));
|
1516
1542
|
pollcv->next = nullptr;
|
1517
1543
|
gpr_cv pollcv_cv;
|
@@ -1575,12 +1601,14 @@ static int cvfd_poll(struct pollfd* fds, nfds_t nfds, int timeout) {
|
|
1575
1601
|
pargs->trigger_set = 1;
|
1576
1602
|
gpr_cv_signal(&pargs->trigger);
|
1577
1603
|
gpr_cv_wait(&pollcv_cv, &g_cvfds.mu, deadline);
|
1604
|
+
cache_harvest_locked();
|
1578
1605
|
res = result->retval;
|
1579
1606
|
errno = result->err;
|
1580
1607
|
result->watchcount--;
|
1581
1608
|
remove_cvn(&result->watchers, pollcv);
|
1582
1609
|
} else if (!skip_poll) {
|
1583
1610
|
gpr_cv_wait(&pollcv_cv, &g_cvfds.mu, deadline);
|
1611
|
+
cache_harvest_locked();
|
1584
1612
|
}
|
1585
1613
|
|
1586
1614
|
idx = 0;
|
@@ -1637,6 +1665,7 @@ static void global_cv_fd_table_init() {
|
|
1637
1665
|
for (unsigned int i = 0; i < poll_cache.size; i++) {
|
1638
1666
|
poll_cache.active_pollers[i] = nullptr;
|
1639
1667
|
}
|
1668
|
+
poll_cache.dead_pollers = nullptr;
|
1640
1669
|
|
1641
1670
|
gpr_mu_unlock(&g_cvfds.mu);
|
1642
1671
|
}
|
@@ -1655,6 +1684,7 @@ static void global_cv_fd_table_shutdown() {
|
|
1655
1684
|
grpc_poll_function = g_cvfds.poll;
|
1656
1685
|
gpr_free(g_cvfds.cvfds);
|
1657
1686
|
|
1687
|
+
cache_harvest_locked();
|
1658
1688
|
gpr_free(poll_cache.active_pollers);
|
1659
1689
|
|
1660
1690
|
gpr_mu_unlock(&g_cvfds.mu);
|
@@ -19,6 +19,8 @@
|
|
19
19
|
#ifndef GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H
|
20
20
|
#define GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H
|
21
21
|
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
22
24
|
#include "src/core/lib/iomgr/ev_posix.h"
|
23
25
|
|
24
26
|
const grpc_event_engine_vtable* grpc_init_poll_posix(bool explicit_request);
|
@@ -16,6 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
19
21
|
#include "src/core/lib/iomgr/port.h"
|
20
22
|
|
21
23
|
#ifdef GRPC_POSIX_SOCKET
|
@@ -222,26 +224,26 @@ void grpc_fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) {
|
|
222
224
|
g_event_engine->fd_notify_on_write(fd, closure);
|
223
225
|
}
|
224
226
|
|
225
|
-
size_t
|
227
|
+
static size_t pollset_size(void) { return g_event_engine->pollset_size; }
|
226
228
|
|
227
|
-
void
|
229
|
+
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
|
228
230
|
GRPC_POLLING_API_TRACE("pollset_init(%p)", pollset);
|
229
231
|
g_event_engine->pollset_init(pollset, mu);
|
230
232
|
}
|
231
233
|
|
232
|
-
void
|
234
|
+
static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
233
235
|
GRPC_POLLING_API_TRACE("pollset_shutdown(%p)", pollset);
|
234
236
|
g_event_engine->pollset_shutdown(pollset, closure);
|
235
237
|
}
|
236
238
|
|
237
|
-
void
|
239
|
+
static void pollset_destroy(grpc_pollset* pollset) {
|
238
240
|
GRPC_POLLING_API_TRACE("pollset_destroy(%p)", pollset);
|
239
241
|
g_event_engine->pollset_destroy(pollset);
|
240
242
|
}
|
241
243
|
|
242
|
-
grpc_error*
|
243
|
-
|
244
|
-
|
244
|
+
static grpc_error* pollset_work(grpc_pollset* pollset,
|
245
|
+
grpc_pollset_worker** worker,
|
246
|
+
grpc_millis deadline) {
|
245
247
|
GRPC_POLLING_API_TRACE("pollset_work(%p, %" PRIdPTR ") begin", pollset,
|
246
248
|
deadline);
|
247
249
|
grpc_error* err = g_event_engine->pollset_work(pollset, worker, deadline);
|
@@ -250,8 +252,8 @@ grpc_error* grpc_pollset_work(grpc_pollset* pollset,
|
|
250
252
|
return err;
|
251
253
|
}
|
252
254
|
|
253
|
-
grpc_error*
|
254
|
-
|
255
|
+
static grpc_error* pollset_kick(grpc_pollset* pollset,
|
256
|
+
grpc_pollset_worker* specific_worker) {
|
255
257
|
GRPC_POLLING_API_TRACE("pollset_kick(%p, %p)", pollset, specific_worker);
|
256
258
|
return g_event_engine->pollset_kick(pollset, specific_worker);
|
257
259
|
}
|
@@ -262,43 +264,57 @@ void grpc_pollset_add_fd(grpc_pollset* pollset, struct grpc_fd* fd) {
|
|
262
264
|
g_event_engine->pollset_add_fd(pollset, fd);
|
263
265
|
}
|
264
266
|
|
265
|
-
|
267
|
+
void pollset_global_init() {}
|
268
|
+
void pollset_global_shutdown() {}
|
269
|
+
|
270
|
+
grpc_pollset_vtable grpc_posix_pollset_vtable = {
|
271
|
+
pollset_global_init, pollset_global_shutdown,
|
272
|
+
pollset_init, pollset_shutdown,
|
273
|
+
pollset_destroy, pollset_work,
|
274
|
+
pollset_kick, pollset_size};
|
275
|
+
|
276
|
+
static grpc_pollset_set* pollset_set_create(void) {
|
266
277
|
grpc_pollset_set* pss = g_event_engine->pollset_set_create();
|
267
278
|
GRPC_POLLING_API_TRACE("pollset_set_create(%p)", pss);
|
268
279
|
return pss;
|
269
280
|
}
|
270
281
|
|
271
|
-
void
|
282
|
+
static void pollset_set_destroy(grpc_pollset_set* pollset_set) {
|
272
283
|
GRPC_POLLING_API_TRACE("pollset_set_destroy(%p)", pollset_set);
|
273
284
|
g_event_engine->pollset_set_destroy(pollset_set);
|
274
285
|
}
|
275
286
|
|
276
|
-
void
|
277
|
-
|
287
|
+
static void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
|
288
|
+
grpc_pollset* pollset) {
|
278
289
|
GRPC_POLLING_API_TRACE("pollset_set_add_pollset(%p, %p)", pollset_set,
|
279
290
|
pollset);
|
280
291
|
g_event_engine->pollset_set_add_pollset(pollset_set, pollset);
|
281
292
|
}
|
282
293
|
|
283
|
-
void
|
284
|
-
|
294
|
+
static void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
|
295
|
+
grpc_pollset* pollset) {
|
285
296
|
GRPC_POLLING_API_TRACE("pollset_set_del_pollset(%p, %p)", pollset_set,
|
286
297
|
pollset);
|
287
298
|
g_event_engine->pollset_set_del_pollset(pollset_set, pollset);
|
288
299
|
}
|
289
300
|
|
290
|
-
void
|
291
|
-
|
301
|
+
static void pollset_set_add_pollset_set(grpc_pollset_set* bag,
|
302
|
+
grpc_pollset_set* item) {
|
292
303
|
GRPC_POLLING_API_TRACE("pollset_set_add_pollset_set(%p, %p)", bag, item);
|
293
304
|
g_event_engine->pollset_set_add_pollset_set(bag, item);
|
294
305
|
}
|
295
306
|
|
296
|
-
void
|
297
|
-
|
307
|
+
static void pollset_set_del_pollset_set(grpc_pollset_set* bag,
|
308
|
+
grpc_pollset_set* item) {
|
298
309
|
GRPC_POLLING_API_TRACE("pollset_set_del_pollset_set(%p, %p)", bag, item);
|
299
310
|
g_event_engine->pollset_set_del_pollset_set(bag, item);
|
300
311
|
}
|
301
312
|
|
313
|
+
grpc_pollset_set_vtable grpc_posix_pollset_set_vtable = {
|
314
|
+
pollset_set_create, pollset_set_destroy,
|
315
|
+
pollset_set_add_pollset, pollset_set_del_pollset,
|
316
|
+
pollset_set_add_pollset_set, pollset_set_del_pollset_set};
|
317
|
+
|
302
318
|
void grpc_pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
303
319
|
GRPC_POLLING_API_TRACE("pollset_set_add_fd(%p, %d)", pollset_set,
|
304
320
|
grpc_fd_wrapped_fd(fd));
|