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
data/src/core/lib/iomgr/error.h
CHANGED
@@ -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
|
|
@@ -41,6 +26,8 @@
|
|
41
26
|
#include <grpc/status.h>
|
42
27
|
#include <grpc/support/time.h>
|
43
28
|
|
29
|
+
#include "src/core/lib/debug/trace.h"
|
30
|
+
|
44
31
|
#ifdef __cplusplus
|
45
32
|
extern "C" {
|
46
33
|
#endif
|
@@ -51,6 +38,10 @@ extern "C" {
|
|
51
38
|
|
52
39
|
typedef struct grpc_error grpc_error;
|
53
40
|
|
41
|
+
#ifndef NDEBUG
|
42
|
+
extern grpc_tracer_flag grpc_trace_error_refcount;
|
43
|
+
#endif
|
44
|
+
|
54
45
|
typedef enum {
|
55
46
|
/// 'errno' from the operating system
|
56
47
|
GRPC_ERROR_INT_ERRNO,
|
@@ -164,15 +155,11 @@ grpc_error *grpc_error_create(const char *file, int line, grpc_slice desc,
|
|
164
155
|
grpc_error_create(__FILE__, __LINE__, grpc_slice_from_copied_string(desc), \
|
165
156
|
errs, count)
|
166
157
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
const char *func);
|
173
|
-
#define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__, __func__)
|
174
|
-
#define GRPC_ERROR_UNREF(err) \
|
175
|
-
grpc_error_unref(err, __FILE__, __LINE__, __func__)
|
158
|
+
#ifndef NDEBUG
|
159
|
+
grpc_error *grpc_error_ref(grpc_error *err, const char *file, int line);
|
160
|
+
void grpc_error_unref(grpc_error *err, const char *file, int line);
|
161
|
+
#define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__)
|
162
|
+
#define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__)
|
176
163
|
#else
|
177
164
|
grpc_error *grpc_error_ref(grpc_error *err);
|
178
165
|
void grpc_error_unref(grpc_error *err);
|
@@ -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
|
|
@@ -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
|
|
@@ -58,9 +43,9 @@
|
|
58
43
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
59
44
|
#include "src/core/lib/iomgr/lockfree_event.h"
|
60
45
|
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
|
61
|
-
#include "src/core/lib/iomgr/workqueue.h"
|
62
46
|
#include "src/core/lib/profiling/timers.h"
|
63
47
|
#include "src/core/lib/support/block_annotate.h"
|
48
|
+
#include "src/core/lib/support/string.h"
|
64
49
|
|
65
50
|
static grpc_wakeup_fd global_wakeup_fd;
|
66
51
|
static int g_epfd;
|
@@ -93,8 +78,21 @@ static void fd_global_shutdown(void);
|
|
93
78
|
|
94
79
|
typedef enum { UNKICKED, KICKED, DESIGNATED_POLLER } kick_state;
|
95
80
|
|
81
|
+
static const char *kick_state_string(kick_state st) {
|
82
|
+
switch (st) {
|
83
|
+
case UNKICKED:
|
84
|
+
return "UNKICKED";
|
85
|
+
case KICKED:
|
86
|
+
return "KICKED";
|
87
|
+
case DESIGNATED_POLLER:
|
88
|
+
return "DESIGNATED_POLLER";
|
89
|
+
}
|
90
|
+
GPR_UNREACHABLE_CODE(return "UNKNOWN");
|
91
|
+
}
|
92
|
+
|
96
93
|
struct grpc_pollset_worker {
|
97
94
|
kick_state kick_state;
|
95
|
+
int kick_state_mutator; // which line of code last changed kick state
|
98
96
|
bool initialized_cv;
|
99
97
|
grpc_pollset_worker *next;
|
100
98
|
grpc_pollset_worker *prev;
|
@@ -102,6 +100,12 @@ struct grpc_pollset_worker {
|
|
102
100
|
grpc_closure_list schedule_on_end_work;
|
103
101
|
};
|
104
102
|
|
103
|
+
#define SET_KICK_STATE(worker, state) \
|
104
|
+
do { \
|
105
|
+
(worker)->kick_state = (state); \
|
106
|
+
(worker)->kick_state_mutator = __LINE__; \
|
107
|
+
} while (false)
|
108
|
+
|
105
109
|
#define MAX_NEIGHBOURHOODS 1024
|
106
110
|
|
107
111
|
typedef struct pollset_neighbourhood {
|
@@ -116,10 +120,15 @@ struct grpc_pollset {
|
|
116
120
|
bool reassigning_neighbourhood;
|
117
121
|
grpc_pollset_worker *root_worker;
|
118
122
|
bool kicked_without_poller;
|
123
|
+
|
124
|
+
/* Set to true if the pollset is observed to have no workers available to
|
125
|
+
* poll */
|
119
126
|
bool seen_inactive;
|
120
|
-
bool shutting_down;
|
121
|
-
bool finish_shutdown_called; /* Is the 'finish_shutdown_locked()' called ? */
|
127
|
+
bool shutting_down; /* Is the pollset shutting down ? */
|
122
128
|
grpc_closure *shutdown_closure; /* Called after after shutdown is complete */
|
129
|
+
|
130
|
+
/* Number of workers who are *about-to* attach themselves to the pollset
|
131
|
+
* worker list */
|
123
132
|
int begin_refs;
|
124
133
|
|
125
134
|
grpc_pollset *next;
|
@@ -130,7 +139,9 @@ struct grpc_pollset {
|
|
130
139
|
* Pollset-set Declarations
|
131
140
|
*/
|
132
141
|
|
133
|
-
struct grpc_pollset_set {
|
142
|
+
struct grpc_pollset_set {
|
143
|
+
char unused;
|
144
|
+
};
|
134
145
|
|
135
146
|
/*******************************************************************************
|
136
147
|
* Common helpers
|
@@ -208,8 +219,10 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|
208
219
|
char *fd_name;
|
209
220
|
gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
|
210
221
|
grpc_iomgr_register_object(&new_fd->iomgr_object, fd_name);
|
211
|
-
#
|
212
|
-
|
222
|
+
#ifndef NDEBUG
|
223
|
+
if (GRPC_TRACER_ON(grpc_trace_fd_refcount)) {
|
224
|
+
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, new_fd, fd_name);
|
225
|
+
}
|
213
226
|
#endif
|
214
227
|
gpr_free(fd_name);
|
215
228
|
|
@@ -224,34 +237,47 @@ static grpc_fd *fd_create(int fd, const char *name) {
|
|
224
237
|
|
225
238
|
static int fd_wrapped_fd(grpc_fd *fd) { return fd->fd; }
|
226
239
|
|
227
|
-
/*
|
228
|
-
|
240
|
+
/* if 'releasing_fd' is true, it means that we are going to detach the internal
|
241
|
+
* fd from grpc_fd structure (i.e which means we should not be calling
|
242
|
+
* shutdown() syscall on that fd) */
|
243
|
+
static void fd_shutdown_internal(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
244
|
+
grpc_error *why, bool releasing_fd) {
|
229
245
|
if (grpc_lfev_set_shutdown(exec_ctx, &fd->read_closure,
|
230
246
|
GRPC_ERROR_REF(why))) {
|
231
|
-
|
247
|
+
if (!releasing_fd) {
|
248
|
+
shutdown(fd->fd, SHUT_RDWR);
|
249
|
+
}
|
232
250
|
grpc_lfev_set_shutdown(exec_ctx, &fd->write_closure, GRPC_ERROR_REF(why));
|
233
251
|
}
|
234
252
|
GRPC_ERROR_UNREF(why);
|
235
253
|
}
|
236
254
|
|
255
|
+
/* Might be called multiple times */
|
256
|
+
static void fd_shutdown(grpc_exec_ctx *exec_ctx, grpc_fd *fd, grpc_error *why) {
|
257
|
+
fd_shutdown_internal(exec_ctx, fd, why, false);
|
258
|
+
}
|
259
|
+
|
237
260
|
static void fd_orphan(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
238
261
|
grpc_closure *on_done, int *release_fd,
|
239
|
-
const char *reason) {
|
262
|
+
bool already_closed, const char *reason) {
|
240
263
|
grpc_error *error = GRPC_ERROR_NONE;
|
264
|
+
bool is_release_fd = (release_fd != NULL);
|
241
265
|
|
242
266
|
if (!grpc_lfev_is_shutdown(&fd->read_closure)) {
|
243
|
-
|
267
|
+
fd_shutdown_internal(exec_ctx, fd,
|
268
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(reason),
|
269
|
+
is_release_fd);
|
244
270
|
}
|
245
271
|
|
246
272
|
/* If release_fd is not NULL, we should be relinquishing control of the file
|
247
273
|
descriptor fd->fd (but we still own the grpc_fd structure). */
|
248
|
-
if (
|
274
|
+
if (is_release_fd) {
|
249
275
|
*release_fd = fd->fd;
|
250
|
-
} else {
|
276
|
+
} else if (!already_closed) {
|
251
277
|
close(fd->fd);
|
252
278
|
}
|
253
279
|
|
254
|
-
|
280
|
+
GRPC_CLOSURE_SCHED(exec_ctx, on_done, GRPC_ERROR_REF(error));
|
255
281
|
|
256
282
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
257
283
|
grpc_lfev_destroy(&fd->read_closure);
|
@@ -275,33 +301,23 @@ static bool fd_is_shutdown(grpc_fd *fd) {
|
|
275
301
|
|
276
302
|
static void fd_notify_on_read(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
277
303
|
grpc_closure *closure) {
|
278
|
-
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure);
|
304
|
+
grpc_lfev_notify_on(exec_ctx, &fd->read_closure, closure, "read");
|
279
305
|
}
|
280
306
|
|
281
307
|
static void fd_notify_on_write(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
282
308
|
grpc_closure *closure) {
|
283
|
-
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure);
|
284
|
-
}
|
285
|
-
|
286
|
-
static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
|
287
|
-
return (grpc_workqueue *)0xb0b51ed;
|
309
|
+
grpc_lfev_notify_on(exec_ctx, &fd->write_closure, closure, "write");
|
288
310
|
}
|
289
311
|
|
290
312
|
static void fd_become_readable(grpc_exec_ctx *exec_ctx, grpc_fd *fd,
|
291
313
|
grpc_pollset *notifier) {
|
292
|
-
grpc_lfev_set_ready(exec_ctx, &fd->read_closure);
|
293
|
-
|
294
|
-
/* Note, it is possible that fd_become_readable might be called twice with
|
295
|
-
different 'notifier's when an fd becomes readable and it is in two epoll
|
296
|
-
sets (This can happen briefly during polling island merges). In such cases
|
297
|
-
it does not really matter which notifer is set as the read_notifier_pollset
|
298
|
-
(They would both point to the same polling island anyway) */
|
314
|
+
grpc_lfev_set_ready(exec_ctx, &fd->read_closure, "read");
|
299
315
|
/* Use release store to match with acquire load in fd_get_read_notifier */
|
300
316
|
gpr_atm_rel_store(&fd->read_notifier_pollset, (gpr_atm)notifier);
|
301
317
|
}
|
302
318
|
|
303
319
|
static void fd_become_writable(grpc_exec_ctx *exec_ctx, grpc_fd *fd) {
|
304
|
-
grpc_lfev_set_ready(exec_ctx, &fd->write_closure);
|
320
|
+
grpc_lfev_set_ready(exec_ctx, &fd->write_closure, "write");
|
305
321
|
}
|
306
322
|
|
307
323
|
/*******************************************************************************
|
@@ -313,8 +329,6 @@ GPR_TLS_DECL(g_current_thread_worker);
|
|
313
329
|
static gpr_atm g_active_poller;
|
314
330
|
static pollset_neighbourhood *g_neighbourhoods;
|
315
331
|
static size_t g_num_neighbourhoods;
|
316
|
-
static gpr_mu g_wq_mu;
|
317
|
-
static grpc_closure_list g_wq_items;
|
318
332
|
|
319
333
|
/* Return true if first in list */
|
320
334
|
static bool worker_insert(grpc_pollset *pollset, grpc_pollset_worker *worker) {
|
@@ -363,8 +377,6 @@ static grpc_error *pollset_global_init(void) {
|
|
363
377
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
364
378
|
global_wakeup_fd.read_fd = -1;
|
365
379
|
grpc_error *err = grpc_wakeup_fd_init(&global_wakeup_fd);
|
366
|
-
gpr_mu_init(&g_wq_mu);
|
367
|
-
g_wq_items = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
|
368
380
|
if (err != GRPC_ERROR_NONE) return err;
|
369
381
|
struct epoll_event ev = {.events = (uint32_t)(EPOLLIN | EPOLLET),
|
370
382
|
.data.ptr = &global_wakeup_fd};
|
@@ -383,7 +395,6 @@ static grpc_error *pollset_global_init(void) {
|
|
383
395
|
static void pollset_global_shutdown(void) {
|
384
396
|
gpr_tls_destroy(&g_current_thread_pollset);
|
385
397
|
gpr_tls_destroy(&g_current_thread_worker);
|
386
|
-
gpr_mu_destroy(&g_wq_mu);
|
387
398
|
if (global_wakeup_fd.read_fd != -1) grpc_wakeup_fd_destroy(&global_wakeup_fd);
|
388
399
|
for (size_t i = 0; i < g_num_neighbourhoods; i++) {
|
389
400
|
gpr_mu_destroy(&g_neighbourhoods[i].mu);
|
@@ -431,18 +442,28 @@ static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
|
|
431
442
|
if (pollset->root_worker != NULL) {
|
432
443
|
grpc_pollset_worker *worker = pollset->root_worker;
|
433
444
|
do {
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
445
|
+
switch (worker->kick_state) {
|
446
|
+
case KICKED:
|
447
|
+
break;
|
448
|
+
case UNKICKED:
|
449
|
+
SET_KICK_STATE(worker, KICKED);
|
450
|
+
if (worker->initialized_cv) {
|
451
|
+
gpr_cv_signal(&worker->cv);
|
452
|
+
}
|
453
|
+
break;
|
454
|
+
case DESIGNATED_POLLER:
|
455
|
+
SET_KICK_STATE(worker, KICKED);
|
456
|
+
append_error(&error, grpc_wakeup_fd_wakeup(&global_wakeup_fd),
|
457
|
+
"pollset_kick_all");
|
458
|
+
break;
|
441
459
|
}
|
442
460
|
|
443
461
|
worker = worker->next;
|
444
462
|
} while (worker != pollset->root_worker);
|
445
463
|
}
|
464
|
+
// TODO: sreek. Check if we need to set 'kicked_without_poller' to true here
|
465
|
+
// in the else case
|
466
|
+
|
446
467
|
return error;
|
447
468
|
}
|
448
469
|
|
@@ -450,7 +471,7 @@ static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
|
|
450
471
|
grpc_pollset *pollset) {
|
451
472
|
if (pollset->shutdown_closure != NULL && pollset->root_worker == NULL &&
|
452
473
|
pollset->begin_refs == 0) {
|
453
|
-
|
474
|
+
GRPC_CLOSURE_SCHED(exec_ctx, pollset->shutdown_closure, GRPC_ERROR_NONE);
|
454
475
|
pollset->shutdown_closure = NULL;
|
455
476
|
}
|
456
477
|
}
|
@@ -458,7 +479,9 @@ static void pollset_maybe_finish_shutdown(grpc_exec_ctx *exec_ctx,
|
|
458
479
|
static void pollset_shutdown(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
459
480
|
grpc_closure *closure) {
|
460
481
|
GPR_ASSERT(pollset->shutdown_closure == NULL);
|
482
|
+
GPR_ASSERT(!pollset->shutting_down);
|
461
483
|
pollset->shutdown_closure = closure;
|
484
|
+
pollset->shutting_down = true;
|
462
485
|
GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset));
|
463
486
|
pollset_maybe_finish_shutdown(exec_ctx, pollset);
|
464
487
|
}
|
@@ -507,9 +530,6 @@ static grpc_error *pollset_epoll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
507
530
|
for (int i = 0; i < r; i++) {
|
508
531
|
void *data_ptr = events[i].data.ptr;
|
509
532
|
if (data_ptr == &global_wakeup_fd) {
|
510
|
-
gpr_mu_lock(&g_wq_mu);
|
511
|
-
grpc_closure_list_move(&g_wq_items, &exec_ctx->closure_list);
|
512
|
-
gpr_mu_unlock(&g_wq_mu);
|
513
533
|
append_error(&error, grpc_wakeup_fd_consume_wakeup(&global_wakeup_fd),
|
514
534
|
err_desc);
|
515
535
|
} else {
|
@@ -534,10 +554,14 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
|
|
534
554
|
gpr_timespec deadline) {
|
535
555
|
if (worker_hdl != NULL) *worker_hdl = worker;
|
536
556
|
worker->initialized_cv = false;
|
537
|
-
worker
|
557
|
+
SET_KICK_STATE(worker, UNKICKED);
|
538
558
|
worker->schedule_on_end_work = (grpc_closure_list)GRPC_CLOSURE_LIST_INIT;
|
539
559
|
pollset->begin_refs++;
|
540
560
|
|
561
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
562
|
+
gpr_log(GPR_ERROR, "PS:%p BEGIN_STARTS:%p", pollset, worker);
|
563
|
+
}
|
564
|
+
|
541
565
|
if (pollset->seen_inactive) {
|
542
566
|
// pollset has been observed to be inactive, we need to move back to the
|
543
567
|
// active list
|
@@ -553,6 +577,11 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
|
|
553
577
|
retry_lock_neighbourhood:
|
554
578
|
gpr_mu_lock(&neighbourhood->mu);
|
555
579
|
gpr_mu_lock(&pollset->mu);
|
580
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
581
|
+
gpr_log(GPR_ERROR, "PS:%p BEGIN_REORG:%p kick_state=%s is_reassigning=%d",
|
582
|
+
pollset, worker, kick_state_string(worker->kick_state),
|
583
|
+
is_reassigning);
|
584
|
+
}
|
556
585
|
if (pollset->seen_inactive) {
|
557
586
|
if (neighbourhood != pollset->neighbourhood) {
|
558
587
|
gpr_mu_unlock(&neighbourhood->mu);
|
@@ -563,8 +592,14 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
|
|
563
592
|
pollset->seen_inactive = false;
|
564
593
|
if (neighbourhood->active_root == NULL) {
|
565
594
|
neighbourhood->active_root = pollset->next = pollset->prev = pollset;
|
566
|
-
|
567
|
-
|
595
|
+
/* TODO: sreek. Why would this worker state be other than UNKICKED
|
596
|
+
* here ? (since the worker isn't added to the pollset yet, there is no
|
597
|
+
* way it can be "found" by other threads to get kicked). */
|
598
|
+
|
599
|
+
/* If there is no designated poller, make this the designated poller */
|
600
|
+
if (worker->kick_state == UNKICKED &&
|
601
|
+
gpr_atm_no_barrier_cas(&g_active_poller, 0, (gpr_atm)worker)) {
|
602
|
+
SET_KICK_STATE(worker, DESIGNATED_POLLER);
|
568
603
|
}
|
569
604
|
} else {
|
570
605
|
pollset->next = neighbourhood->active_root;
|
@@ -578,24 +613,53 @@ static bool begin_worker(grpc_pollset *pollset, grpc_pollset_worker *worker,
|
|
578
613
|
}
|
579
614
|
gpr_mu_unlock(&neighbourhood->mu);
|
580
615
|
}
|
616
|
+
|
581
617
|
worker_insert(pollset, worker);
|
582
618
|
pollset->begin_refs--;
|
583
|
-
if (worker->kick_state == UNKICKED) {
|
619
|
+
if (worker->kick_state == UNKICKED && !pollset->kicked_without_poller) {
|
584
620
|
GPR_ASSERT(gpr_atm_no_barrier_load(&g_active_poller) != (gpr_atm)worker);
|
585
621
|
worker->initialized_cv = true;
|
586
622
|
gpr_cv_init(&worker->cv);
|
587
|
-
while (worker->kick_state == UNKICKED &&
|
588
|
-
|
623
|
+
while (worker->kick_state == UNKICKED && !pollset->shutting_down) {
|
624
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
625
|
+
gpr_log(GPR_ERROR, "PS:%p BEGIN_WAIT:%p kick_state=%s shutdown=%d",
|
626
|
+
pollset, worker, kick_state_string(worker->kick_state),
|
627
|
+
pollset->shutting_down);
|
628
|
+
}
|
629
|
+
|
589
630
|
if (gpr_cv_wait(&worker->cv, &pollset->mu, deadline) &&
|
590
631
|
worker->kick_state == UNKICKED) {
|
591
|
-
|
632
|
+
/* If gpr_cv_wait returns true (i.e a timeout), pretend that the worker
|
633
|
+
received a kick */
|
634
|
+
SET_KICK_STATE(worker, KICKED);
|
592
635
|
}
|
593
636
|
}
|
594
637
|
*now = gpr_now(now->clock_type);
|
595
638
|
}
|
596
639
|
|
597
|
-
|
598
|
-
|
640
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
641
|
+
gpr_log(GPR_ERROR,
|
642
|
+
"PS:%p BEGIN_DONE:%p kick_state=%s shutdown=%d "
|
643
|
+
"kicked_without_poller: %d",
|
644
|
+
pollset, worker, kick_state_string(worker->kick_state),
|
645
|
+
pollset->shutting_down, pollset->kicked_without_poller);
|
646
|
+
}
|
647
|
+
|
648
|
+
/* We release pollset lock in this function at a couple of places:
|
649
|
+
* 1. Briefly when assigning pollset to a neighbourhood
|
650
|
+
* 2. When doing gpr_cv_wait()
|
651
|
+
* It is possible that 'kicked_without_poller' was set to true during (1) and
|
652
|
+
* 'shutting_down' is set to true during (1) or (2). If either of them is
|
653
|
+
* true, this worker cannot do polling */
|
654
|
+
/* TODO(sreek): Perhaps there is a better way to handle kicked_without_poller
|
655
|
+
* case; especially when the worker is the DESIGNATED_POLLER */
|
656
|
+
|
657
|
+
if (pollset->kicked_without_poller) {
|
658
|
+
pollset->kicked_without_poller = false;
|
659
|
+
return false;
|
660
|
+
}
|
661
|
+
|
662
|
+
return worker->kick_state == DESIGNATED_POLLER && !pollset->shutting_down;
|
599
663
|
}
|
600
664
|
|
601
665
|
static bool check_neighbourhood_for_available_poller(
|
@@ -615,10 +679,18 @@ static bool check_neighbourhood_for_available_poller(
|
|
615
679
|
case UNKICKED:
|
616
680
|
if (gpr_atm_no_barrier_cas(&g_active_poller, 0,
|
617
681
|
(gpr_atm)inspect_worker)) {
|
618
|
-
|
682
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
683
|
+
gpr_log(GPR_DEBUG, " .. choose next poller to be %p",
|
684
|
+
inspect_worker);
|
685
|
+
}
|
686
|
+
SET_KICK_STATE(inspect_worker, DESIGNATED_POLLER);
|
619
687
|
if (inspect_worker->initialized_cv) {
|
620
688
|
gpr_cv_signal(&inspect_worker->cv);
|
621
689
|
}
|
690
|
+
} else {
|
691
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
692
|
+
gpr_log(GPR_DEBUG, " .. beaten to choose next poller");
|
693
|
+
}
|
622
694
|
}
|
623
695
|
// even if we didn't win the cas, there's a worker, we can stop
|
624
696
|
found_worker = true;
|
@@ -631,9 +703,12 @@ static bool check_neighbourhood_for_available_poller(
|
|
631
703
|
break;
|
632
704
|
}
|
633
705
|
inspect_worker = inspect_worker->next;
|
634
|
-
} while (inspect_worker != inspect->root_worker);
|
706
|
+
} while (!found_worker && inspect_worker != inspect->root_worker);
|
635
707
|
}
|
636
708
|
if (!found_worker) {
|
709
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
710
|
+
gpr_log(GPR_DEBUG, " .. mark pollset %p inactive", inspect);
|
711
|
+
}
|
637
712
|
inspect->seen_inactive = true;
|
638
713
|
if (inspect == neighbourhood->active_root) {
|
639
714
|
neighbourhood->active_root =
|
@@ -651,15 +726,22 @@ static bool check_neighbourhood_for_available_poller(
|
|
651
726
|
static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
652
727
|
grpc_pollset_worker *worker,
|
653
728
|
grpc_pollset_worker **worker_hdl) {
|
729
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
730
|
+
gpr_log(GPR_DEBUG, "PS:%p END_WORKER:%p", pollset, worker);
|
731
|
+
}
|
654
732
|
if (worker_hdl != NULL) *worker_hdl = NULL;
|
655
|
-
|
733
|
+
/* Make sure we appear kicked */
|
734
|
+
SET_KICK_STATE(worker, KICKED);
|
656
735
|
grpc_closure_list_move(&worker->schedule_on_end_work,
|
657
736
|
&exec_ctx->closure_list);
|
658
737
|
if (gpr_atm_no_barrier_load(&g_active_poller) == (gpr_atm)worker) {
|
659
738
|
if (worker->next != worker && worker->next->kick_state == UNKICKED) {
|
739
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
740
|
+
gpr_log(GPR_DEBUG, " .. choose next poller to be peer %p", worker);
|
741
|
+
}
|
660
742
|
GPR_ASSERT(worker->next->initialized_cv);
|
661
743
|
gpr_atm_no_barrier_store(&g_active_poller, (gpr_atm)worker->next);
|
662
|
-
worker->next
|
744
|
+
SET_KICK_STATE(worker->next, DESIGNATED_POLLER);
|
663
745
|
gpr_cv_signal(&worker->next->cv);
|
664
746
|
if (grpc_exec_ctx_has_work(exec_ctx)) {
|
665
747
|
gpr_mu_unlock(&pollset->mu);
|
@@ -668,9 +750,9 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
668
750
|
}
|
669
751
|
} else {
|
670
752
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
671
|
-
gpr_mu_unlock(&pollset->mu);
|
672
753
|
size_t poller_neighbourhood_idx =
|
673
754
|
(size_t)(pollset->neighbourhood - g_neighbourhoods);
|
755
|
+
gpr_mu_unlock(&pollset->mu);
|
674
756
|
bool found_worker = false;
|
675
757
|
bool scan_state[MAX_NEIGHBOURHOODS];
|
676
758
|
for (size_t i = 0; !found_worker && i < g_num_neighbourhoods; i++) {
|
@@ -706,6 +788,9 @@ static void end_worker(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
706
788
|
if (worker->initialized_cv) {
|
707
789
|
gpr_cv_destroy(&worker->cv);
|
708
790
|
}
|
791
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
792
|
+
gpr_log(GPR_DEBUG, " .. remove worker");
|
793
|
+
}
|
709
794
|
if (EMPTIED == worker_remove(pollset, worker)) {
|
710
795
|
pollset_maybe_finish_shutdown(exec_ctx, pollset);
|
711
796
|
}
|
@@ -726,16 +811,18 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
726
811
|
pollset->kicked_without_poller = false;
|
727
812
|
return GRPC_ERROR_NONE;
|
728
813
|
}
|
729
|
-
gpr_tls_set(&g_current_thread_pollset, (intptr_t)pollset);
|
730
814
|
if (begin_worker(pollset, &worker, worker_hdl, &now, deadline)) {
|
815
|
+
gpr_tls_set(&g_current_thread_pollset, (intptr_t)pollset);
|
731
816
|
gpr_tls_set(&g_current_thread_worker, (intptr_t)&worker);
|
732
|
-
GPR_ASSERT(!pollset->
|
817
|
+
GPR_ASSERT(!pollset->shutting_down);
|
733
818
|
GPR_ASSERT(!pollset->seen_inactive);
|
734
819
|
gpr_mu_unlock(&pollset->mu);
|
735
820
|
append_error(&error, pollset_epoll(exec_ctx, pollset, now, deadline),
|
736
821
|
err_desc);
|
737
822
|
gpr_mu_lock(&pollset->mu);
|
738
823
|
gpr_tls_set(&g_current_thread_worker, 0);
|
824
|
+
} else {
|
825
|
+
gpr_tls_set(&g_current_thread_pollset, (intptr_t)pollset);
|
739
826
|
}
|
740
827
|
end_worker(exec_ctx, pollset, &worker, worker_hdl);
|
741
828
|
gpr_tls_set(&g_current_thread_pollset, 0);
|
@@ -744,46 +831,136 @@ static grpc_error *pollset_work(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
|
744
831
|
|
745
832
|
static grpc_error *pollset_kick(grpc_pollset *pollset,
|
746
833
|
grpc_pollset_worker *specific_worker) {
|
834
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
835
|
+
gpr_strvec log;
|
836
|
+
gpr_strvec_init(&log);
|
837
|
+
char *tmp;
|
838
|
+
gpr_asprintf(
|
839
|
+
&tmp, "PS:%p KICK:%p curps=%p curworker=%p root=%p", pollset,
|
840
|
+
specific_worker, (void *)gpr_tls_get(&g_current_thread_pollset),
|
841
|
+
(void *)gpr_tls_get(&g_current_thread_worker), pollset->root_worker);
|
842
|
+
gpr_strvec_add(&log, tmp);
|
843
|
+
if (pollset->root_worker != NULL) {
|
844
|
+
gpr_asprintf(&tmp, " {kick_state=%s next=%p {kick_state=%s}}",
|
845
|
+
kick_state_string(pollset->root_worker->kick_state),
|
846
|
+
pollset->root_worker->next,
|
847
|
+
kick_state_string(pollset->root_worker->next->kick_state));
|
848
|
+
gpr_strvec_add(&log, tmp);
|
849
|
+
}
|
850
|
+
if (specific_worker != NULL) {
|
851
|
+
gpr_asprintf(&tmp, " worker_kick_state=%s",
|
852
|
+
kick_state_string(specific_worker->kick_state));
|
853
|
+
gpr_strvec_add(&log, tmp);
|
854
|
+
}
|
855
|
+
tmp = gpr_strvec_flatten(&log, NULL);
|
856
|
+
gpr_strvec_destroy(&log);
|
857
|
+
gpr_log(GPR_ERROR, "%s", tmp);
|
858
|
+
gpr_free(tmp);
|
859
|
+
}
|
747
860
|
if (specific_worker == NULL) {
|
748
861
|
if (gpr_tls_get(&g_current_thread_pollset) != (intptr_t)pollset) {
|
749
862
|
grpc_pollset_worker *root_worker = pollset->root_worker;
|
750
863
|
if (root_worker == NULL) {
|
751
864
|
pollset->kicked_without_poller = true;
|
865
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
866
|
+
gpr_log(GPR_ERROR, " .. kicked_without_poller");
|
867
|
+
}
|
752
868
|
return GRPC_ERROR_NONE;
|
753
869
|
}
|
754
870
|
grpc_pollset_worker *next_worker = root_worker->next;
|
755
|
-
if (root_worker ==
|
756
|
-
|
757
|
-
|
758
|
-
|
871
|
+
if (root_worker->kick_state == KICKED) {
|
872
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
873
|
+
gpr_log(GPR_ERROR, " .. already kicked %p", root_worker);
|
874
|
+
}
|
875
|
+
SET_KICK_STATE(root_worker, KICKED);
|
876
|
+
return GRPC_ERROR_NONE;
|
877
|
+
} else if (next_worker->kick_state == KICKED) {
|
878
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
879
|
+
gpr_log(GPR_ERROR, " .. already kicked %p", next_worker);
|
880
|
+
}
|
881
|
+
SET_KICK_STATE(next_worker, KICKED);
|
882
|
+
return GRPC_ERROR_NONE;
|
883
|
+
} else if (root_worker ==
|
884
|
+
next_worker && // only try and wake up a poller if
|
885
|
+
// there is no next worker
|
886
|
+
root_worker == (grpc_pollset_worker *)gpr_atm_no_barrier_load(
|
887
|
+
&g_active_poller)) {
|
888
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
889
|
+
gpr_log(GPR_ERROR, " .. kicked %p", root_worker);
|
890
|
+
}
|
891
|
+
SET_KICK_STATE(root_worker, KICKED);
|
759
892
|
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
760
893
|
} else if (next_worker->kick_state == UNKICKED) {
|
894
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
895
|
+
gpr_log(GPR_ERROR, " .. kicked %p", next_worker);
|
896
|
+
}
|
761
897
|
GPR_ASSERT(next_worker->initialized_cv);
|
762
|
-
next_worker
|
898
|
+
SET_KICK_STATE(next_worker, KICKED);
|
763
899
|
gpr_cv_signal(&next_worker->cv);
|
764
900
|
return GRPC_ERROR_NONE;
|
901
|
+
} else if (next_worker->kick_state == DESIGNATED_POLLER) {
|
902
|
+
if (root_worker->kick_state != DESIGNATED_POLLER) {
|
903
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
904
|
+
gpr_log(
|
905
|
+
GPR_ERROR,
|
906
|
+
" .. kicked root non-poller %p (initialized_cv=%d) (poller=%p)",
|
907
|
+
root_worker, root_worker->initialized_cv, next_worker);
|
908
|
+
}
|
909
|
+
SET_KICK_STATE(root_worker, KICKED);
|
910
|
+
if (root_worker->initialized_cv) {
|
911
|
+
gpr_cv_signal(&root_worker->cv);
|
912
|
+
}
|
913
|
+
return GRPC_ERROR_NONE;
|
914
|
+
} else {
|
915
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
916
|
+
gpr_log(GPR_ERROR, " .. non-root poller %p (root=%p)", next_worker,
|
917
|
+
root_worker);
|
918
|
+
}
|
919
|
+
SET_KICK_STATE(next_worker, KICKED);
|
920
|
+
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
921
|
+
}
|
765
922
|
} else {
|
923
|
+
GPR_ASSERT(next_worker->kick_state == KICKED);
|
924
|
+
SET_KICK_STATE(next_worker, KICKED);
|
766
925
|
return GRPC_ERROR_NONE;
|
767
926
|
}
|
768
927
|
} else {
|
928
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
929
|
+
gpr_log(GPR_ERROR, " .. kicked while waking up");
|
930
|
+
}
|
769
931
|
return GRPC_ERROR_NONE;
|
770
932
|
}
|
771
933
|
} else if (specific_worker->kick_state == KICKED) {
|
934
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
935
|
+
gpr_log(GPR_ERROR, " .. specific worker already kicked");
|
936
|
+
}
|
772
937
|
return GRPC_ERROR_NONE;
|
773
938
|
} else if (gpr_tls_get(&g_current_thread_worker) ==
|
774
939
|
(intptr_t)specific_worker) {
|
775
|
-
|
940
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
941
|
+
gpr_log(GPR_ERROR, " .. mark %p kicked", specific_worker);
|
942
|
+
}
|
943
|
+
SET_KICK_STATE(specific_worker, KICKED);
|
776
944
|
return GRPC_ERROR_NONE;
|
777
945
|
} else if (specific_worker ==
|
778
946
|
(grpc_pollset_worker *)gpr_atm_no_barrier_load(&g_active_poller)) {
|
779
|
-
|
947
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
948
|
+
gpr_log(GPR_ERROR, " .. kick active poller");
|
949
|
+
}
|
950
|
+
SET_KICK_STATE(specific_worker, KICKED);
|
780
951
|
return grpc_wakeup_fd_wakeup(&global_wakeup_fd);
|
781
952
|
} else if (specific_worker->initialized_cv) {
|
782
|
-
|
953
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
954
|
+
gpr_log(GPR_ERROR, " .. kick waiting worker");
|
955
|
+
}
|
956
|
+
SET_KICK_STATE(specific_worker, KICKED);
|
783
957
|
gpr_cv_signal(&specific_worker->cv);
|
784
958
|
return GRPC_ERROR_NONE;
|
785
959
|
} else {
|
786
|
-
|
960
|
+
if (GRPC_TRACER_ON(grpc_polling_trace)) {
|
961
|
+
gpr_log(GPR_ERROR, " .. kick non-waiting worker");
|
962
|
+
}
|
963
|
+
SET_KICK_STATE(specific_worker, KICKED);
|
787
964
|
return GRPC_ERROR_NONE;
|
788
965
|
}
|
789
966
|
}
|
@@ -791,84 +968,6 @@ static grpc_error *pollset_kick(grpc_pollset *pollset,
|
|
791
968
|
static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
|
792
969
|
grpc_fd *fd) {}
|
793
970
|
|
794
|
-
/*******************************************************************************
|
795
|
-
* Workqueue Definitions
|
796
|
-
*/
|
797
|
-
|
798
|
-
#ifdef GRPC_WORKQUEUE_REFCOUNT_DEBUG
|
799
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue,
|
800
|
-
const char *file, int line,
|
801
|
-
const char *reason) {
|
802
|
-
return workqueue;
|
803
|
-
}
|
804
|
-
|
805
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx, grpc_workqueue *workqueue,
|
806
|
-
const char *file, int line, const char *reason) {}
|
807
|
-
#else
|
808
|
-
static grpc_workqueue *workqueue_ref(grpc_workqueue *workqueue) {
|
809
|
-
return workqueue;
|
810
|
-
}
|
811
|
-
|
812
|
-
static void workqueue_unref(grpc_exec_ctx *exec_ctx,
|
813
|
-
grpc_workqueue *workqueue) {}
|
814
|
-
#endif
|
815
|
-
|
816
|
-
static void wq_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
817
|
-
grpc_error *error) {
|
818
|
-
// find a neighbourhood to wakeup
|
819
|
-
bool scheduled = false;
|
820
|
-
size_t initial_neighbourhood = choose_neighbourhood();
|
821
|
-
for (size_t i = 0; !scheduled && i < g_num_neighbourhoods; i++) {
|
822
|
-
pollset_neighbourhood *neighbourhood =
|
823
|
-
&g_neighbourhoods[(initial_neighbourhood + i) % g_num_neighbourhoods];
|
824
|
-
if (gpr_mu_trylock(&neighbourhood->mu)) {
|
825
|
-
if (neighbourhood->active_root != NULL) {
|
826
|
-
grpc_pollset *inspect = neighbourhood->active_root;
|
827
|
-
do {
|
828
|
-
if (gpr_mu_trylock(&inspect->mu)) {
|
829
|
-
if (inspect->root_worker != NULL) {
|
830
|
-
grpc_pollset_worker *inspect_worker = inspect->root_worker;
|
831
|
-
do {
|
832
|
-
if (inspect_worker->kick_state == UNKICKED) {
|
833
|
-
inspect_worker->kick_state = KICKED;
|
834
|
-
grpc_closure_list_append(
|
835
|
-
&inspect_worker->schedule_on_end_work, closure, error);
|
836
|
-
if (inspect_worker->initialized_cv) {
|
837
|
-
gpr_cv_signal(&inspect_worker->cv);
|
838
|
-
}
|
839
|
-
scheduled = true;
|
840
|
-
}
|
841
|
-
inspect_worker = inspect_worker->next;
|
842
|
-
} while (!scheduled && inspect_worker != inspect->root_worker);
|
843
|
-
}
|
844
|
-
gpr_mu_unlock(&inspect->mu);
|
845
|
-
}
|
846
|
-
inspect = inspect->next;
|
847
|
-
} while (!scheduled && inspect != neighbourhood->active_root);
|
848
|
-
}
|
849
|
-
gpr_mu_unlock(&neighbourhood->mu);
|
850
|
-
}
|
851
|
-
}
|
852
|
-
if (!scheduled) {
|
853
|
-
gpr_mu_lock(&g_wq_mu);
|
854
|
-
grpc_closure_list_append(&g_wq_items, closure, error);
|
855
|
-
gpr_mu_unlock(&g_wq_mu);
|
856
|
-
GRPC_LOG_IF_ERROR("workqueue_scheduler",
|
857
|
-
grpc_wakeup_fd_wakeup(&global_wakeup_fd));
|
858
|
-
}
|
859
|
-
}
|
860
|
-
|
861
|
-
static const grpc_closure_scheduler_vtable
|
862
|
-
singleton_workqueue_scheduler_vtable = {wq_sched, wq_sched,
|
863
|
-
"epoll1_workqueue"};
|
864
|
-
|
865
|
-
static grpc_closure_scheduler singleton_workqueue_scheduler = {
|
866
|
-
&singleton_workqueue_scheduler_vtable};
|
867
|
-
|
868
|
-
static grpc_closure_scheduler *workqueue_scheduler(grpc_workqueue *workqueue) {
|
869
|
-
return &singleton_workqueue_scheduler;
|
870
|
-
}
|
871
|
-
|
872
971
|
/*******************************************************************************
|
873
972
|
* Pollset-set Definitions
|
874
973
|
*/
|
@@ -907,6 +1006,7 @@ static void pollset_set_del_pollset_set(grpc_exec_ctx *exec_ctx,
|
|
907
1006
|
static void shutdown_engine(void) {
|
908
1007
|
fd_global_shutdown();
|
909
1008
|
pollset_global_shutdown();
|
1009
|
+
close(g_epfd);
|
910
1010
|
}
|
911
1011
|
|
912
1012
|
static const grpc_event_engine_vtable vtable = {
|
@@ -920,7 +1020,6 @@ static const grpc_event_engine_vtable vtable = {
|
|
920
1020
|
.fd_notify_on_read = fd_notify_on_read,
|
921
1021
|
.fd_notify_on_write = fd_notify_on_write,
|
922
1022
|
.fd_get_read_notifier_pollset = fd_get_read_notifier_pollset,
|
923
|
-
.fd_get_workqueue = fd_get_workqueue,
|
924
1023
|
|
925
1024
|
.pollset_init = pollset_init,
|
926
1025
|
.pollset_shutdown = pollset_shutdown,
|
@@ -938,18 +1037,17 @@ static const grpc_event_engine_vtable vtable = {
|
|
938
1037
|
.pollset_set_add_fd = pollset_set_add_fd,
|
939
1038
|
.pollset_set_del_fd = pollset_set_del_fd,
|
940
1039
|
|
941
|
-
.workqueue_ref = workqueue_ref,
|
942
|
-
.workqueue_unref = workqueue_unref,
|
943
|
-
.workqueue_scheduler = workqueue_scheduler,
|
944
|
-
|
945
1040
|
.shutdown_engine = shutdown_engine,
|
946
1041
|
};
|
947
1042
|
|
948
1043
|
/* It is possible that GLIBC has epoll but the underlying kernel doesn't.
|
949
1044
|
* Create a dummy epoll_fd to make sure epoll support is available */
|
950
1045
|
const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
|
951
|
-
/* TODO(
|
952
|
-
|
1046
|
+
/* TODO(sreek): Temporarily disable this poller unless explicitly requested
|
1047
|
+
* via GRPC_POLL_STRATEGY */
|
1048
|
+
if (!explicit_request) {
|
1049
|
+
return NULL;
|
1050
|
+
}
|
953
1051
|
|
954
1052
|
if (!grpc_has_wakeup_fd()) {
|
955
1053
|
return NULL;
|
@@ -969,6 +1067,8 @@ const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
|
|
969
1067
|
return NULL;
|
970
1068
|
}
|
971
1069
|
|
1070
|
+
gpr_log(GPR_ERROR, "grpc epoll fd: %d", g_epfd);
|
1071
|
+
|
972
1072
|
return &vtable;
|
973
1073
|
}
|
974
1074
|
|