grpc 1.4.5 → 1.6.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 +1235 -1100
- data/etc/roots.pem +0 -412
- data/include/grpc/byte_buffer.h +10 -25
- data/include/grpc/byte_buffer_reader.h +10 -25
- data/include/grpc/census.h +10 -25
- data/include/grpc/compression.h +10 -25
- data/include/grpc/grpc.h +15 -26
- data/include/grpc/grpc_cronet.h +10 -25
- data/include/grpc/grpc_posix.h +10 -25
- data/include/grpc/grpc_security.h +10 -25
- data/include/grpc/grpc_security_constants.h +10 -25
- data/include/grpc/impl/codegen/atm.h +11 -25
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +10 -25
- data/include/grpc/impl/codegen/atm_gcc_sync.h +10 -25
- data/include/grpc/impl/codegen/atm_windows.h +10 -25
- data/include/grpc/impl/codegen/byte_buffer_reader.h +11 -26
- data/include/grpc/impl/codegen/compression_types.h +12 -27
- data/include/grpc/impl/codegen/connectivity_state.h +10 -25
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +10 -25
- data/include/grpc/impl/codegen/gpr_slice.h +10 -25
- data/include/grpc/impl/codegen/gpr_types.h +10 -25
- data/include/grpc/impl/codegen/grpc_types.h +42 -43
- data/include/grpc/impl/codegen/port_platform.h +10 -25
- data/include/grpc/impl/codegen/propagation_bits.h +10 -25
- data/include/grpc/impl/codegen/slice.h +13 -28
- data/include/grpc/impl/codegen/status.h +10 -25
- data/include/grpc/impl/codegen/sync.h +10 -25
- data/include/grpc/impl/codegen/sync_generic.h +10 -25
- data/include/grpc/impl/codegen/sync_posix.h +10 -25
- data/include/grpc/impl/codegen/sync_windows.h +10 -25
- data/include/grpc/load_reporting.h +10 -25
- data/include/grpc/slice.h +10 -25
- data/include/grpc/slice_buffer.h +10 -25
- data/include/grpc/status.h +10 -25
- data/include/grpc/support/alloc.h +10 -25
- data/include/grpc/support/atm.h +10 -25
- data/include/grpc/support/atm_gcc_atomic.h +10 -25
- data/include/grpc/support/atm_gcc_sync.h +10 -25
- data/include/grpc/support/atm_windows.h +10 -25
- data/include/grpc/support/avl.h +46 -49
- data/include/grpc/support/cmdline.h +10 -25
- data/include/grpc/support/cpu.h +10 -25
- data/include/grpc/support/histogram.h +10 -25
- data/include/grpc/support/host_port.h +10 -25
- data/include/grpc/support/log.h +10 -25
- data/include/grpc/support/log_windows.h +10 -25
- data/include/grpc/support/port_platform.h +10 -25
- data/include/grpc/support/string_util.h +10 -25
- data/include/grpc/support/subprocess.h +10 -25
- data/include/grpc/support/sync.h +10 -25
- data/include/grpc/support/sync_generic.h +10 -25
- data/include/grpc/support/sync_posix.h +10 -25
- data/include/grpc/support/sync_windows.h +10 -25
- data/include/grpc/support/thd.h +10 -25
- data/include/grpc/support/time.h +10 -25
- data/include/grpc/support/tls.h +10 -25
- data/include/grpc/support/tls_gcc.h +10 -25
- data/include/grpc/support/tls_msvc.h +10 -25
- data/include/grpc/support/tls_pthread.h +10 -25
- data/include/grpc/support/useful.h +10 -25
- data/include/grpc/support/workaround_list.h +11 -26
- data/src/boringssl/err_data.c +277 -259
- data/src/core/ext/census/aggregation.h +10 -25
- data/src/core/ext/census/base_resources.c +10 -25
- data/src/core/ext/census/base_resources.h +10 -25
- data/src/core/ext/census/census_interface.h +10 -25
- data/src/core/ext/census/census_rpc_stats.h +10 -25
- data/src/core/ext/census/context.c +10 -25
- data/src/core/ext/census/gen/census.pb.c +10 -25
- data/src/core/ext/census/gen/census.pb.h +10 -25
- data/src/core/ext/census/gen/trace_context.pb.c +10 -25
- data/src/core/ext/census/gen/trace_context.pb.h +10 -25
- data/src/core/ext/census/grpc_context.c +10 -25
- data/src/core/ext/census/grpc_filter.c +11 -26
- data/src/core/ext/census/grpc_filter.h +10 -25
- data/src/core/ext/census/grpc_plugin.c +10 -25
- data/src/core/ext/census/initialize.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.c +10 -25
- data/src/core/ext/census/intrusive_hash_map.h +10 -25
- data/src/core/ext/census/intrusive_hash_map_internal.h +10 -25
- data/src/core/ext/census/mlog.c +10 -25
- data/src/core/ext/census/mlog.h +10 -25
- data/src/core/ext/census/operation.c +10 -25
- data/src/core/ext/census/placeholders.c +10 -25
- data/src/core/ext/census/resource.c +10 -25
- data/src/core/ext/census/resource.h +10 -25
- data/src/core/ext/census/rpc_metric_id.h +10 -25
- data/src/core/ext/census/trace_context.c +10 -25
- data/src/core/ext/census/trace_context.h +10 -25
- data/src/core/ext/census/trace_label.h +10 -25
- data/src/core/ext/census/trace_propagation.h +10 -25
- data/src/core/ext/census/trace_status.h +10 -25
- data/src/core/ext/census/trace_string.h +10 -25
- data/src/core/ext/census/tracing.c +10 -26
- data/src/core/ext/census/tracing.h +10 -25
- data/src/core/ext/filters/client_channel/channel_connectivity.c +20 -33
- data/src/core/ext/filters/client_channel/client_channel.c +617 -520
- data/src/core/ext/filters/client_channel/client_channel.h +15 -28
- data/src/core/ext/filters/client_channel/client_channel_factory.c +13 -31
- data/src/core/ext/filters/client_channel/client_channel_factory.h +10 -25
- data/src/core/ext/filters/client_channel/client_channel_plugin.c +16 -29
- data/src/core/ext/filters/client_channel/connector.c +10 -25
- data/src/core/ext/filters/client_channel/connector.h +10 -25
- data/src/core/ext/filters/client_channel/http_connect_handshaker.c +15 -30
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -25
- data/src/core/ext/filters/client_channel/http_proxy.c +112 -38
- data/src/core/ext/filters/client_channel/http_proxy.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy.c +32 -36
- data/src/core/ext/filters/client_channel/lb_policy.h +24 -27
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c +14 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c +464 -279
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +10 -25
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +15 -28
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c +40 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c +65 -49
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +31 -31
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c +47 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +11 -26
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +13 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +27 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +373 -136
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +504 -279
- data/src/core/ext/filters/client_channel/lb_policy_factory.c +12 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +12 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.c +10 -25
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +10 -25
- data/src/core/ext/filters/client_channel/parse_address.c +10 -25
- data/src/core/ext/filters/client_channel/parse_address.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper.h +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.c +10 -25
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +10 -25
- data/src/core/ext/filters/client_channel/resolver.c +33 -38
- data/src/core/ext/filters/client_channel/resolver.h +19 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c +153 -50
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +14 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c +33 -30
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c +326 -116
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +35 -36
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c +19 -34
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c +254 -0
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +60 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c +16 -28
- data/src/core/ext/filters/client_channel/resolver_factory.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_factory.h +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.c +10 -25
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -25
- data/src/core/ext/filters/client_channel/retry_throttle.c +23 -34
- data/src/core/ext/filters/client_channel/retry_throttle.h +10 -25
- data/src/core/ext/filters/client_channel/subchannel.c +33 -55
- data/src/core/ext/filters/client_channel/subchannel.h +16 -26
- data/src/core/ext/filters/client_channel/subchannel_index.c +55 -92
- data/src/core/ext/filters/client_channel/subchannel_index.h +26 -29
- data/src/core/ext/filters/client_channel/uri_parser.c +10 -25
- data/src/core/ext/filters/client_channel/uri_parser.h +10 -25
- data/src/core/ext/filters/deadline/deadline_filter.c +30 -45
- data/src/core/ext/filters/deadline/deadline_filter.h +10 -25
- data/src/core/ext/filters/http/client/http_client_filter.c +255 -294
- data/src/core/ext/filters/http/client/http_client_filter.h +10 -25
- data/src/core/ext/filters/http/http_filters_plugin.c +11 -26
- data/src/core/ext/filters/http/message_compress/message_compress_filter.c +133 -105
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +10 -25
- data/src/core/ext/filters/http/server/http_server_filter.c +17 -32
- data/src/core/ext/filters/http/server/http_server_filter.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting.c +11 -30
- data/src/core/ext/filters/load_reporting/load_reporting.h +10 -25
- data/src/core/ext/filters/load_reporting/load_reporting_filter.c +11 -26
- data/src/core/ext/filters/load_reporting/load_reporting_filter.h +10 -25
- data/src/core/ext/filters/max_age/max_age_filter.c +28 -43
- data/src/core/ext/filters/max_age/max_age_filter.h +10 -25
- data/src/core/ext/filters/message_size/message_size_filter.c +24 -37
- data/src/core/ext/filters/message_size/message_size_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c +16 -31
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +10 -25
- data/src/core/ext/filters/workarounds/workaround_utils.c +12 -26
- data/src/core/ext/filters/workarounds/workaround_utils.h +11 -26
- data/src/core/ext/transport/chttp2/alpn/alpn.c +10 -25
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +13 -28
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +10 -25
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +12 -29
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +13 -30
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +11 -26
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +10 -25
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +11 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +10 -25
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +10 -25
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +15 -27
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +421 -443
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -25
- data/src/core/ext/transport/chttp2/transport/flow_control.c +500 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_data.c +20 -28
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +11 -26
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +16 -29
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -33
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +18 -31
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +15 -30
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +10 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.c +10 -25
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.c +10 -25
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +10 -25
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +10 -25
- data/src/core/ext/transport/chttp2/transport/internal.h +191 -179
- data/src/core/ext/transport/chttp2/transport/parsing.c +33 -102
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +26 -28
- data/src/core/ext/transport/chttp2/transport/stream_map.c +10 -25
- data/src/core/ext/transport/chttp2/transport/stream_map.h +10 -25
- data/src/core/ext/transport/chttp2/transport/varint.c +14 -25
- data/src/core/ext/transport/chttp2/transport/varint.h +10 -25
- data/src/core/ext/transport/chttp2/transport/writing.c +164 -106
- data/src/core/ext/transport/inproc/inproc_plugin.c +29 -0
- data/src/core/ext/transport/inproc/inproc_transport.c +1303 -0
- data/src/core/ext/transport/inproc/inproc_transport.h +41 -0
- data/src/core/lib/channel/channel_args.c +52 -27
- data/src/core/lib/channel/channel_args.h +18 -27
- data/src/core/lib/channel/channel_stack.c +11 -26
- data/src/core/lib/channel/channel_stack.h +12 -27
- data/src/core/lib/channel/channel_stack_builder.c +11 -26
- data/src/core/lib/channel/channel_stack_builder.h +10 -25
- data/src/core/lib/channel/connected_channel.c +10 -25
- data/src/core/lib/channel/connected_channel.h +10 -25
- data/src/core/lib/channel/context.h +10 -25
- data/src/core/lib/channel/handshaker.c +14 -29
- data/src/core/lib/channel/handshaker.h +10 -25
- data/src/core/lib/channel/handshaker_factory.c +10 -25
- data/src/core/lib/channel/handshaker_factory.h +10 -25
- data/src/core/lib/channel/handshaker_registry.c +10 -25
- data/src/core/lib/channel/handshaker_registry.h +10 -25
- data/src/core/lib/compression/algorithm_metadata.h +10 -25
- data/src/core/lib/compression/compression.c +10 -25
- data/src/core/lib/compression/message_compress.c +10 -25
- data/src/core/lib/compression/message_compress.h +10 -25
- data/src/core/lib/compression/stream_compression.c +191 -0
- data/src/core/lib/compression/stream_compression.h +90 -0
- data/src/core/lib/debug/trace.c +28 -29
- data/src/core/lib/debug/trace.h +16 -30
- data/src/core/lib/http/format_request.c +10 -25
- data/src/core/lib/http/format_request.h +10 -25
- data/src/core/lib/http/httpcli.c +19 -35
- data/src/core/lib/http/httpcli.h +10 -25
- data/src/core/lib/http/httpcli_security_connector.c +17 -30
- data/src/core/lib/http/parser.c +11 -26
- data/src/core/lib/http/parser.h +10 -25
- data/src/core/lib/iomgr/closure.c +62 -25
- data/src/core/lib/iomgr/closure.h +81 -26
- data/src/core/lib/iomgr/combiner.c +103 -200
- data/src/core/lib/iomgr/combiner.h +14 -32
- data/src/core/lib/iomgr/endpoint.c +10 -29
- data/src/core/lib/iomgr/endpoint.h +10 -29
- data/src/core/lib/iomgr/endpoint_pair.h +10 -25
- data/src/core/lib/iomgr/endpoint_pair_posix.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_uv.c +10 -25
- data/src/core/lib/iomgr/endpoint_pair_windows.c +10 -25
- data/src/core/lib/iomgr/error.c +45 -46
- data/src/core/lib/iomgr/error.h +21 -34
- data/src/core/lib/iomgr/error_internal.h +10 -25
- data/src/core/lib/iomgr/ev_epoll1_linux.c +279 -179
- data/src/core/lib/iomgr/ev_epoll1_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c +75 -264
- data/src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.c +44 -199
- data/src/core/lib/iomgr/ev_epoll_thread_pool_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollex_linux.c +184 -247
- data/src/core/lib/iomgr/ev_epollex_linux.h +10 -25
- data/src/core/lib/iomgr/ev_epollsig_linux.c +116 -323
- data/src/core/lib/iomgr/ev_epollsig_linux.h +10 -25
- data/src/core/lib/iomgr/ev_poll_posix.c +328 -184
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -25
- data/src/core/lib/iomgr/ev_posix.c +25 -56
- data/src/core/lib/iomgr/ev_posix.h +15 -44
- data/src/core/lib/iomgr/ev_windows.c +11 -26
- data/src/core/lib/iomgr/exec_ctx.c +36 -45
- data/src/core/lib/iomgr/exec_ctx.h +10 -25
- data/src/core/lib/iomgr/executor.c +152 -127
- data/src/core/lib/iomgr/executor.h +18 -26
- data/src/core/lib/iomgr/gethostname.h +26 -0
- data/src/core/lib/iomgr/gethostname_fallback.c +27 -0
- data/src/core/lib/iomgr/gethostname_host_name_max.c +37 -0
- data/src/core/lib/iomgr/gethostname_sysconf.c +37 -0
- data/src/core/lib/iomgr/iocp_windows.c +10 -25
- data/src/core/lib/iomgr/iocp_windows.h +10 -25
- data/src/core/lib/iomgr/iomgr.c +17 -28
- data/src/core/lib/iomgr/iomgr.h +12 -27
- data/src/core/lib/iomgr/iomgr_internal.h +10 -25
- data/src/core/lib/iomgr/iomgr_posix.c +11 -26
- data/src/core/lib/iomgr/iomgr_posix.h +10 -25
- data/src/core/lib/iomgr/iomgr_uv.c +19 -26
- data/src/core/lib/iomgr/iomgr_uv.h +37 -0
- data/src/core/lib/iomgr/iomgr_windows.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.c +10 -25
- data/src/core/lib/iomgr/is_epollexclusive_available.h +10 -25
- data/src/core/lib/iomgr/load_file.c +10 -25
- data/src/core/lib/iomgr/load_file.h +10 -25
- data/src/core/lib/iomgr/lockfree_event.c +22 -35
- data/src/core/lib/iomgr/lockfree_event.h +13 -27
- data/src/core/lib/iomgr/nameser.h +104 -0
- data/src/core/lib/iomgr/network_status_tracker.c +10 -25
- data/src/core/lib/iomgr/network_status_tracker.h +10 -25
- data/src/core/lib/iomgr/polling_entity.c +10 -25
- data/src/core/lib/iomgr/polling_entity.h +14 -34
- data/src/core/lib/iomgr/pollset.h +14 -25
- data/src/core/lib/iomgr/pollset_set.h +10 -25
- data/src/core/lib/iomgr/pollset_set_uv.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.c +10 -25
- data/src/core/lib/iomgr/pollset_set_windows.h +10 -25
- data/src/core/lib/iomgr/pollset_uv.c +25 -26
- data/src/core/lib/iomgr/pollset_uv.h +10 -25
- data/src/core/lib/iomgr/pollset_windows.c +17 -27
- data/src/core/lib/iomgr/pollset_windows.h +10 -25
- data/src/core/lib/iomgr/port.h +24 -25
- data/src/core/lib/iomgr/resolve_address.h +10 -25
- data/src/core/lib/iomgr/resolve_address_posix.c +13 -28
- data/src/core/lib/iomgr/resolve_address_uv.c +31 -35
- data/src/core/lib/iomgr/resolve_address_windows.c +13 -28
- data/src/core/lib/iomgr/resource_quota.c +52 -67
- data/src/core/lib/iomgr/resource_quota.h +10 -25
- data/src/core/lib/iomgr/sockaddr.h +10 -25
- data/src/core/lib/iomgr/sockaddr_posix.h +10 -25
- data/src/core/lib/iomgr/sockaddr_utils.c +15 -25
- data/src/core/lib/iomgr/sockaddr_utils.h +12 -25
- data/src/core/lib/iomgr/sockaddr_windows.h +10 -25
- data/src/core/lib/iomgr/socket_factory_posix.c +13 -31
- data/src/core/lib/iomgr/socket_factory_posix.h +10 -25
- data/src/core/lib/iomgr/socket_mutator.c +14 -31
- data/src/core/lib/iomgr/socket_mutator.h +10 -25
- data/src/core/lib/iomgr/socket_utils.h +10 -25
- data/src/core/lib/iomgr/socket_utils_common_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_linux.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -25
- data/src/core/lib/iomgr/socket_utils_posix.h +10 -25
- data/src/core/lib/iomgr/socket_utils_uv.c +10 -25
- data/src/core/lib/iomgr/socket_utils_windows.c +10 -25
- data/src/core/lib/iomgr/socket_windows.c +12 -27
- data/src/core/lib/iomgr/socket_windows.h +10 -25
- data/src/core/lib/iomgr/sys_epoll_wrapper.h +10 -25
- data/src/core/lib/iomgr/tcp_client.h +10 -25
- data/src/core/lib/iomgr/tcp_client_posix.c +21 -34
- data/src/core/lib/iomgr/tcp_client_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_client_uv.c +18 -27
- data/src/core/lib/iomgr/tcp_client_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_posix.c +36 -55
- data/src/core/lib/iomgr/tcp_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server.h +10 -25
- data/src/core/lib/iomgr/tcp_server_posix.c +16 -31
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.c +11 -26
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c +10 -25
- data/src/core/lib/iomgr/tcp_server_uv.c +103 -64
- data/src/core/lib/iomgr/tcp_server_windows.c +14 -29
- data/src/core/lib/iomgr/tcp_uv.c +41 -45
- data/src/core/lib/iomgr/tcp_uv.h +10 -25
- data/src/core/lib/iomgr/tcp_windows.c +39 -53
- data/src/core/lib/iomgr/tcp_windows.h +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.c +10 -25
- data/src/core/lib/iomgr/time_averaged_stats.h +10 -25
- data/src/core/lib/iomgr/timer.h +18 -27
- data/src/core/lib/iomgr/timer_generic.c +91 -87
- data/src/core/lib/iomgr/timer_generic.h +10 -25
- data/src/core/lib/iomgr/timer_heap.c +10 -25
- data/src/core/lib/iomgr/timer_heap.h +10 -25
- data/src/core/lib/iomgr/timer_manager.c +178 -100
- data/src/core/lib/iomgr/timer_manager.h +10 -25
- data/src/core/lib/iomgr/timer_uv.c +23 -33
- data/src/core/lib/iomgr/timer_uv.h +10 -25
- data/src/core/lib/iomgr/udp_server.c +17 -32
- data/src/core/lib/iomgr/udp_server.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.c +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix.h +10 -25
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_cv.h +13 -28
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.c +10 -25
- data/src/core/lib/iomgr/wakeup_fd_posix.h +10 -25
- data/src/core/lib/json/json.c +10 -25
- data/src/core/lib/json/json.h +10 -25
- data/src/core/lib/json/json_common.h +10 -25
- data/src/core/lib/json/json_reader.c +11 -25
- data/src/core/lib/json/json_reader.h +10 -25
- data/src/core/lib/json/json_string.c +10 -25
- data/src/core/lib/json/json_writer.c +10 -25
- data/src/core/lib/json/json_writer.h +10 -25
- data/src/core/lib/profiling/basic_timers.c +10 -25
- data/src/core/lib/profiling/stap_timers.c +10 -25
- data/src/core/lib/profiling/timers.h +10 -25
- data/src/core/lib/security/context/security_context.c +32 -40
- data/src/core/lib/security/context/security_context.h +15 -26
- data/src/core/lib/security/credentials/composite/composite_credentials.c +76 -81
- data/src/core/lib/security/credentials/composite/composite_credentials.h +10 -25
- data/src/core/lib/security/credentials/credentials.c +29 -49
- data/src/core/lib/security/credentials/credentials.h +48 -61
- data/src/core/lib/security/credentials/credentials_metadata.c +34 -78
- data/src/core/lib/security/credentials/fake/fake_credentials.c +33 -56
- data/src/core/lib/security/credentials/fake/fake_credentials.h +12 -27
- data/src/core/lib/security/credentials/google_default/credentials_generic.c +10 -25
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +12 -27
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -25
- data/src/core/lib/security/credentials/iam/iam_credentials.c +40 -40
- data/src/core/lib/security/credentials/iam/iam_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/json_token.c +10 -25
- data/src/core/lib/security/credentials/jwt/json_token.h +10 -25
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +45 -48
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -26
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +53 -33
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +10 -25
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +155 -87
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +118 -82
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -27
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -32
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -25
- data/src/core/lib/security/transport/auth_filters.h +10 -25
- data/src/core/lib/security/transport/client_auth_filter.c +217 -112
- data/src/core/lib/security/transport/lb_targets_info.c +16 -32
- data/src/core/lib/security/transport/lb_targets_info.h +10 -25
- data/src/core/lib/security/transport/secure_endpoint.c +29 -43
- data/src/core/lib/security/transport/secure_endpoint.h +10 -25
- data/src/core/lib/security/transport/security_connector.c +80 -61
- data/src/core/lib/security/transport/security_connector.h +35 -35
- data/src/core/lib/security/transport/security_handshaker.c +18 -33
- data/src/core/lib/security/transport/security_handshaker.h +10 -25
- data/src/core/lib/security/transport/server_auth_filter.c +62 -116
- data/src/core/lib/security/transport/tsi_error.c +10 -25
- data/src/core/lib/security/transport/tsi_error.h +10 -25
- data/src/core/lib/security/util/json_util.c +10 -25
- data/src/core/lib/security/util/json_util.h +10 -25
- data/src/core/lib/slice/b64.c +10 -25
- data/src/core/lib/slice/b64.h +10 -25
- data/src/core/lib/slice/percent_encoding.c +10 -25
- data/src/core/lib/slice/percent_encoding.h +10 -25
- data/src/core/lib/slice/slice.c +10 -25
- data/src/core/lib/slice/slice_buffer.c +10 -25
- data/src/core/lib/slice/slice_hash_table.c +48 -26
- data/src/core/lib/slice/slice_hash_table.h +26 -28
- data/src/core/lib/slice/slice_intern.c +10 -25
- data/src/core/lib/slice/slice_internal.h +10 -25
- data/src/core/lib/slice/slice_string_helpers.c +10 -25
- data/src/core/lib/slice/slice_string_helpers.h +10 -25
- data/src/core/lib/support/alloc.c +10 -25
- data/src/core/lib/support/arena.c +12 -27
- data/src/core/lib/support/arena.h +10 -25
- data/src/core/lib/support/atm.c +17 -32
- data/src/core/lib/support/atomic.h +10 -25
- data/src/core/lib/support/atomic_with_atm.h +10 -25
- data/src/core/lib/support/atomic_with_std.h +10 -25
- data/src/core/lib/support/avl.c +101 -101
- data/src/core/lib/support/backoff.c +10 -25
- data/src/core/lib/support/backoff.h +10 -25
- data/src/core/lib/support/block_annotate.h +10 -25
- data/src/core/lib/support/cmdline.c +10 -25
- data/src/core/lib/support/cpu_iphone.c +10 -25
- data/src/core/lib/support/cpu_linux.c +10 -25
- data/src/core/lib/support/cpu_posix.c +10 -25
- data/src/core/lib/support/cpu_windows.c +10 -25
- data/src/core/lib/support/env.h +16 -25
- data/src/core/lib/support/env_linux.c +30 -37
- data/src/core/lib/support/env_posix.c +15 -25
- data/src/core/lib/support/env_windows.c +15 -25
- data/src/core/lib/support/histogram.c +10 -25
- data/src/core/lib/support/host_port.c +10 -25
- data/src/core/lib/support/log.c +20 -29
- data/src/core/lib/support/log_android.c +10 -25
- data/src/core/lib/support/log_linux.c +13 -26
- data/src/core/lib/support/log_posix.c +10 -25
- data/src/core/lib/support/log_windows.c +10 -25
- data/src/core/lib/support/memory.h +10 -25
- data/src/core/lib/support/mpscq.c +11 -49
- data/src/core/lib/support/mpscq.h +11 -50
- data/src/core/lib/support/murmur_hash.c +12 -25
- data/src/core/lib/support/murmur_hash.h +10 -25
- data/src/core/lib/support/spinlock.h +10 -25
- data/src/core/lib/support/stack_lockfree.c +10 -25
- data/src/core/lib/support/stack_lockfree.h +10 -25
- data/src/core/lib/support/string.c +10 -25
- data/src/core/lib/support/string.h +10 -25
- data/src/core/lib/support/string_posix.c +10 -25
- data/src/core/lib/support/string_util_windows.c +10 -25
- data/src/core/lib/support/string_windows.c +10 -25
- data/src/core/lib/support/string_windows.h +10 -25
- data/src/core/lib/support/subprocess_posix.c +10 -25
- data/src/core/lib/support/subprocess_windows.c +10 -25
- data/src/core/lib/support/sync.c +10 -25
- data/src/core/lib/support/sync_posix.c +10 -25
- data/src/core/lib/support/sync_windows.c +10 -25
- data/src/core/lib/support/thd.c +10 -25
- data/src/core/lib/support/thd_internal.h +10 -25
- data/src/core/lib/support/thd_posix.c +10 -25
- data/src/core/lib/support/thd_windows.c +10 -25
- data/src/core/lib/support/time.c +10 -25
- data/src/core/lib/support/time_posix.c +10 -25
- data/src/core/lib/support/time_precise.c +18 -33
- data/src/core/lib/support/time_precise.h +10 -25
- data/src/core/lib/support/time_windows.c +10 -25
- data/src/core/lib/support/tls_pthread.c +10 -25
- data/src/core/lib/support/tmpfile.h +10 -25
- data/src/core/lib/support/tmpfile_msys.c +10 -25
- data/src/core/lib/support/tmpfile_posix.c +10 -25
- data/src/core/lib/support/tmpfile_windows.c +10 -25
- data/src/core/lib/support/wrap_memcpy.c +10 -25
- data/src/core/lib/surface/alarm.c +78 -35
- data/src/core/lib/surface/alarm_internal.h +40 -0
- data/src/core/lib/surface/api_trace.c +11 -26
- data/src/core/lib/surface/api_trace.h +10 -25
- data/src/core/lib/surface/byte_buffer.c +10 -25
- data/src/core/lib/surface/byte_buffer_reader.c +10 -25
- data/src/core/lib/surface/call.c +64 -84
- data/src/core/lib/surface/call.h +11 -26
- data/src/core/lib/surface/call_details.c +10 -25
- data/src/core/lib/surface/call_log_batch.c +10 -25
- data/src/core/lib/surface/call_test_only.h +10 -25
- data/src/core/lib/surface/channel.c +11 -26
- data/src/core/lib/surface/channel.h +11 -26
- data/src/core/lib/surface/channel_init.c +10 -25
- data/src/core/lib/surface/channel_init.h +10 -25
- data/src/core/lib/surface/channel_ping.c +12 -27
- data/src/core/lib/surface/channel_stack_type.c +10 -25
- data/src/core/lib/surface/channel_stack_type.h +10 -25
- data/src/core/lib/surface/completion_queue.c +442 -331
- data/src/core/lib/surface/completion_queue.h +16 -33
- data/src/core/lib/surface/completion_queue_factory.c +10 -25
- data/src/core/lib/surface/completion_queue_factory.h +10 -25
- data/src/core/lib/surface/event_string.c +10 -25
- data/src/core/lib/surface/event_string.h +10 -25
- data/src/core/lib/surface/init.c +38 -47
- data/src/core/lib/surface/init.h +10 -25
- data/src/core/lib/surface/init_secure.c +20 -27
- data/src/core/lib/surface/lame_client.cc +14 -29
- data/src/core/lib/surface/lame_client.h +10 -25
- data/src/core/lib/surface/metadata_array.c +10 -25
- data/src/core/lib/surface/server.c +128 -81
- data/src/core/lib/surface/server.h +10 -25
- data/src/core/lib/surface/validate_metadata.c +10 -25
- data/src/core/lib/surface/validate_metadata.h +10 -25
- data/src/core/lib/surface/version.c +11 -26
- data/src/core/lib/transport/bdp_estimator.c +19 -29
- data/src/core/lib/transport/bdp_estimator.h +16 -29
- data/src/core/lib/transport/byte_stream.c +127 -36
- data/src/core/lib/transport/byte_stream.h +88 -46
- data/src/core/lib/transport/connectivity_state.c +17 -31
- data/src/core/lib/transport/connectivity_state.h +10 -25
- data/src/core/lib/transport/error_utils.c +10 -25
- data/src/core/lib/transport/error_utils.h +10 -25
- data/src/core/lib/transport/http2_errors.h +10 -25
- data/src/core/lib/transport/metadata.c +87 -85
- data/src/core/lib/transport/metadata.h +15 -28
- data/src/core/lib/transport/metadata_batch.c +10 -25
- data/src/core/lib/transport/metadata_batch.h +10 -25
- data/src/core/lib/transport/pid_controller.c +10 -25
- data/src/core/lib/transport/pid_controller.h +10 -25
- data/src/core/lib/transport/service_config.c +11 -26
- data/src/core/lib/transport/service_config.h +10 -25
- data/src/core/lib/transport/static_metadata.c +12 -26
- data/src/core/lib/transport/static_metadata.h +10 -25
- data/src/core/lib/transport/status_conversion.c +10 -25
- data/src/core/lib/transport/status_conversion.h +10 -25
- data/src/core/lib/transport/timeout_encoding.c +10 -25
- data/src/core/lib/transport/timeout_encoding.h +10 -25
- data/src/core/lib/transport/transport.c +60 -53
- data/src/core/lib/transport/transport.h +36 -34
- data/src/core/lib/transport/transport_impl.h +10 -25
- data/src/core/lib/transport/transport_op_string.c +10 -28
- data/src/core/plugin_registry/grpc_plugin_registry.c +22 -25
- data/src/core/tsi/fake_transport_security.c +199 -94
- data/src/core/tsi/fake_transport_security.h +11 -26
- data/src/core/tsi/gts_transport_security.c +40 -0
- data/src/core/tsi/gts_transport_security.h +37 -0
- data/src/core/tsi/ssl_transport_security.c +13 -32
- data/src/core/tsi/ssl_transport_security.h +10 -25
- data/src/core/tsi/ssl_types.h +10 -25
- data/src/core/tsi/transport_security.c +48 -78
- data/src/core/tsi/transport_security.h +18 -27
- data/src/core/tsi/transport_security_adapter.c +17 -29
- data/src/core/tsi/transport_security_adapter.h +10 -25
- data/src/core/tsi/transport_security_grpc.c +64 -0
- data/src/core/tsi/transport_security_grpc.h +80 -0
- data/src/core/tsi/transport_security_interface.h +21 -27
- data/src/ruby/bin/apis/google/protobuf/empty.rb +10 -25
- data/src/ruby/bin/apis/pubsub_demo.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub.rb +10 -25
- data/src/ruby/bin/apis/tech/pubsub/proto/pubsub_services.rb +10 -25
- data/src/ruby/bin/math_client.rb +10 -25
- data/src/ruby/bin/math_server.rb +10 -25
- data/src/ruby/bin/math_services_pb.rb +10 -25
- data/src/ruby/bin/noproto_client.rb +10 -25
- data/src/ruby/bin/noproto_server.rb +10 -25
- data/src/ruby/ext/grpc/extconf.rb +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.c +10 -25
- data/src/ruby/ext/grpc/rb_byte_buffer.h +10 -25
- data/src/ruby/ext/grpc/rb_call.c +44 -25
- data/src/ruby/ext/grpc/rb_call.h +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_call_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_channel.c +10 -25
- data/src/ruby/ext/grpc/rb_channel.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_args.h +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_channel_credentials.h +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.c +10 -25
- data/src/ruby/ext/grpc/rb_completion_queue.h +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.c +10 -25
- data/src/ruby/ext/grpc/rb_compression_options.h +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.c +10 -25
- data/src/ruby/ext/grpc/rb_event_thread.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc.h +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -25
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +16 -31
- data/src/ruby/ext/grpc/rb_loader.c +10 -25
- data/src/ruby/ext/grpc/rb_loader.h +10 -25
- data/src/ruby/ext/grpc/rb_server.c +10 -25
- data/src/ruby/ext/grpc/rb_server.h +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.c +10 -25
- data/src/ruby/ext/grpc/rb_server_credentials.h +10 -25
- data/src/ruby/lib/grpc.rb +10 -25
- data/src/ruby/lib/grpc/core/time_consts.rb +10 -25
- data/src/ruby/lib/grpc/errors.rb +16 -30
- data/src/ruby/lib/grpc/generic/active_call.rb +25 -27
- data/src/ruby/lib/grpc/generic/bidi_call.rb +17 -27
- data/src/ruby/lib/grpc/generic/client_stub.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +10 -25
- data/src/ruby/lib/grpc/generic/rpc_server.rb +10 -25
- data/src/ruby/lib/grpc/generic/service.rb +10 -25
- data/src/ruby/lib/grpc/grpc.rb +10 -25
- data/src/ruby/lib/grpc/logconfig.rb +10 -25
- data/src/ruby/lib/grpc/notifier.rb +10 -25
- data/src/ruby/lib/grpc/version.rb +11 -26
- data/src/ruby/pb/generate_proto_ruby.sh +10 -25
- data/src/ruby/pb/grpc/health/checker.rb +10 -25
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +10 -25
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +10 -25
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +10 -25
- data/src/ruby/pb/test/client.rb +10 -25
- data/src/ruby/pb/test/server.rb +10 -25
- data/src/ruby/spec/call_credentials_spec.rb +10 -25
- data/src/ruby/spec/call_spec.rb +43 -25
- data/src/ruby/spec/channel_connection_spec.rb +10 -25
- data/src/ruby/spec/channel_credentials_spec.rb +11 -26
- data/src/ruby/spec/channel_spec.rb +10 -25
- data/src/ruby/spec/client_auth_spec.rb +10 -25
- data/src/ruby/spec/client_server_spec.rb +66 -25
- data/src/ruby/spec/compression_options_spec.rb +10 -25
- data/src/ruby/spec/error_sanity_spec.rb +10 -25
- data/src/ruby/spec/generic/active_call_spec.rb +10 -25
- data/src/ruby/spec/generic/client_stub_spec.rb +146 -35
- data/src/ruby/spec/generic/rpc_desc_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +10 -25
- data/src/ruby/spec/generic/rpc_server_spec.rb +124 -34
- data/src/ruby/spec/generic/service_spec.rb +10 -25
- data/src/ruby/spec/pb/duplicate/codegen_spec.rb +10 -25
- data/src/ruby/spec/pb/health/checker_spec.rb +10 -25
- data/src/ruby/spec/server_credentials_spec.rb +10 -25
- data/src/ruby/spec/server_spec.rb +10 -25
- data/src/ruby/spec/spec_helper.rb +10 -25
- data/src/ruby/spec/time_consts_spec.rb +10 -25
- data/third_party/boringssl/crypto/aes/key_wrap.c +138 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +6 -3
- data/third_party/boringssl/crypto/asn1/a_enum.c +4 -1
- data/third_party/boringssl/crypto/asn1/a_gentm.c +20 -15
- data/third_party/boringssl/crypto/asn1/a_int.c +7 -4
- data/third_party/boringssl/crypto/asn1/a_object.c +5 -2
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -1
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -2
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -2
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +3 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +6 -3
- data/third_party/boringssl/crypto/asn1/tasn_new.c +12 -7
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +22 -8
- data/third_party/boringssl/crypto/{time_support.c → asn1/time_support.c} +1 -1
- data/third_party/boringssl/crypto/asn1/x_long.c +5 -2
- data/third_party/boringssl/crypto/base64/base64.c +7 -5
- data/third_party/boringssl/crypto/bio/bio.c +24 -10
- data/third_party/boringssl/crypto/bio/bio_mem.c +12 -10
- data/third_party/boringssl/crypto/bio/connect.c +7 -18
- data/third_party/boringssl/crypto/bio/fd.c +3 -6
- data/third_party/boringssl/crypto/bio/file.c +6 -6
- data/third_party/boringssl/crypto/bio/hexdump.c +4 -2
- data/third_party/boringssl/crypto/bio/pair.c +30 -344
- data/third_party/boringssl/crypto/bio/socket.c +6 -7
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -3
- data/third_party/boringssl/crypto/bn/add.c +1 -1
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +11 -10
- data/third_party/boringssl/crypto/bn/bn.c +6 -20
- data/third_party/boringssl/crypto/bn/cmp.c +14 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -2
- data/third_party/boringssl/crypto/bn/ctx.c +3 -1
- data/third_party/boringssl/crypto/bn/div.c +108 -51
- data/third_party/boringssl/crypto/bn/exponentiation.c +15 -33
- data/third_party/boringssl/crypto/bn/gcd.c +29 -22
- data/third_party/boringssl/crypto/bn/generic.c +71 -67
- data/third_party/boringssl/crypto/bn/internal.h +19 -6
- data/third_party/boringssl/crypto/bn/kronecker.c +1 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +9 -10
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +47 -0
- data/third_party/boringssl/crypto/bn/mul.c +11 -9
- data/third_party/boringssl/crypto/bn/random.c +6 -3
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -65
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +0 -3
- data/third_party/boringssl/crypto/bn/shift.c +9 -1
- data/third_party/boringssl/crypto/bn/sqrt.c +3 -1
- data/third_party/boringssl/crypto/buf/buf.c +6 -4
- data/third_party/boringssl/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl/crypto/bytestring/ber.c +2 -1
- data/third_party/boringssl/crypto/bytestring/cbb.c +9 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +54 -2
- data/third_party/boringssl/crypto/chacha/chacha.c +1 -1
- data/third_party/boringssl/crypto/cipher/aead.c +3 -3
- data/third_party/boringssl/crypto/cipher/cipher.c +18 -13
- data/third_party/boringssl/crypto/cipher/e_aes.c +335 -281
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +113 -137
- data/third_party/boringssl/crypto/cipher/e_null.c +2 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +54 -49
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +4 -3
- data/third_party/boringssl/crypto/cipher/e_tls.c +5 -5
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +41 -112
- data/third_party/boringssl/crypto/cmac/cmac.c +6 -4
- data/third_party/boringssl/crypto/conf/conf.c +6 -3
- data/third_party/boringssl/crypto/cpu-arm-linux.c +2 -2
- data/third_party/boringssl/crypto/curve25519/curve25519.c +28 -34
- data/third_party/boringssl/crypto/curve25519/spake25519.c +7 -6
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +2 -1
- data/third_party/boringssl/crypto/des/des.c +1 -1
- data/third_party/boringssl/crypto/des/internal.h +58 -46
- data/third_party/boringssl/crypto/dh/dh.c +4 -8
- data/third_party/boringssl/crypto/digest/digest.c +5 -2
- data/third_party/boringssl/crypto/digest/digests.c +70 -33
- data/third_party/boringssl/crypto/digest/md32_common.h +39 -27
- data/third_party/boringssl/crypto/dsa/dsa.c +11 -19
- data/third_party/boringssl/crypto/ec/ec.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_asn1.c +3 -2
- data/third_party/boringssl/crypto/ec/ec_key.c +1 -1
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +6 -11
- data/third_party/boringssl/crypto/ec/oct.c +2 -14
- data/third_party/boringssl/crypto/ec/p224-64.c +78 -122
- data/third_party/boringssl/crypto/ec/p256-64.c +93 -133
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +48 -61
- data/third_party/boringssl/crypto/ec/p256-x86_64.h +113 -0
- data/third_party/boringssl/crypto/ec/simple.c +2 -1
- data/third_party/boringssl/crypto/ec/wnaf.c +52 -43
- data/third_party/boringssl/crypto/ecdh/ecdh.c +4 -2
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +17 -16
- data/third_party/boringssl/crypto/engine/engine.c +3 -1
- data/third_party/boringssl/crypto/err/err.c +5 -5
- data/third_party/boringssl/crypto/evp/evp.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_asn1.c +1 -1
- data/third_party/boringssl/crypto/evp/evp_ctx.c +23 -29
- data/third_party/boringssl/crypto/evp/p_ec.c +2 -1
- data/third_party/boringssl/crypto/evp/p_rsa.c +9 -3
- data/third_party/boringssl/crypto/evp/pbkdf.c +3 -1
- data/third_party/boringssl/crypto/hkdf/hkdf.c +3 -1
- data/third_party/boringssl/crypto/hmac/hmac.c +4 -2
- data/third_party/boringssl/crypto/internal.h +81 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +7 -13
- data/third_party/boringssl/crypto/md4/md4.c +20 -18
- data/third_party/boringssl/crypto/md5/md5.c +31 -21
- data/third_party/boringssl/crypto/mem.c +4 -10
- data/third_party/boringssl/crypto/modes/cbc.c +2 -6
- data/third_party/boringssl/crypto/modes/cfb.c +2 -2
- data/third_party/boringssl/crypto/modes/ctr.c +1 -1
- data/third_party/boringssl/crypto/modes/gcm.c +117 -334
- data/third_party/boringssl/crypto/modes/internal.h +107 -84
- data/third_party/boringssl/crypto/modes/ofb.c +3 -3
- data/third_party/boringssl/crypto/modes/polyval.c +94 -0
- data/third_party/boringssl/crypto/obj/obj.c +13 -8
- data/third_party/boringssl/crypto/obj/obj_dat.h +6109 -5187
- data/third_party/boringssl/crypto/obj/obj_xref.c +55 -57
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -3
- data/third_party/boringssl/crypto/pkcs8/internal.h +27 -8
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +137 -352
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +371 -364
- data/third_party/boringssl/crypto/poly1305/poly1305.c +12 -18
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +2 -2
- data/third_party/boringssl/crypto/{newhope/reduce.c → pool/internal.h} +24 -21
- data/third_party/boringssl/crypto/pool/pool.c +200 -0
- data/third_party/boringssl/crypto/rand/deterministic.c +6 -5
- data/third_party/boringssl/crypto/rand/fuchsia.c +43 -0
- data/third_party/boringssl/crypto/rand/rand.c +7 -7
- data/third_party/boringssl/crypto/rand/urandom.c +136 -22
- data/third_party/boringssl/crypto/rand/windows.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +2 -1
- data/third_party/boringssl/crypto/rsa/padding.c +11 -11
- data/third_party/boringssl/crypto/rsa/rsa.c +4 -4
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +7 -1
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +41 -80
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +346 -0
- data/third_party/boringssl/crypto/sha/sha1.c +60 -42
- data/third_party/boringssl/crypto/sha/sha256.c +4 -2
- data/third_party/boringssl/crypto/sha/sha512.c +9 -7
- data/third_party/boringssl/crypto/stack/stack.c +10 -7
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +2 -2
- data/third_party/boringssl/crypto/x509/a_verify.c +1 -1
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +1 -1
- data/third_party/boringssl/crypto/x509/t_x509.c +78 -38
- data/third_party/boringssl/crypto/x509/x509_cmp.c +8 -5
- data/third_party/boringssl/crypto/x509/x509_lu.c +6 -1
- data/third_party/boringssl/crypto/x509/x509_obj.c +4 -1
- data/third_party/boringssl/crypto/x509/x509_vfy.c +42 -8
- data/third_party/boringssl/crypto/x509/x509_vpm.c +8 -6
- data/third_party/boringssl/crypto/x509/x509name.c +4 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +4 -2
- data/third_party/boringssl/crypto/x509/x_name.c +23 -13
- data/third_party/boringssl/crypto/x509/x_pkey.c +4 -1
- data/third_party/boringssl/crypto/x509/x_x509.c +42 -3
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +1 -1
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +4 -1
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +6 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +13 -21
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +19 -33
- data/third_party/boringssl/include/openssl/aead.h +9 -20
- data/third_party/boringssl/include/openssl/aes.h +21 -9
- data/third_party/boringssl/include/openssl/asn1.h +9 -1
- data/third_party/boringssl/include/openssl/base.h +33 -6
- data/third_party/boringssl/include/openssl/bio.h +10 -103
- data/third_party/boringssl/include/openssl/bn.h +58 -42
- data/third_party/boringssl/include/openssl/bytestring.h +17 -0
- data/third_party/boringssl/include/openssl/cipher.h +4 -3
- data/third_party/boringssl/include/openssl/conf.h +4 -1
- data/third_party/boringssl/include/openssl/curve25519.h +13 -0
- data/third_party/boringssl/include/openssl/digest.h +5 -3
- data/third_party/boringssl/include/openssl/dsa.h +5 -5
- data/third_party/boringssl/include/openssl/ec.h +2 -2
- data/third_party/boringssl/include/openssl/ecdh.h +3 -4
- data/third_party/boringssl/include/openssl/ecdsa.h +10 -10
- data/third_party/boringssl/include/openssl/err.h +5 -5
- data/third_party/boringssl/include/openssl/evp.h +11 -7
- data/third_party/boringssl/include/openssl/lhash.h +2 -3
- data/third_party/boringssl/include/openssl/lhash_macros.h +56 -14
- data/third_party/boringssl/include/openssl/nid.h +2949 -2916
- data/third_party/boringssl/include/openssl/obj.h +1 -1
- data/third_party/boringssl/include/openssl/pkcs8.h +21 -42
- data/third_party/boringssl/include/openssl/pool.h +87 -0
- data/third_party/boringssl/include/openssl/rand.h +1 -1
- data/third_party/boringssl/include/openssl/rsa.h +4 -2
- data/third_party/boringssl/include/openssl/sha.h +0 -4
- data/third_party/boringssl/include/openssl/ssl.h +327 -662
- data/third_party/boringssl/include/openssl/ssl3.h +1 -21
- data/third_party/boringssl/include/openssl/stack.h +1 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +85 -0
- data/third_party/boringssl/include/openssl/tls1.h +23 -52
- data/third_party/boringssl/include/openssl/type_check.h +4 -0
- data/third_party/boringssl/include/openssl/x509.h +10 -59
- data/third_party/boringssl/include/openssl/x509_vfy.h +7 -1
- data/third_party/boringssl/include/openssl/x509v3.h +4 -4
- data/third_party/boringssl/ssl/bio_ssl.c +175 -0
- data/third_party/boringssl/ssl/custom_extensions.c +24 -21
- data/third_party/boringssl/ssl/d1_both.c +259 -289
- data/third_party/boringssl/ssl/d1_lib.c +8 -20
- data/third_party/boringssl/ssl/d1_pkt.c +6 -15
- data/third_party/boringssl/ssl/dtls_method.c +22 -8
- data/third_party/boringssl/ssl/dtls_record.c +27 -2
- data/third_party/boringssl/ssl/handshake_client.c +460 -579
- data/third_party/boringssl/ssl/handshake_server.c +662 -644
- data/third_party/boringssl/ssl/internal.h +1009 -375
- data/third_party/boringssl/ssl/s3_both.c +312 -162
- data/third_party/boringssl/ssl/s3_lib.c +12 -128
- data/third_party/boringssl/ssl/s3_pkt.c +22 -30
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +28 -22
- data/third_party/boringssl/ssl/ssl_asn1.c +210 -114
- data/third_party/boringssl/ssl/ssl_buffer.c +2 -1
- data/third_party/boringssl/ssl/ssl_cert.c +417 -219
- data/third_party/boringssl/ssl/ssl_cipher.c +191 -393
- data/third_party/boringssl/ssl/ssl_ecdh.c +19 -164
- data/third_party/boringssl/ssl/ssl_file.c +0 -11
- data/third_party/boringssl/ssl/ssl_lib.c +325 -652
- data/third_party/boringssl/ssl/{ssl_rsa.c → ssl_privkey.c} +21 -131
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +76 -0
- data/third_party/boringssl/ssl/ssl_session.c +206 -95
- data/third_party/boringssl/ssl/ssl_stat.c +18 -84
- data/third_party/boringssl/ssl/{s3_enc.c → ssl_transcript.c} +150 -157
- data/third_party/boringssl/ssl/ssl_x509.c +815 -0
- data/third_party/boringssl/ssl/t1_enc.c +188 -174
- data/third_party/boringssl/ssl/t1_lib.c +1064 -764
- data/third_party/boringssl/ssl/tls13_both.c +290 -96
- data/third_party/boringssl/ssl/tls13_client.c +344 -314
- data/third_party/boringssl/ssl/tls13_enc.c +239 -200
- data/third_party/boringssl/ssl/tls13_server.c +374 -366
- data/third_party/boringssl/ssl/tls_method.c +40 -5
- data/third_party/boringssl/ssl/tls_record.c +166 -71
- metadata +39 -25
- data/src/core/lib/iomgr/workqueue.h +0 -87
- data/src/core/lib/iomgr/workqueue_uv.c +0 -65
- data/src/core/lib/iomgr/workqueue_uv.h +0 -37
- data/src/core/lib/iomgr/workqueue_windows.c +0 -63
- data/src/core/lib/iomgr/workqueue_windows.h +0 -37
- data/third_party/boringssl/crypto/bio/buffer.c +0 -496
- data/third_party/boringssl/crypto/newhope/error_correction.c +0 -131
- data/third_party/boringssl/crypto/newhope/internal.h +0 -71
- data/third_party/boringssl/crypto/newhope/newhope.c +0 -174
- data/third_party/boringssl/crypto/newhope/ntt.c +0 -148
- data/third_party/boringssl/crypto/newhope/poly.c +0 -183
- data/third_party/boringssl/crypto/newhope/precomp.c +0 -306
- data/third_party/boringssl/crypto/obj/obj_xref.h +0 -96
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +0 -151
- data/third_party/boringssl/include/openssl/newhope.h +0 -158
- data/third_party/boringssl/include/openssl/time_support.h +0 -91
@@ -1,33 +1,18 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2017
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2017 gRPC authors.
|
5
4
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
9
8
|
*
|
10
|
-
*
|
11
|
-
* notice, this list of conditions and the following disclaimer.
|
12
|
-
* * Redistributions in binary form must reproduce the above
|
13
|
-
* copyright notice, this list of conditions and the following disclaimer
|
14
|
-
* in the documentation and/or other materials provided with the
|
15
|
-
* distribution.
|
16
|
-
* * Neither the name of Google Inc. nor the names of its
|
17
|
-
* contributors may be used to endorse or promote products derived from
|
18
|
-
* this software without specific prior written permission.
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
10
|
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
31
16
|
*
|
32
17
|
*/
|
33
18
|
|
@@ -1,33 +1,18 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2017
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2017 gRPC authors.
|
5
4
|
*
|
6
|
-
*
|
7
|
-
*
|
8
|
-
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
9
8
|
*
|
10
|
-
*
|
11
|
-
* notice, this list of conditions and the following disclaimer.
|
12
|
-
* * Redistributions in binary form must reproduce the above
|
13
|
-
* copyright notice, this list of conditions and the following disclaimer
|
14
|
-
* in the documentation and/or other materials provided with the
|
15
|
-
* distribution.
|
16
|
-
* * Neither the name of Google Inc. nor the names of its
|
17
|
-
* contributors may be used to endorse or promote products derived from
|
18
|
-
* this software without specific prior written permission.
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
10
|
*
|
20
|
-
*
|
21
|
-
*
|
22
|
-
*
|
23
|
-
*
|
24
|
-
*
|
25
|
-
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
-
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
-
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
-
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
-
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
31
16
|
*
|
32
17
|
*/
|
33
18
|
|
@@ -59,7 +44,6 @@
|
|
59
44
|
#include "src/core/lib/iomgr/sys_epoll_wrapper.h"
|
60
45
|
#include "src/core/lib/iomgr/timer.h"
|
61
46
|
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
|
62
|
-
#include "src/core/lib/iomgr/workqueue.h"
|
63
47
|
#include "src/core/lib/profiling/timers.h"
|
64
48
|
#include "src/core/lib/support/block_annotate.h"
|
65
49
|
#include "src/core/lib/support/spinlock.h"
|
@@ -119,6 +103,32 @@ typedef struct pollable {
|
|
119
103
|
grpc_pollset_worker *root_worker;
|
120
104
|
} pollable;
|
121
105
|
|
106
|
+
static const char *polling_obj_type_string(polling_obj_type t) {
|
107
|
+
switch (t) {
|
108
|
+
case PO_POLLING_GROUP:
|
109
|
+
return "polling_group";
|
110
|
+
case PO_POLLSET_SET:
|
111
|
+
return "pollset_set";
|
112
|
+
case PO_POLLSET:
|
113
|
+
return "pollset";
|
114
|
+
case PO_FD:
|
115
|
+
return "fd";
|
116
|
+
case PO_EMPTY_POLLABLE:
|
117
|
+
return "empty_pollable";
|
118
|
+
case PO_COUNT:
|
119
|
+
return "<invalid:count>";
|
120
|
+
}
|
121
|
+
return "<invalid>";
|
122
|
+
}
|
123
|
+
|
124
|
+
static char *pollable_desc(pollable *p) {
|
125
|
+
char *out;
|
126
|
+
gpr_asprintf(&out, "type=%s group=%p epfd=%d wakeup=%d",
|
127
|
+
polling_obj_type_string(p->po.type), p->po.group, p->epfd,
|
128
|
+
p->wakeup.read_fd);
|
129
|
+
return out;
|
130
|
+
}
|
131
|
+
|
122
132
|
static pollable g_empty_pollable;
|
123
133
|
|
124
134
|
static void pollable_init(pollable *p, polling_obj_type type);
|
@@ -139,17 +149,6 @@ struct grpc_fd {
|
|
139
149
|
Ref/Unref by two to avoid altering the orphaned bit */
|
140
150
|
gpr_atm refst;
|
141
151
|
|
142
|
-
/* Wakeup fd used to wake pollers to check the contents of workqueue_items */
|
143
|
-
grpc_wakeup_fd workqueue_wakeup_fd;
|
144
|
-
grpc_closure_scheduler workqueue_scheduler;
|
145
|
-
/* Spinlock guarding the read end of the workqueue (must be held to pop from
|
146
|
-
* workqueue_items) */
|
147
|
-
gpr_spinlock workqueue_read_mu;
|
148
|
-
/* Queue of closures to be executed */
|
149
|
-
gpr_mpscq workqueue_items;
|
150
|
-
/* Count of items in workqueue_items */
|
151
|
-
gpr_atm workqueue_item_count;
|
152
|
-
|
153
152
|
/* The fd is either closed or we relinquished control of it. In either
|
154
153
|
cases, this indicates that the 'fd' on this structure is no longer
|
155
154
|
valid */
|
@@ -172,12 +171,6 @@ struct grpc_fd {
|
|
172
171
|
static void fd_global_init(void);
|
173
172
|
static void fd_global_shutdown(void);
|
174
173
|
|
175
|
-
static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
176
|
-
grpc_error *error);
|
177
|
-
|
178
|
-
static const grpc_closure_scheduler_vtable workqueue_scheduler_vtable = {
|
179
|
-
workqueue_enqueue, workqueue_enqueue, "workqueue"};
|
180
|
-
|
181
174
|
/*******************************************************************************
|
182
175
|
* Pollset Declarations
|
183
176
|
*/
|
@@ -202,12 +195,20 @@ struct grpc_pollset_worker {
|
|
202
195
|
pollable *pollable;
|
203
196
|
};
|
204
197
|
|
198
|
+
#define MAX_EPOLL_EVENTS 100
|
199
|
+
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL 5
|
200
|
+
|
205
201
|
struct grpc_pollset {
|
206
202
|
pollable pollable;
|
207
203
|
pollable *current_pollable;
|
204
|
+
int kick_alls_pending;
|
208
205
|
bool kicked_without_poller;
|
209
206
|
grpc_closure *shutdown_closure;
|
210
207
|
grpc_pollset_worker *root_worker;
|
208
|
+
|
209
|
+
int event_cursor;
|
210
|
+
int event_count;
|
211
|
+
struct epoll_event events[MAX_EPOLL_EVENTS];
|
211
212
|
};
|
212
213
|
|
213
214
|
/*******************************************************************************
|
@@ -256,15 +257,18 @@ static bool append_error(grpc_error **composite, grpc_error *error,
|
|
256
257
|
static grpc_fd *fd_freelist = NULL;
|
257
258
|
static gpr_mu fd_freelist_mu;
|
258
259
|
|
259
|
-
#
|
260
|
+
#ifndef NDEBUG
|
260
261
|
#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
|
261
262
|
#define UNREF_BY(ec, fd, n, reason) \
|
262
263
|
unref_by(ec, fd, n, reason, __FILE__, __LINE__)
|
263
264
|
static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file,
|
264
265
|
int line) {
|
265
|
-
|
266
|
-
|
267
|
-
|
266
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
267
|
+
gpr_log(GPR_DEBUG,
|
268
|
+
"FD %d %p ref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
269
|
+
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
270
|
+
gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
|
271
|
+
}
|
268
272
|
#else
|
269
273
|
#define REF_BY(fd, n, reason) ref_by(fd, n)
|
270
274
|
#define UNREF_BY(ec, fd, n, reason) unref_by(ec, fd, n)
|
@@ -289,20 +293,21 @@ static void fd_destroy(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
289
293
|
gpr_mu_unlock(&fd_freelist_mu);
|
290
294
|
}
|
291
295
|
|
292
|
-
#
|
296
|
+
#ifndef NDEBUG
|
293
297
|
static void unref_by(grpc_exec_ctx *exec_ctx, grpc_fd *fd, int n,
|
294
298
|
const char *reason, const char *file, int line) {
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
300
|
+
gpr_log(GPR_DEBUG,
|
301
|
+
"FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
302
|
+
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
303
|
+
gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
|
304
|
+
}
|
299
305
|
#else
|
300
306
|
static void unref_by(grpc_exec_ctx *exec_ctx, grpc_fd *fd, int n) {
|
301
|
-
gpr_atm old;
|
302
307
|
#endif
|
303
|
-
old = gpr_atm_full_fetch_add(&fd->refst, -n);
|
308
|
+
gpr_atm old = gpr_atm_full_fetch_add(&fd->refst, -n);
|
304
309
|
if (old == n) {
|
305
|
-
|
310
|
+
GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(fd_destroy, fd,
|
306
311
|
grpc_schedule_on_exec_ctx),
|
307
312
|
GRPC_ERROR_NONE);
|
308
313
|
} else {
|
@@ -347,21 +352,16 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|
347
352
|
grpc_lfev_init(&new_fd->write_closure);
|
348
353
|
gpr_atm_no_barrier_store(&new_fd->read_notifier_pollset, (gpr_atm)NULL);
|
349
354
|
|
350
|
-
GRPC_LOG_IF_ERROR("fd_create",
|
351
|
-
grpc_wakeup_fd_init(&new_fd->workqueue_wakeup_fd));
|
352
|
-
new_fd->workqueue_scheduler.vtable = &workqueue_scheduler_vtable;
|
353
|
-
new_fd->workqueue_read_mu = GPR_SPINLOCK_INITIALIZER;
|
354
|
-
gpr_mpscq_init(&new_fd->workqueue_items);
|
355
|
-
gpr_atm_no_barrier_store(&new_fd->workqueue_item_count, 0);
|
356
|
-
|
357
355
|
new_fd->freelist_next = NULL;
|
358
356
|
new_fd->on_done_closure = NULL;
|
359
357
|
|
360
358
|
char *fd_name;
|
361
359
|
gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
|
362
360
|
grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
|
363
|
-
#
|
364
|
-
|
361
|
+
#ifndef NDEBUG
|
362
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
363
|
+
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, new_fd, fd_name);
|
364
|
+
}
|
365
365
|
#endif
|
366
366
|
gpr_free(fd_name);
|
367
367
|
return new_fd;
|
@@ -380,8 +380,8 @@ static int fd_wrapped_fd(grpc_fd *fd) {
|
|
380
380
|
|
381
381
|
static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
382
382
|
grpc_closure *on_done, int *release_fd,
|
383
|
-
const char *reason) {
|
384
|
-
bool is_fd_closed =
|
383
|
+
bool already_closed, const char *reason) {
|
384
|
+
bool is_fd_closed = already_closed;
|
385
385
|
grpc_error *error = GRPC_ERROR_NONE;
|
386
386
|
|
387
387
|
gpr_mu_lock(&fd->pollable.po.mu);
|
@@ -392,7 +392,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
392
392
|
descriptor fd->fd (but we still own the grpc_fd structure). */
|
393
393
|
if (release_fd != NULL) {
|
394
394
|
*release_fd = fd->fd;
|
395
|
-
} else {
|
395
|
+
} else if (!is_fd_closed) {
|
396
396
|
close(fd->fd);
|
397
397
|
is_fd_closed = true;
|
398
398
|
}
|
@@ -407,7 +407,7 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
407
407
|
to be alive (and not added to freelist) until the end of this function */
|
408
408
|
REF_BY(fd, 1, reason);
|
409
409
|
|
410
|
-
|
410
|
+
GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error));
|
411
411
|
|
412
412
|
gpr_mu_unlock(&fd->orphaned_mu);
|
413
413
|
gpr_mu_unlock(&fd->pollable.po.mu);
|
@@ -438,97 +438,12 @@ static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) {
|
|
438
438
|
|
439
439
|
static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
440
440
|
grpc_closure *closure) {
|
441
|
-
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure);
|
441
|
+
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read");
|
442
442
|
}
|
443
443
|
|
444
444
|
static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
445
445
|
grpc_closure *closure) {
|
446
|
-
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure);
|
447
|
-
}
|
448
|
-
|
449
|
-
static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
|
450
|
-
REF_BY(fd, 2, "return_workqueue");
|
451
|
-
return (grpc_workqueue *)fd;
|
452
|
-
}
|
453
|
-
|
454
|
-
#ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG
|
455
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue,
|
456
|
-
const char *file, int line,
|
457
|
-
const char *reason) {
|
458
|
-
if (workqueue != NULL) {
|
459
|
-
ref_by((grpc_fd *)workqueue, 2, file, line, reason);
|
460
|
-
}
|
461
|
-
return workqueue;
|
462
|
-
}
|
463
|
-
|
464
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx, grpc_workqueue *workqueue,
|
465
|
-
const char *file, int line, const char *reason) {
|
466
|
-
if (workqueue != NULL) {
|
467
|
-
unref_by(exec_ctx, (grpc_fd *)workqueue, 2, file, line, reason);
|
468
|
-
}
|
469
|
-
}
|
470
|
-
#else
|
471
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue) {
|
472
|
-
if (workqueue != NULL) {
|
473
|
-
ref_by((grpc_fd *)workqueue, 2);
|
474
|
-
}
|
475
|
-
return workqueue;
|
476
|
-
}
|
477
|
-
|
478
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx,
|
479
|
-
grpc_workqueue *workqueue) {
|
480
|
-
if (workqueue != NULL) {
|
481
|
-
unref_by(exec_ctx, (grpc_fd *)workqueue, 2);
|
482
|
-
}
|
483
|
-
}
|
484
|
-
#endif
|
485
|
-
|
486
|
-
static void workqueue_wakeup(grpc_fd *fd) {
|
487
|
-
GRPC_LOG_IF_ERROR("workqueue_enqueue",
|
488
|
-
grpc_wakeup_fd_wakeup(&fd->workqueue_wakeup_fd));
|
489
|
-
}
|
490
|
-
|
491
|
-
static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
492
|
-
grpc_error *error) {
|
493
|
-
GPR_TIMER_BEGIN("workqueue.enqueue", 0);
|
494
|
-
grpc_fd *fd = (grpc_fd *)(((char *)closure->scheduler) -
|
495
|
-
offsetof(grpc_fd, workqueue_scheduler));
|
496
|
-
REF_BY(fd, 2, "workqueue_enqueue");
|
497
|
-
gpr_atm last = gpr_atm_no_barrier_fetch_add(&fd->workqueue_item_count, 1);
|
498
|
-
closure->error_data.error = error;
|
499
|
-
gpr_mpscq_push(&fd->workqueue_items, &closure->next_data.atm_next);
|
500
|
-
if (last == 0) {
|
501
|
-
workqueue_wakeup(fd);
|
502
|
-
}
|
503
|
-
UNREF_BY(exec_ctx, fd, 2, "workqueue_enqueue");
|
504
|
-
}
|
505
|
-
|
506
|
-
static void fd_invoke_workqueue(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
507
|
-
/* handle spurious wakeups */
|
508
|
-
if (!gpr_spinlock_trylock(&fd->workqueue_read_mu)) return;
|
509
|
-
gpr_mpscq_node *n = gpr_mpscq_pop(&fd->workqueue_items);
|
510
|
-
gpr_spinlock_unlock(&fd->workqueue_read_mu);
|
511
|
-
if (n != NULL) {
|
512
|
-
if (gpr_atm_full_fetch_add(&fd->workqueue_item_count, -1) > 1) {
|
513
|
-
workqueue_wakeup(fd);
|
514
|
-
}
|
515
|
-
grpc_closure *c = (grpc_closure *)n;
|
516
|
-
grpc_error *error = c->error_data.error;
|
517
|
-
#ifndef NDEBUG
|
518
|
-
c->scheduled = false;
|
519
|
-
#endif
|
520
|
-
c->cb(exec_ctx, c->cb_arg, error);
|
521
|
-
GRPC_ERROR_UNREF(error);
|
522
|
-
} else if (gpr_atm_no_barrier_load(&fd->workqueue_item_count) > 0) {
|
523
|
-
/* n == NULL might mean there's work but it's not available to be popped
|
524
|
-
* yet - try to ensure another workqueue wakes up to check shortly if so
|
525
|
-
*/
|
526
|
-
workqueue_wakeup(fd);
|
527
|
-
}
|
528
|
-
}
|
529
|
-
|
530
|
-
static grpc_closure_scheduler *workqueue_scheduler(grpc_workqueue *workqueue) {
|
531
|
-
return &((grpc_fd *)workqueue)->workqueue_scheduler;
|
446
|
+
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write");
|
532
447
|
}
|
533
448
|
|
534
449
|
/*******************************************************************************
|
@@ -562,7 +477,7 @@ static grpc_error *pollable_materialize(pollable *p) {
|
|
562
477
|
return err;
|
563
478
|
}
|
564
479
|
struct epoll_event ev = {.events = (uint32_t)(EPOLLIN | EPOLLET),
|
565
|
-
.data.ptr = &p->wakeup};
|
480
|
+
.data.ptr = (void *)(1 | (intptr_t)&p->wakeup)};
|
566
481
|
if (epoll_ctl(new_epfd, EPOLL_CTL_ADD, p->wakeup.read_fd, &ev) != 0) {
|
567
482
|
err = GRPC_OS_ERROR(errno, "epoll_ctl");
|
568
483
|
close(new_epfd);
|
@@ -583,7 +498,7 @@ static grpc_error *pollable_add_fd(pollable *p, grpc_fd *fd) {
|
|
583
498
|
GPR_ASSERT(epfd != -1);
|
584
499
|
|
585
500
|
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
586
|
-
gpr_log(GPR_DEBUG, "add fd %p to pollable %p", fd, p);
|
501
|
+
gpr_log(GPR_DEBUG, "add fd %p (%d) to pollable %p", fd, fd->fd, p);
|
587
502
|
}
|
588
503
|
|
589
504
|
gpr_mu_lock(&fd->orphaned_mu);
|
@@ -596,22 +511,7 @@ static grpc_error *pollable_add_fd(pollable *p, grpc_fd *fd) {
|
|
596
511
|
.data.ptr = fd};
|
597
512
|
if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd->fd, &ev_fd) != 0) {
|
598
513
|
switch (errno) {
|
599
|
-
case EEXIST:
|
600
|
-
must also be - just return */
|
601
|
-
gpr_mu_unlock(&fd->orphaned_mu);
|
602
|
-
return GRPC_ERROR_NONE;
|
603
|
-
default:
|
604
|
-
append_error(&error, GRPC_OS_ERROR(errno, "epoll_ctl"), err_desc);
|
605
|
-
}
|
606
|
-
}
|
607
|
-
struct epoll_event ev_wq = {
|
608
|
-
.events = (uint32_t)(EPOLLET | EPOLLIN | EPOLLEXCLUSIVE),
|
609
|
-
.data.ptr = (void *)(1 + (intptr_t)fd)};
|
610
|
-
if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd->workqueue_wakeup_fd.read_fd, &ev_wq) !=
|
611
|
-
0) {
|
612
|
-
switch (errno) {
|
613
|
-
case EEXIST: /* if the workqueue fd is already in the epoll set we're ok
|
614
|
-
- no need to do anything special */
|
514
|
+
case EEXIST:
|
615
515
|
break;
|
616
516
|
default:
|
617
517
|
append_error(&error, GRPC_OS_ERROR(errno, "epoll_ctl"), err_desc);
|
@@ -643,18 +543,38 @@ static void pollset_global_shutdown(void) {
|
|
643
543
|
gpr_tls_destroy(&g_current_thread_worker);
|
644
544
|
}
|
645
545
|
|
646
|
-
static
|
546
|
+
static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
|
547
|
+
grpc_pollset *pollset) {
|
548
|
+
if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL &&
|
549
|
+
pollset->kick_alls_pending == 0) {
|
550
|
+
GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE);
|
551
|
+
pollset->shutdown_closure = NULL;
|
552
|
+
}
|
553
|
+
}
|
554
|
+
|
555
|
+
static void do_kick_all(grpc_exec_ctx *exec_ctx, void *arg,
|
556
|
+
grpc_error *error_unused) {
|
647
557
|
grpc_error *error = GRPC_ERROR_NONE;
|
558
|
+
grpc_pollset *pollset = arg;
|
559
|
+
gpr_mu_lock(&pollset->pollable.po.mu);
|
648
560
|
if (pollset->root_worker != NULL) {
|
649
561
|
grpc_pollset_worker *worker = pollset->root_worker;
|
650
562
|
do {
|
651
563
|
if (worker->pollable != &pollset->pollable) {
|
652
564
|
gpr_mu_lock(&worker->pollable->po.mu);
|
653
565
|
}
|
654
|
-
if (worker->initialized_cv) {
|
566
|
+
if (worker->initialized_cv && worker != pollset->root_worker) {
|
567
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
568
|
+
gpr_log(GPR_DEBUG, "PS:%p kickall_via_cv %p (pollable %p vs %p)",
|
569
|
+
pollset, worker, &pollset->pollable, worker->pollable);
|
570
|
+
}
|
655
571
|
worker->kicked = true;
|
656
572
|
gpr_cv_signal(&worker->cv);
|
657
573
|
} else {
|
574
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
575
|
+
gpr_log(GPR_DEBUG, "PS:%p kickall_via_wakeup %p (pollable %p vs %p)",
|
576
|
+
pollset, worker, &pollset->pollable, worker->pollable);
|
577
|
+
}
|
658
578
|
append_error(&error, grpc_wakeup_fd_wakeup(&worker->pollable->wakeup),
|
659
579
|
"pollset_shutdown");
|
660
580
|
}
|
@@ -665,7 +585,17 @@ static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
|
|
665
585
|
worker = worker->links[PWL_POLLSET].next;
|
666
586
|
} while (worker != pollset->root_worker);
|
667
587
|
}
|
668
|
-
|
588
|
+
pollset->kick_alls_pending--;
|
589
|
+
pollset_maybe_finish_shutdown(exec_ctx, pollset);
|
590
|
+
gpr_mu_unlock(&pollset->pollable.po.mu);
|
591
|
+
GRPC_LOG_IF_ERROR("kick_all", error);
|
592
|
+
}
|
593
|
+
|
594
|
+
static void pollset_kick_all(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
|
595
|
+
pollset->kick_alls_pending++;
|
596
|
+
GRPC_CLOSURE_SCHED(exec_ctx, GRPC_CLOSURE_CREATE(do_kick_all, pollset,
|
597
|
+
grpc_schedule_on_exec_ctx),
|
598
|
+
GRPC_ERROR_NONE);
|
669
599
|
}
|
670
600
|
|
671
601
|
static grpc_error *pollset_kick_inner(grpc_pollset *pollset, pollable *p,
|
@@ -780,7 +710,7 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
|
|
780
710
|
|
781
711
|
static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
782
712
|
grpc_pollset *notifier) {
|
783
|
-
grpc_lfev_set_ready(exec_ctx, &fd->read_closure);
|
713
|
+
grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read");
|
784
714
|
|
785
715
|
/* Note, it is possible that fd_become_readable might be called twice with
|
786
716
|
different 'notifier's when an fd becomes readable and it is in two epoll
|
@@ -792,7 +722,7 @@ static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
792
722
|
}
|
793
723
|
|
794
724
|
static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
795
|
-
grpc_lfev_set_ready(exec_ctx, &fd->write_closure);
|
725
|
+
grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write");
|
796
726
|
}
|
797
727
|
|
798
728
|
static grpc_error *fd_become_pollable_locked(grpc_fd *fd) {
|
@@ -804,20 +734,12 @@ static grpc_error *fd_become_pollable_locked(grpc_fd *fd) {
|
|
804
734
|
return error;
|
805
735
|
}
|
806
736
|
|
807
|
-
static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
|
808
|
-
grpc_pollset *pollset) {
|
809
|
-
if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL) {
|
810
|
-
grpc_closure_sched(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE);
|
811
|
-
pollset->shutdown_closure = NULL;
|
812
|
-
}
|
813
|
-
}
|
814
|
-
|
815
737
|
/* pollset->po.mu lock must be held by the caller before calling this */
|
816
738
|
static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
817
739
|
grpc_closure *closure) {
|
818
740
|
GPR_ASSERT(pollset->shutdown_closure == NULL);
|
819
741
|
pollset->shutdown_closure = closure;
|
820
|
-
|
742
|
+
pollset_kick_all(exec_ctx, pollset);
|
821
743
|
pollset_maybe_finish_shutdown(exec_ctx, pollset);
|
822
744
|
}
|
823
745
|
|
@@ -825,6 +747,46 @@ static bool pollset_is_pollable_fd(grpc_pollset *pollset, pollable *p) {
|
|
825
747
|
return p != &g_empty_pollable && p != &pollset->pollable;
|
826
748
|
}
|
827
749
|
|
750
|
+
static grpc_error *pollset_process_events(grpc_exec_ctx *exec_ctx,
|
751
|
+
grpc_pollset *pollset, bool drain) {
|
752
|
+
static const char *err_desc = "pollset_process_events";
|
753
|
+
grpc_error *error = GRPC_ERROR_NONE;
|
754
|
+
for (int i = 0; (drain || i < MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) &&
|
755
|
+
pollset->event_cursor != pollset->event_count;
|
756
|
+
i++) {
|
757
|
+
int n = pollset->event_cursor++;
|
758
|
+
struct epoll_event *ev = &pollset->events[n];
|
759
|
+
void *data_ptr = ev->data.ptr;
|
760
|
+
if (1 & (intptr_t)data_ptr) {
|
761
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
762
|
+
gpr_log(GPR_DEBUG, "PS:%p got pollset_wakeup %p", pollset, data_ptr);
|
763
|
+
}
|
764
|
+
append_error(&error, grpc_wakeup_fd_consume_wakeup(
|
765
|
+
(void *)((~(intptr_t)1) & (intptr_t)data_ptr)),
|
766
|
+
err_desc);
|
767
|
+
} else {
|
768
|
+
grpc_fd *fd = (grpc_fd *)data_ptr;
|
769
|
+
bool cancel = (ev->events & (EPOLLERR | EPOLLHUP)) != 0;
|
770
|
+
bool read_ev = (ev->events & (EPOLLIN | EPOLLPRI)) != 0;
|
771
|
+
bool write_ev = (ev->events & EPOLLOUT) != 0;
|
772
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
773
|
+
gpr_log(GPR_DEBUG,
|
774
|
+
"PS:%p got fd %p: cancel=%d read=%d "
|
775
|
+
"write=%d",
|
776
|
+
pollset, fd, cancel, read_ev, write_ev);
|
777
|
+
}
|
778
|
+
if (read_ev || cancel) {
|
779
|
+
fd_become_readable(exec_ctx, fd, pollset);
|
780
|
+
}
|
781
|
+
if (write_ev || cancel) {
|
782
|
+
fd_become_writable(exec_ctx, fd);
|
783
|
+
}
|
784
|
+
}
|
785
|
+
}
|
786
|
+
|
787
|
+
return error;
|
788
|
+
}
|
789
|
+
|
828
790
|
/* pollset_shutdown is guaranteed to be called before pollset_destroy. */
|
829
791
|
static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
|
830
792
|
pollable_destroy(&pollset->pollable);
|
@@ -832,20 +794,19 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
|
|
832
794
|
UNREF_BY(exec_ctx, (grpc_fd *)pollset->current_pollable, 2,
|
833
795
|
"pollset_pollable");
|
834
796
|
}
|
797
|
+
GRPC_LOG_IF_ERROR("pollset_process_events",
|
798
|
+
pollset_process_events(exec_ctx, pollset, true));
|
835
799
|
}
|
836
800
|
|
837
|
-
#define MAX_EPOLL_EVENTS 100
|
838
|
-
|
839
801
|
static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
840
802
|
pollable *p, gpr_timespec now,
|
841
803
|
gpr_timespec deadline) {
|
842
|
-
struct epoll_event events[MAX_EPOLL_EVENTS];
|
843
|
-
static const char *err_desc = "pollset_poll";
|
844
|
-
|
845
804
|
int timeout = poll_deadline_to_millis_timeout(deadline, now);
|
846
805
|
|
847
806
|
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
848
|
-
|
807
|
+
char *desc = pollable_desc(p);
|
808
|
+
gpr_log(GPR_DEBUG, "PS:%p poll %p[%s] for %dms", pollset, p, desc, timeout);
|
809
|
+
gpr_free(desc);
|
849
810
|
}
|
850
811
|
|
851
812
|
if (timeout != 0) {
|
@@ -853,7 +814,7 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
853
814
|
}
|
854
815
|
int r;
|
855
816
|
do {
|
856
|
-
r = epoll_wait(p->epfd, events, MAX_EPOLL_EVENTS, timeout);
|
817
|
+
r = epoll_wait(p->epfd, pollset->events, MAX_EPOLL_EVENTS, timeout);
|
857
818
|
} while (r < 0 && errno == EINTR);
|
858
819
|
if (timeout != 0) {
|
859
820
|
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
@@ -865,43 +826,10 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
865
826
|
gpr_log(GPR_DEBUG, "PS:%p poll %p got %d events", pollset, p, r);
|
866
827
|
}
|
867
828
|
|
868
|
-
|
869
|
-
|
870
|
-
void *data_ptr = events[i].data.ptr;
|
871
|
-
if (data_ptr == &p->wakeup) {
|
872
|
-
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
873
|
-
gpr_log(GPR_DEBUG, "PS:%p poll %p got pollset_wakeup", pollset, p);
|
874
|
-
}
|
875
|
-
append_error(&error, grpc_wakeup_fd_consume_wakeup(&p->wakeup), err_desc);
|
876
|
-
} else {
|
877
|
-
grpc_fd *fd = (grpc_fd *)(((intptr_t)data_ptr) & ~(intptr_t)1);
|
878
|
-
bool is_workqueue = (((intptr_t)data_ptr) & 1) != 0;
|
879
|
-
bool cancel = (events[i].events & (EPOLLERR | EPOLLHUP)) != 0;
|
880
|
-
bool read_ev = (events[i].events & (EPOLLIN | EPOLLPRI)) != 0;
|
881
|
-
bool write_ev = (events[i].events & EPOLLOUT) != 0;
|
882
|
-
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
883
|
-
gpr_log(GPR_DEBUG,
|
884
|
-
"PS:%p poll %p got fd %p: is_wq=%d cancel=%d read=%d "
|
885
|
-
"write=%d",
|
886
|
-
pollset, p, fd, is_workqueue, cancel, read_ev, write_ev);
|
887
|
-
}
|
888
|
-
if (is_workqueue) {
|
889
|
-
append_error(&error,
|
890
|
-
grpc_wakeup_fd_consume_wakeup(&fd->workqueue_wakeup_fd),
|
891
|
-
err_desc);
|
892
|
-
fd_invoke_workqueue(exec_ctx, fd);
|
893
|
-
} else {
|
894
|
-
if (read_ev || cancel) {
|
895
|
-
fd_become_readable(exec_ctx, fd, pollset);
|
896
|
-
}
|
897
|
-
if (write_ev || cancel) {
|
898
|
-
fd_become_writable(exec_ctx, fd);
|
899
|
-
}
|
900
|
-
}
|
901
|
-
}
|
902
|
-
}
|
829
|
+
pollset->event_cursor = 0;
|
830
|
+
pollset->event_count = r;
|
903
831
|
|
904
|
-
return
|
832
|
+
return GRPC_ERROR_NONE;
|
905
833
|
}
|
906
834
|
|
907
835
|
/* Return true if first in list */
|
@@ -1053,10 +981,13 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
1053
981
|
gpr_mu_unlock(&worker.pollable->po.mu);
|
1054
982
|
}
|
1055
983
|
gpr_mu_unlock(&pollset->pollable.po.mu);
|
1056
|
-
|
1057
|
-
|
984
|
+
if (pollset->event_cursor == pollset->event_count) {
|
985
|
+
append_error(&error, pollset_epoll(exec_ctx, pollset, worker.pollable,
|
986
|
+
now, deadline),
|
987
|
+
err_desc);
|
988
|
+
}
|
989
|
+
append_error(&error, pollset_process_events(exec_ctx, pollset, false),
|
1058
990
|
err_desc);
|
1059
|
-
grpc_exec_ctx_flush(exec_ctx);
|
1060
991
|
gpr_mu_lock(&pollset->pollable.po.mu);
|
1061
992
|
if (worker.pollable != &pollset->pollable) {
|
1062
993
|
gpr_mu_lock(&worker.pollable->po.mu);
|
@@ -1069,6 +1000,11 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
1069
1000
|
if (worker.pollable != &pollset->pollable) {
|
1070
1001
|
gpr_mu_unlock(&worker.pollable->po.mu);
|
1071
1002
|
}
|
1003
|
+
if (grpc_exec_ctx_has_work(exec_ctx)) {
|
1004
|
+
gpr_mu_unlock(&pollset->pollable.po.mu);
|
1005
|
+
grpc_exec_ctx_flush(exec_ctx);
|
1006
|
+
gpr_mu_lock(&pollset->pollable.po.mu);
|
1007
|
+
}
|
1072
1008
|
return error;
|
1073
1009
|
}
|
1074
1010
|
|
@@ -1085,37 +1021,45 @@ static grpc_error *pollset_add_fd_locked(grpc_exec_ctx *exec_ctx,
|
|
1085
1021
|
static const char *err_desc = "pollset_add_fd";
|
1086
1022
|
grpc_error *error = GRPC_ERROR_NONE;
|
1087
1023
|
if (pollset->current_pollable == &g_empty_pollable) {
|
1088
|
-
if (GRPC_TRACER_ON(grpc_polling_trace))
|
1024
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
1089
1025
|
gpr_log(GPR_DEBUG,
|
1090
1026
|
"PS:%p add fd %p; transition pollable from empty to fd", pollset,
|
1091
1027
|
fd);
|
1028
|
+
}
|
1092
1029
|
/* empty pollable --> single fd pollable */
|
1093
|
-
|
1030
|
+
pollset_kick_all(exec_ctx, pollset);
|
1094
1031
|
pollset->current_pollable = &fd->pollable;
|
1095
1032
|
if (!fd_locked) gpr_mu_lock(&fd->pollable.po.mu);
|
1096
1033
|
append_error(&error, fd_become_pollable_locked(fd), err_desc);
|
1097
1034
|
if (!fd_locked) gpr_mu_unlock(&fd->pollable.po.mu);
|
1098
1035
|
REF_BY(fd, 2, "pollset_pollable");
|
1099
1036
|
} else if (pollset->current_pollable == &pollset->pollable) {
|
1100
|
-
if (GRPC_TRACER_ON(grpc_polling_trace))
|
1037
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
1101
1038
|
gpr_log(GPR_DEBUG, "PS:%p add fd %p; already multipolling", pollset, fd);
|
1039
|
+
}
|
1102
1040
|
append_error(&error, pollable_add_fd(pollset->current_pollable, fd),
|
1103
1041
|
err_desc);
|
1104
1042
|
} else if (pollset->current_pollable != &fd->pollable) {
|
1105
1043
|
grpc_fd *had_fd = (grpc_fd *)pollset->current_pollable;
|
1106
|
-
if (GRPC_TRACER_ON(grpc_polling_trace))
|
1044
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
1107
1045
|
gpr_log(GPR_DEBUG,
|
1108
1046
|
"PS:%p add fd %p; transition pollable from fd %p to multipoller",
|
1109
1047
|
pollset, fd, had_fd);
|
1110
|
-
|
1048
|
+
}
|
1049
|
+
/* Introduce a spurious completion.
|
1050
|
+
If we do not, then it may be that the fd-specific epoll set consumed
|
1051
|
+
a completion without being polled, leading to a missed edge going up. */
|
1052
|
+
grpc_lfev_set_ready(exec_ctx, &had_fd->read_closure, "read");
|
1053
|
+
grpc_lfev_set_ready(exec_ctx, &had_fd->write_closure, "write");
|
1054
|
+
pollset_kick_all(exec_ctx, pollset);
|
1111
1055
|
pollset->current_pollable = &pollset->pollable;
|
1112
1056
|
if (append_error(&error, pollable_materialize(&pollset->pollable),
|
1113
1057
|
err_desc)) {
|
1114
1058
|
pollable_add_fd(&pollset->pollable, had_fd);
|
1115
1059
|
pollable_add_fd(&pollset->pollable, fd);
|
1116
1060
|
}
|
1117
|
-
|
1118
|
-
|
1061
|
+
GRPC_CLOSURE_SCHED(exec_ctx,
|
1062
|
+
GRPC_CLOSURE_CREATE(unref_fd_no_longer_poller, had_fd,
|
1119
1063
|
grpc_schedule_on_exec_ctx),
|
1120
1064
|
GRPC_ERROR_NONE);
|
1121
1065
|
}
|
@@ -1449,7 +1393,6 @@ static const grpc_event_engine_vtable vtable = {
|
|
1449
1393
|
.fd_notify_on_read = fd_notify_on_read,
|
1450
1394
|
.fd_notify_on_write = fd_notify_on_write,
|
1451
1395
|
.fd_get_read_notifier_pollset = fd_get_read_notifier_pollset,
|
1452
|
-
.fd_get_workqueue = fd_get_workqueue,
|
1453
1396
|
|
1454
1397
|
.pollset_init = pollset_init,
|
1455
1398
|
.pollset_shutdown = pollset_shutdown,
|
@@ -1467,17 +1410,11 @@ static const grpc_event_engine_vtable vtable = {
|
|
1467
1410
|
.pollset_set_add_fd = pollset_set_add_fd,
|
1468
1411
|
.pollset_set_del_fd = pollset_set_del_fd,
|
1469
1412
|
|
1470
|
-
.workqueue_ref = workqueue_ref,
|
1471
|
-
.workqueue_unref = workqueue_unref,
|
1472
|
-
.workqueue_scheduler = workqueue_scheduler,
|
1473
|
-
|
1474
1413
|
.shutdown_engine = shutdown_engine,
|
1475
1414
|
};
|
1476
1415
|
|
1477
1416
|
const grpc_event_engine_vtable *grpc_init_epollex_linux(
|
1478
1417
|
bool explicitly_requested) {
|
1479
|
-
if (!explicitly_requested) return NULL;
|
1480
|
-
|
1481
1418
|
if (!grpc_has_wakeup_fd()) {
|
1482
1419
|
return NULL;
|
1483
1420
|
}
|