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 2015
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2015 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 2016
|
4
|
-
* All rights reserved.
|
3
|
+
* Copyright 2016 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/lockfree_event.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
|
|
@@ -70,9 +54,6 @@
|
|
70
54
|
gpr_log(GPR_INFO, __VA_ARGS__); \
|
71
55
|
}
|
72
56
|
|
73
|
-
/* Uncomment the following to enable extra checks on poll_object operations */
|
74
|
-
/* #define PO_DEBUG */
|
75
|
-
|
76
57
|
static int grpc_wakeup_signal = -1;
|
77
58
|
static bool is_grpc_wakeup_signal_initialized = false;
|
78
59
|
|
@@ -101,7 +82,7 @@ typedef enum {
|
|
101
82
|
} poll_obj_type;
|
102
83
|
|
103
84
|
typedef struct poll_obj {
|
104
|
-
#
|
85
|
+
#ifndef NDEBUG
|
105
86
|
poll_obj_type obj_type;
|
106
87
|
#endif
|
107
88
|
gpr_mu mu;
|
@@ -156,8 +137,7 @@ struct grpc_fd {
|
|
156
137
|
};
|
157
138
|
|
158
139
|
/* Reference counting for fds */
|
159
|
-
|
160
|
-
#ifdef GRPC_FD_REF_COUNT_DEBUG
|
140
|
+
#ifndef NDEBUG
|
161
141
|
static void fd_ref(grpc_fd *fd, const char *reason, const char *file, int line);
|
162
142
|
static void fd_unref(grpc_fd *fd, const char *reason, const char *file,
|
163
143
|
int line);
|
@@ -177,23 +157,21 @@ static void fd_global_shutdown(void);
|
|
177
157
|
* Polling island Declarations
|
178
158
|
*/
|
179
159
|
|
180
|
-
#
|
160
|
+
#ifndef NDEBUG
|
181
161
|
|
182
162
|
#define PI_ADD_REF(p, r) pi_add_ref_dbg((p), (r), __FILE__, __LINE__)
|
183
163
|
#define PI_UNREF(exec_ctx, p, r) \
|
184
164
|
pi_unref_dbg((exec_ctx), (p), (r), __FILE__, __LINE__)
|
185
165
|
|
186
|
-
#else
|
166
|
+
#else
|
187
167
|
|
188
168
|
#define PI_ADD_REF(p, r) pi_add_ref((p))
|
189
169
|
#define PI_UNREF(exec_ctx, p, r) pi_unref((exec_ctx), (p))
|
190
170
|
|
191
|
-
#endif
|
171
|
+
#endif
|
192
172
|
|
193
173
|
/* This is also used as grpc_workqueue (by directly casing it) */
|
194
174
|
typedef struct polling_island {
|
195
|
-
grpc_closure_scheduler workqueue_scheduler;
|
196
|
-
|
197
175
|
gpr_mu mu;
|
198
176
|
/* Ref count. Use PI_ADD_REF() and PI_UNREF() macros to increment/decrement
|
199
177
|
the refcount.
|
@@ -214,15 +192,6 @@ typedef struct polling_island {
|
|
214
192
|
|
215
193
|
/* Number of threads currently polling on this island */
|
216
194
|
gpr_atm poller_count;
|
217
|
-
/* Mutex guarding the read end of the workqueue (must be held to pop from
|
218
|
-
* workqueue_items) */
|
219
|
-
gpr_mu workqueue_read_mu;
|
220
|
-
/* Queue of closures to be executed */
|
221
|
-
gpr_mpscq workqueue_items;
|
222
|
-
/* Count of items in workqueue_items */
|
223
|
-
gpr_atm workqueue_item_count;
|
224
|
-
/* Wakeup fd used to wake pollers to check the contents of workqueue_items */
|
225
|
-
grpc_wakeup_fd workqueue_wakeup_fd;
|
226
195
|
|
227
196
|
/* The fd of the underlying epoll set */
|
228
197
|
int epoll_fd;
|
@@ -297,8 +266,6 @@ static __thread polling_island *g_current_thread_polling_island;
|
|
297
266
|
|
298
267
|
/* Forward declaration */
|
299
268
|
static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi);
|
300
|
-
static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
301
|
-
grpc_error *error);
|
302
269
|
|
303
270
|
#ifdef GRPC_TSAN
|
304
271
|
/* Currently TSAN may incorrectly flag data races between epoll_ctl and
|
@@ -311,57 +278,30 @@ static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
|
311
278
|
gpr_atm g_epoll_sync;
|
312
279
|
#endif /* defined(GRPC_TSAN) */
|
313
280
|
|
314
|
-
static const grpc_closure_scheduler_vtable workqueue_scheduler_vtable = {
|
315
|
-
workqueue_enqueue, workqueue_enqueue, "workqueue"};
|
316
|
-
|
317
281
|
static void pi_add_ref(polling_island *pi);
|
318
282
|
static void pi_unref(grpc_exec_ctx *exec_ctx, polling_island *pi);
|
319
283
|
|
320
|
-
#
|
284
|
+
#ifndef NDEBUG
|
321
285
|
static void pi_add_ref_dbg(polling_island *pi, const char *reason,
|
322
286
|
const char *file, int line) {
|
323
|
-
|
287
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
288
|
+
gpr_atm old_cnt = gpr_atm_acq_load(&pi->ref_count);
|
289
|
+
gpr_log(GPR_DEBUG, "Add ref pi: %p, old:%" PRIdPTR " -> new:%" PRIdPTR
|
290
|
+
" (%s) - (%s, %d)",
|
291
|
+
pi, old_cnt, old_cnt + 1, reason, file, line);
|
292
|
+
}
|
324
293
|
pi_add_ref(pi);
|
325
|
-
gpr_log(GPR_DEBUG, "Add ref pi: %p, old: %ld -> new:%ld (%s) - (%s, %d)",
|
326
|
-
(void *)pi, old_cnt, old_cnt + 1, reason, file, line);
|
327
294
|
}
|
328
295
|
|
329
296
|
static void pi_unref_dbg(grpc_exec_ctx *exec_ctx, polling_island *pi,
|
330
297
|
const char *reason, const char *file, int line) {
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue,
|
338
|
-
const char *file, int line,
|
339
|
-
const char *reason) {
|
340
|
-
if (workqueue != NULL) {
|
341
|
-
pi_add_ref_dbg((polling_island *)workqueue, reason, file, line);
|
342
|
-
}
|
343
|
-
return workqueue;
|
344
|
-
}
|
345
|
-
|
346
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx, grpc_workqueue *workqueue,
|
347
|
-
const char *file, int line, const char *reason) {
|
348
|
-
if (workqueue != NULL) {
|
349
|
-
pi_unref_dbg(exec_ctx, (polling_island *)workqueue, reason, file, line);
|
350
|
-
}
|
351
|
-
}
|
352
|
-
#else
|
353
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue) {
|
354
|
-
if (workqueue != NULL) {
|
355
|
-
pi_add_ref((polling_island *)workqueue);
|
356
|
-
}
|
357
|
-
return workqueue;
|
358
|
-
}
|
359
|
-
|
360
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx,
|
361
|
-
grpc_workqueue *workqueue) {
|
362
|
-
if (workqueue != NULL) {
|
363
|
-
pi_unref(exec_ctx, (polling_island *)workqueue);
|
298
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
299
|
+
gpr_atm old_cnt = gpr_atm_acq_load(&pi->ref_count);
|
300
|
+
gpr_log(GPR_DEBUG, "Unref pi: %p, old:%" PRIdPTR " -> new:%" PRIdPTR
|
301
|
+
" (%s) - (%s, %d)",
|
302
|
+
pi, old_cnt, (old_cnt - 1), reason, file, line);
|
364
303
|
}
|
304
|
+
pi_unref(exec_ctx, pi);
|
365
305
|
}
|
366
306
|
#endif
|
367
307
|
|
@@ -526,26 +466,16 @@ static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx,
|
|
526
466
|
*error = GRPC_ERROR_NONE;
|
527
467
|
|
528
468
|
pi = gpr_malloc(sizeof(*pi));
|
529
|
-
pi->workqueue_scheduler.vtable = &workqueue_scheduler_vtable;
|
530
469
|
gpr_mu_init(&pi->mu);
|
531
470
|
pi->fd_cnt = 0;
|
532
471
|
pi->fd_capacity = 0;
|
533
472
|
pi->fds = NULL;
|
534
473
|
pi->epoll_fd = -1;
|
535
474
|
|
536
|
-
gpr_mu_init(&pi->workqueue_read_mu);
|
537
|
-
gpr_mpscq_init(&pi->workqueue_items);
|
538
|
-
gpr_atm_rel_store(&pi->workqueue_item_count, 0);
|
539
|
-
|
540
475
|
gpr_atm_rel_store(&pi->ref_count, 0);
|
541
476
|
gpr_atm_rel_store(&pi->poller_count, 0);
|
542
477
|
gpr_atm_rel_store(&pi->merged_to, (gpr_atm)NULL);
|
543
478
|
|
544
|
-
if (!append_error(error, grpc_wakeup_fd_init(&pi->workqueue_wakeup_fd),
|
545
|
-
err_desc)) {
|
546
|
-
goto done;
|
547
|
-
}
|
548
|
-
|
549
479
|
pi->epoll_fd = epoll_create1(EPOLL_CLOEXEC);
|
550
480
|
|
551
481
|
if (pi->epoll_fd < 0) {
|
@@ -553,8 +483,6 @@ static polling_island *polling_island_create(grpc_exec_ctx *exec_ctx,
|
|
553
483
|
goto done;
|
554
484
|
}
|
555
485
|
|
556
|
-
polling_island_add_wakeup_fd_locked(pi, &pi->workqueue_wakeup_fd, error);
|
557
|
-
|
558
486
|
if (initial_fd != NULL) {
|
559
487
|
polling_island_add_fds_locked(pi, &initial_fd, 1, true, error);
|
560
488
|
}
|
@@ -573,11 +501,7 @@ static void polling_island_delete(grpc_exec_ctx *exec_ctx, polling_island *pi) {
|
|
573
501
|
if (pi->epoll_fd >= 0) {
|
574
502
|
close(pi->epoll_fd);
|
575
503
|
}
|
576
|
-
GPR_ASSERT(gpr_atm_no_barrier_load(&pi->workqueue_item_count) == 0);
|
577
|
-
gpr_mu_destroy(&pi->workqueue_read_mu);
|
578
|
-
gpr_mpscq_destroy(&pi->workqueue_items);
|
579
504
|
gpr_mu_destroy(&pi->mu);
|
580
|
-
grpc_wakeup_fd_destroy(&pi->workqueue_wakeup_fd);
|
581
505
|
gpr_free(pi->fds);
|
582
506
|
gpr_free(pi);
|
583
507
|
}
|
@@ -722,45 +646,6 @@ static void polling_island_unlock_pair(polling_island *p, polling_island *q) {
|
|
722
646
|
}
|
723
647
|
}
|
724
648
|
|
725
|
-
static void workqueue_maybe_wakeup(polling_island *pi) {
|
726
|
-
/* If this thread is the current poller, then it may be that it's about to
|
727
|
-
decrement the current poller count, so we need to look past this thread */
|
728
|
-
bool is_current_poller = (g_current_thread_polling_island == pi);
|
729
|
-
gpr_atm min_current_pollers_for_wakeup = is_current_poller ? 1 : 0;
|
730
|
-
gpr_atm current_pollers = gpr_atm_no_barrier_load(&pi->poller_count);
|
731
|
-
/* Only issue a wakeup if it's likely that some poller could come in and take
|
732
|
-
it right now. Note that since we do an anticipatory mpscq_pop every poll
|
733
|
-
loop, it's ok if we miss the wakeup here, as we'll get the work item when
|
734
|
-
the next poller enters anyway. */
|
735
|
-
if (current_pollers >= min_current_pollers_for_wakeup) {
|
736
|
-
GRPC_LOG_IF_ERROR("workqueue_wakeup_fd",
|
737
|
-
grpc_wakeup_fd_wakeup(&pi->workqueue_wakeup_fd));
|
738
|
-
}
|
739
|
-
}
|
740
|
-
|
741
|
-
static void workqueue_move_items_to_parent(polling_island *q) {
|
742
|
-
polling_island *p = (polling_island *)gpr_atm_no_barrier_load(&q->merged_to);
|
743
|
-
if (p == NULL) {
|
744
|
-
return;
|
745
|
-
}
|
746
|
-
gpr_mu_lock(&q->workqueue_read_mu);
|
747
|
-
int num_added = 0;
|
748
|
-
while (gpr_atm_no_barrier_load(&q->workqueue_item_count) > 0) {
|
749
|
-
gpr_mpscq_node *n = gpr_mpscq_pop(&q->workqueue_items);
|
750
|
-
if (n != NULL) {
|
751
|
-
gpr_atm_no_barrier_fetch_add(&q->workqueue_item_count, -1);
|
752
|
-
gpr_atm_no_barrier_fetch_add(&p->workqueue_item_count, 1);
|
753
|
-
gpr_mpscq_push(&p->workqueue_items, n);
|
754
|
-
num_added++;
|
755
|
-
}
|
756
|
-
}
|
757
|
-
gpr_mu_unlock(&q->workqueue_read_mu);
|
758
|
-
if (num_added > 0) {
|
759
|
-
workqueue_maybe_wakeup(p);
|
760
|
-
}
|
761
|
-
workqueue_move_items_to_parent(p);
|
762
|
-
}
|
763
|
-
|
764
649
|
static polling_island *polling_island_merge(polling_island *p,
|
765
650
|
polling_island *q,
|
766
651
|
grpc_error **error) {
|
@@ -785,8 +670,6 @@ static polling_island *polling_island_merge(polling_island *p,
|
|
785
670
|
/* Add the 'merged_to' link from p --> q */
|
786
671
|
gpr_atm_rel_store(&p->merged_to, (gpr_atm)q);
|
787
672
|
PI_ADD_REF(q, "pi_merge"); /* To account for the new incoming ref from p */
|
788
|
-
|
789
|
-
workqueue_move_items_to_parent(p);
|
790
673
|
}
|
791
674
|
/* else if p == q, nothing needs to be done */
|
792
675
|
|
@@ -797,32 +680,6 @@ static polling_island *polling_island_merge(polling_island *p,
|
|
797
680
|
return q;
|
798
681
|
}
|
799
682
|
|
800
|
-
static void workqueue_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
801
|
-
grpc_error *error) {
|
802
|
-
GPR_TIMER_BEGIN("workqueue.enqueue", 0);
|
803
|
-
grpc_workqueue *workqueue = (grpc_workqueue *)closure->scheduler;
|
804
|
-
/* take a ref to the workqueue: otherwise it can happen that whatever events
|
805
|
-
* this kicks off ends up destroying the workqueue before this function
|
806
|
-
* completes */
|
807
|
-
GRPC_WORKQUEUE_REF(workqueue, "enqueue");
|
808
|
-
polling_island *pi = (polling_island *)workqueue;
|
809
|
-
gpr_atm last = gpr_atm_no_barrier_fetch_add(&pi->workqueue_item_count, 1);
|
810
|
-
closure->error_data.error = error;
|
811
|
-
gpr_mpscq_push(&pi->workqueue_items, &closure->next_data.atm_next);
|
812
|
-
if (last == 0) {
|
813
|
-
workqueue_maybe_wakeup(pi);
|
814
|
-
}
|
815
|
-
workqueue_move_items_to_parent(pi);
|
816
|
-
GRPC_WORKQUEUE_UNREF(exec_ctx, workqueue, "enqueue");
|
817
|
-
GPR_TIMER_END("workqueue.enqueue", 0);
|
818
|
-
}
|
819
|
-
|
820
|
-
static grpc_closure_scheduler *workqueue_scheduler(grpc_workqueue *workqueue) {
|
821
|
-
polling_island *pi = (polling_island *)workqueue;
|
822
|
-
return workqueue == NULL ? grpc_schedule_on_exec_ctx
|
823
|
-
: &pi->workqueue_scheduler;
|
824
|
-
}
|
825
|
-
|
826
683
|
static grpc_error *polling_island_global_init() {
|
827
684
|
grpc_error *error = GRPC_ERROR_NONE;
|
828
685
|
|
@@ -863,14 +720,17 @@ static void polling_island_global_shutdown() {
|
|
863
720
|
static grpc_fd *fd_freelist = NULL;
|
864
721
|
static gpr_mu fd_freelist_mu;
|
865
722
|
|
866
|
-
#
|
723
|
+
#ifndef NDEBUG
|
867
724
|
#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
|
868
725
|
#define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
|
869
726
|
static void ref_by(grpc_fd *fd, int n, const char *reason, const char *file,
|
870
727
|
int line) {
|
871
|
-
|
872
|
-
|
873
|
-
|
728
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
729
|
+
gpr_log(GPR_DEBUG,
|
730
|
+
"FD %d %p ref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
731
|
+
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
732
|
+
gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
|
733
|
+
}
|
874
734
|
#else
|
875
735
|
#define REF_BY(fd, n, reason) ref_by(fd, n)
|
876
736
|
#define UNREF_BY(fd, n, reason) unref_by(fd, n)
|
@@ -879,18 +739,19 @@ static void ref_by(grpc_fd *fd, int n) {
|
|
879
739
|
GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0);
|
880
740
|
}
|
881
741
|
|
882
|
-
#
|
742
|
+
#ifndef NDEBUG
|
883
743
|
static void unref_by(grpc_fd *fd, int n, const char *reason, const char *file,
|
884
744
|
int line) {
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
745
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
746
|
+
gpr_log(GPR_DEBUG,
|
747
|
+
"FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
|
748
|
+
fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
|
749
|
+
gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
|
750
|
+
}
|
889
751
|
#else
|
890
752
|
static void unref_by(grpc_fd *fd, int n) {
|
891
|
-
gpr_atm old;
|
892
753
|
#endif
|
893
|
-
old = gpr_atm_full_fetch_add(&fd->refst, -n);
|
754
|
+
gpr_atm old = gpr_atm_full_fetch_add(&fd->refst, -n);
|
894
755
|
if (old == n) {
|
895
756
|
/* Add the fd to the freelist */
|
896
757
|
gpr_mu_lock(&fd_freelist_mu);
|
@@ -908,7 +769,7 @@ static void unref_by(grpc_fd *fd, int n) {
|
|
908
769
|
}
|
909
770
|
|
910
771
|
/* Increment refcount by two to avoid changing the orphan bit */
|
911
|
-
#
|
772
|
+
#ifndef NDEBUG
|
912
773
|
static void fd_ref(grpc_fd *fd, const char *reason, const char *file,
|
913
774
|
int line) {
|
914
775
|
ref_by(fd, 2, reason, file, line);
|
@@ -957,7 +818,7 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|
957
818
|
* would be holding a lock to it anyway. */
|
958
819
|
gpr_mu_lock(&new_fd->po.mu);
|
959
820
|
new_fd->po.pi = NULL;
|
960
|
-
#
|
821
|
+
#ifndef NDEBUG
|
961
822
|
new_fd->po.obj_type = POLL_OBJ_FD;
|
962
823
|
#endif
|
963
824
|
|
@@ -976,9 +837,6 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|
976
837
|
char *fd_name;
|
977
838
|
gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
|
978
839
|
grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
|
979
|
-
#ifdef GRPC_FD_REF_COUNT_DEBUG
|
980
|
-
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, (void *)new_fd, fd_name);
|
981
|
-
#endif
|
982
840
|
gpr_free(fd_name);
|
983
841
|
return new_fd;
|
984
842
|
}
|
@@ -996,25 +854,13 @@ static int fd_wrapped_fd(grpc_fd *fd) {
|
|
996
854
|
|
997
855
|
static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
998
856
|
grpc_closure *on_done, int *release_fd,
|
999
|
-
const char *reason) {
|
1000
|
-
bool is_fd_closed = false;
|
857
|
+
bool already_closed, const char *reason) {
|
1001
858
|
grpc_error *error = GRPC_ERROR_NONE;
|
1002
859
|
polling_island *unref_pi = NULL;
|
1003
860
|
|
1004
861
|
gpr_mu_lock(&fd->po.mu);
|
1005
862
|
fd->on_done_closure = on_done;
|
1006
863
|
|
1007
|
-
/* If release_fd is not NULL, we should be relinquishing control of the file
|
1008
|
-
descriptor fd->fd (but we still own the grpc_fd structure). */
|
1009
|
-
if (release_fd != NULL) {
|
1010
|
-
*release_fd = fd->fd;
|
1011
|
-
} else {
|
1012
|
-
close(fd->fd);
|
1013
|
-
is_fd_closed = true;
|
1014
|
-
}
|
1015
|
-
|
1016
|
-
fd->orphaned = true;
|
1017
|
-
|
1018
864
|
/* Remove the active status but keep referenced. We want this grpc_fd struct
|
1019
865
|
to be alive (and not added to freelist) until the end of this function */
|
1020
866
|
REF_BY(fd, 1, reason);
|
@@ -1029,14 +875,24 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
1029
875
|
before doing this.) */
|
1030
876
|
if (fd->po.pi != NULL) {
|
1031
877
|
polling_island *pi_latest = polling_island_lock(fd->po.pi);
|
1032
|
-
polling_island_remove_fd_locked(pi_latest, fd,
|
878
|
+
polling_island_remove_fd_locked(pi_latest, fd, already_closed, &error);
|
1033
879
|
gpr_mu_unlock(&pi_latest->mu);
|
1034
880
|
|
1035
881
|
unref_pi = fd->po.pi;
|
1036
882
|
fd->po.pi = NULL;
|
1037
883
|
}
|
1038
884
|
|
1039
|
-
|
885
|
+
/* If release_fd is not NULL, we should be relinquishing control of the file
|
886
|
+
descriptor fd->fd (but we still own the grpc_fd structure). */
|
887
|
+
if (release_fd != NULL) {
|
888
|
+
*release_fd = fd->fd;
|
889
|
+
} else {
|
890
|
+
close(fd->fd);
|
891
|
+
}
|
892
|
+
|
893
|
+
fd->orphaned = true;
|
894
|
+
|
895
|
+
GRPC_CLOSURE_SCHED(exec_ctx, fd->on_done_closure, GRPC_ERROR_REF(error));
|
1040
896
|
|
1041
897
|
gpr_mu_unlock(&fd->po.mu);
|
1042
898
|
UNREF_BY(fd, 2, reason); /* Drop the reference */
|
@@ -1047,7 +903,10 @@ static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
1047
903
|
unhappy. */
|
1048
904
|
PI_UNREF(exec_ctx, unref_pi, "fd_orphan");
|
1049
905
|
}
|
1050
|
-
|
906
|
+
if (error != GRPC_ERROR_NONE) {
|
907
|
+
const char *msg = grpc_error_string(error);
|
908
|
+
gpr_log(GPR_DEBUG, "fd_orphan: %s", msg);
|
909
|
+
}
|
1051
910
|
GRPC_ERROR_UNREF(error);
|
1052
911
|
}
|
1053
912
|
|
@@ -1073,20 +932,12 @@ static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) {
|
|
1073
932
|
|
1074
933
|
static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
1075
934
|
grpc_closure *closure) {
|
1076
|
-
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure);
|
935
|
+
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read");
|
1077
936
|
}
|
1078
937
|
|
1079
938
|
static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
1080
939
|
grpc_closure *closure) {
|
1081
|
-
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure);
|
1082
|
-
}
|
1083
|
-
|
1084
|
-
static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
|
1085
|
-
gpr_mu_lock(&fd->po.mu);
|
1086
|
-
grpc_workqueue *workqueue =
|
1087
|
-
GRPC_WORKQUEUE_REF((grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
|
1088
|
-
gpr_mu_unlock(&fd->po.mu);
|
1089
|
-
return workqueue;
|
940
|
+
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write");
|
1090
941
|
}
|
1091
942
|
|
1092
943
|
/*******************************************************************************
|
@@ -1223,7 +1074,7 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
|
|
1223
1074
|
gpr_mu_init(&pollset->po.mu);
|
1224
1075
|
*mu = &pollset->po.mu;
|
1225
1076
|
pollset->po.pi = NULL;
|
1226
|
-
#
|
1077
|
+
#ifndef NDEBUG
|
1227
1078
|
pollset->po.obj_type = POLL_OBJ_POLLSET;
|
1228
1079
|
#endif
|
1229
1080
|
|
@@ -1263,7 +1114,7 @@ static int poll_deadline_to_millis_timeout(gpr_timespec deadline,
|
|
1263
1114
|
|
1264
1115
|
static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
1265
1116
|
grpc_pollset *notifier) {
|
1266
|
-
grpc_lfev_set_ready(exec_ctx, &fd->read_closure);
|
1117
|
+
grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read");
|
1267
1118
|
|
1268
1119
|
/* Note, it is possible that fd_become_readable might be called twice with
|
1269
1120
|
different 'notifier's when an fd becomes readable and it is in two epoll
|
@@ -1275,7 +1126,7 @@ static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
|
1275
1126
|
}
|
1276
1127
|
|
1277
1128
|
static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
1278
|
-
grpc_lfev_set_ready(exec_ctx, &fd->write_closure);
|
1129
|
+
grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write");
|
1279
1130
|
}
|
1280
1131
|
|
1281
1132
|
static void pollset_release_polling_island(grpc_exec_ctx *exec_ctx,
|
@@ -1295,7 +1146,7 @@ static void finish_shutdown_locked(grpc_exec_ctx *exec_ctx,
|
|
1295
1146
|
|
1296
1147
|
/* Release the ref and set pollset->po.pi to NULL */
|
1297
1148
|
pollset_release_polling_island(exec_ctx, pollset, "ps_shutdown");
|
1298
|
-
|
1149
|
+
GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_done, GRPC_ERROR_NONE);
|
1299
1150
|
}
|
1300
1151
|
|
1301
1152
|
/* pollset->po.mu lock must be held by the caller before calling this */
|
@@ -1326,44 +1177,6 @@ static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
|
|
1326
1177
|
gpr_mu_destroy(&pollset->po.mu);
|
1327
1178
|
}
|
1328
1179
|
|
1329
|
-
static bool maybe_do_workqueue_work(grpc_exec_ctx *exec_ctx,
|
1330
|
-
polling_island *pi) {
|
1331
|
-
if (gpr_mu_trylock(&pi->workqueue_read_mu)) {
|
1332
|
-
gpr_mpscq_node *n = gpr_mpscq_pop(&pi->workqueue_items);
|
1333
|
-
gpr_mu_unlock(&pi->workqueue_read_mu);
|
1334
|
-
if (n != NULL) {
|
1335
|
-
gpr_atm remaining =
|
1336
|
-
gpr_atm_full_fetch_add(&pi->workqueue_item_count, -1) - 1;
|
1337
|
-
GRPC_POLLING_TRACE(
|
1338
|
-
"maybe_do_workqueue_work: pi: %p: got closure %p, remaining = "
|
1339
|
-
"%" PRIdPTR,
|
1340
|
-
pi, n, remaining);
|
1341
|
-
if (remaining > 0) {
|
1342
|
-
workqueue_maybe_wakeup(pi);
|
1343
|
-
}
|
1344
|
-
grpc_closure *c = (grpc_closure *)n;
|
1345
|
-
grpc_error *error = c->error_data.error;
|
1346
|
-
#ifndef NDEBUG
|
1347
|
-
c->scheduled = false;
|
1348
|
-
#endif
|
1349
|
-
c->cb(exec_ctx, c->cb_arg, error);
|
1350
|
-
GRPC_ERROR_UNREF(error);
|
1351
|
-
return true;
|
1352
|
-
} else if (gpr_atm_no_barrier_load(&pi->workqueue_item_count) > 0) {
|
1353
|
-
/* n == NULL might mean there's work but it's not available to be popped
|
1354
|
-
* yet - try to ensure another workqueue wakes up to check shortly if so
|
1355
|
-
*/
|
1356
|
-
GRPC_POLLING_TRACE(
|
1357
|
-
"maybe_do_workqueue_work: pi: %p: more to do, but not yet", pi);
|
1358
|
-
workqueue_maybe_wakeup(pi);
|
1359
|
-
}
|
1360
|
-
} else {
|
1361
|
-
GRPC_POLLING_TRACE("maybe_do_workqueue_work: pi: %p: read already locked",
|
1362
|
-
pi);
|
1363
|
-
}
|
1364
|
-
return false;
|
1365
|
-
}
|
1366
|
-
|
1367
1180
|
#define GRPC_EPOLL_MAX_EVENTS 100
|
1368
1181
|
/* Note: sig_mask contains the signal mask to use *during* epoll_wait() */
|
1369
1182
|
static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
|
@@ -1419,76 +1232,61 @@ static void pollset_work_and_unlock(grpc_exec_ctx *exec_ctx,
|
|
1419
1232
|
PI_ADD_REF(pi, "ps_work");
|
1420
1233
|
gpr_mu_unlock(&pollset->po.mu);
|
1421
1234
|
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
append_error(error, GRPC_OS_ERROR(errno, err_msg), err_desc);
|
1442
|
-
} else {
|
1443
|
-
/* We were interrupted. Save an interation by doing a zero timeout
|
1444
|
-
epoll_wait to see if there are any other events of interest */
|
1445
|
-
GRPC_POLLING_TRACE(
|
1446
|
-
"pollset_work: pollset: %p, worker: %p received kick",
|
1447
|
-
(void *)pollset, (void *)worker);
|
1448
|
-
ep_rv = epoll_wait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, 0);
|
1449
|
-
}
|
1235
|
+
gpr_atm_no_barrier_fetch_add(&pi->poller_count, 1);
|
1236
|
+
g_current_thread_polling_island = pi;
|
1237
|
+
|
1238
|
+
GRPC_SCHEDULING_START_BLOCKING_REGION;
|
1239
|
+
ep_rv =
|
1240
|
+
epoll_pwait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, timeout_ms, sig_mask);
|
1241
|
+
GRPC_SCHEDULING_END_BLOCKING_REGION;
|
1242
|
+
if (ep_rv < 0) {
|
1243
|
+
if (errno != EINTR) {
|
1244
|
+
gpr_asprintf(&err_msg,
|
1245
|
+
"epoll_wait() epoll fd: %d failed with error: %d (%s)",
|
1246
|
+
epoll_fd, errno, strerror(errno));
|
1247
|
+
append_error(error, GRPC_OS_ERROR(errno, err_msg), err_desc);
|
1248
|
+
} else {
|
1249
|
+
/* We were interrupted. Save an interation by doing a zero timeout
|
1250
|
+
epoll_wait to see if there are any other events of interest */
|
1251
|
+
GRPC_POLLING_TRACE("pollset_work: pollset: %p, worker: %p received kick",
|
1252
|
+
(void *)pollset, (void *)worker);
|
1253
|
+
ep_rv = epoll_wait(epoll_fd, ep_ev, GRPC_EPOLL_MAX_EVENTS, 0);
|
1450
1254
|
}
|
1255
|
+
}
|
1451
1256
|
|
1452
1257
|
#ifdef GRPC_TSAN
|
1453
|
-
|
1454
|
-
|
1258
|
+
/* See the definition of g_poll_sync for more details */
|
1259
|
+
gpr_atm_acq_load(&g_epoll_sync);
|
1455
1260
|
#endif /* defined(GRPC_TSAN) */
|
1456
1261
|
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
|
1477
|
-
|
1478
|
-
if (read_ev || cancel) {
|
1479
|
-
fd_become_readable(exec_ctx, fd, pollset);
|
1480
|
-
}
|
1481
|
-
if (write_ev || cancel) {
|
1482
|
-
fd_become_writable(exec_ctx, fd);
|
1483
|
-
}
|
1262
|
+
for (int i = 0; i < ep_rv; ++i) {
|
1263
|
+
void *data_ptr = ep_ev[i].data.ptr;
|
1264
|
+
if (data_ptr == &polling_island_wakeup_fd) {
|
1265
|
+
GRPC_POLLING_TRACE(
|
1266
|
+
"pollset_work: pollset: %p, worker: %p polling island (epoll_fd: "
|
1267
|
+
"%d) got merged",
|
1268
|
+
(void *)pollset, (void *)worker, epoll_fd);
|
1269
|
+
/* This means that our polling island is merged with a different
|
1270
|
+
island. We do not have to do anything here since the subsequent call
|
1271
|
+
to the function pollset_work_and_unlock() will pick up the correct
|
1272
|
+
epoll_fd */
|
1273
|
+
} else {
|
1274
|
+
grpc_fd *fd = data_ptr;
|
1275
|
+
int cancel = ep_ev[i].events & (EPOLLERR | EPOLLHUP);
|
1276
|
+
int read_ev = ep_ev[i].events & (EPOLLIN | EPOLLPRI);
|
1277
|
+
int write_ev = ep_ev[i].events & EPOLLOUT;
|
1278
|
+
if (read_ev || cancel) {
|
1279
|
+
fd_become_readable(exec_ctx, fd, pollset);
|
1280
|
+
}
|
1281
|
+
if (write_ev || cancel) {
|
1282
|
+
fd_become_writable(exec_ctx, fd);
|
1484
1283
|
}
|
1485
1284
|
}
|
1486
|
-
|
1487
|
-
g_current_thread_polling_island = NULL;
|
1488
|
-
gpr_atm_no_barrier_fetch_add(&pi->poller_count, -1);
|
1489
|
-
GRPC_POLLING_TRACE("pollset_work: ends");
|
1490
1285
|
}
|
1491
1286
|
|
1287
|
+
g_current_thread_polling_island = NULL;
|
1288
|
+
gpr_atm_no_barrier_fetch_add(&pi->poller_count, -1);
|
1289
|
+
|
1492
1290
|
GPR_ASSERT(pi != NULL);
|
1493
1291
|
|
1494
1292
|
/* Before leaving, release the extra ref we added to the polling island. It
|
@@ -1613,7 +1411,7 @@ static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag,
|
|
1613
1411
|
poll_obj_type item_type) {
|
1614
1412
|
GPR_TIMER_BEGIN("add_poll_object", 0);
|
1615
1413
|
|
1616
|
-
#
|
1414
|
+
#ifndef NDEBUG
|
1617
1415
|
GPR_ASSERT(item->obj_type == item_type);
|
1618
1416
|
GPR_ASSERT(bag->obj_type == bag_type);
|
1619
1417
|
#endif
|
@@ -1772,7 +1570,7 @@ static grpc_pollset_set *pollset_set_create(void) {
|
|
1772
1570
|
grpc_pollset_set *pss = gpr_malloc(sizeof(*pss));
|
1773
1571
|
gpr_mu_init(&pss->po.mu);
|
1774
1572
|
pss->po.pi = NULL;
|
1775
|
-
#
|
1573
|
+
#ifndef NDEBUG
|
1776
1574
|
pss->po.obj_type = POLL_OBJ_POLLSET_SET;
|
1777
1575
|
#endif
|
1778
1576
|
return pss;
|
@@ -1879,7 +1677,6 @@ static const grpc_event_engine_vtable vtable = {
|
|
1879
1677
|
.fd_notify_on_read = fd_notify_on_read,
|
1880
1678
|
.fd_notify_on_write = fd_notify_on_write,
|
1881
1679
|
.fd_get_read_notifier_pollset = fd_get_read_notifier_pollset,
|
1882
|
-
.fd_get_workqueue = fd_get_workqueue,
|
1883
1680
|
|
1884
1681
|
.pollset_init = pollset_init,
|
1885
1682
|
.pollset_shutdown = pollset_shutdown,
|
@@ -1897,10 +1694,6 @@ static const grpc_event_engine_vtable vtable = {
|
|
1897
1694
|
.pollset_set_add_fd = pollset_set_add_fd,
|
1898
1695
|
.pollset_set_del_fd = pollset_set_del_fd,
|
1899
1696
|
|
1900
|
-
.workqueue_ref = workqueue_ref,
|
1901
|
-
.workqueue_unref = workqueue_unref,
|
1902
|
-
.workqueue_scheduler = workqueue_scheduler,
|
1903
|
-
|
1904
1697
|
.shutdown_engine = shutdown_engine,
|
1905
1698
|
};
|
1906
1699
|
|