grpc 1.37.1 → 1.38.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 +64 -58
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +5 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +101 -93
- data/src/core/ext/xds/xds_api.h +6 -6
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +4 -4
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +11 -10
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +36 -34
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +477 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- metadata +68 -45
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -219,9 +219,9 @@ static void pollset_global_shutdown(void) {
|
|
219
219
|
/// The Apple pollset simply waits on a condition variable until it is kicked.
|
220
220
|
/// The network events are handled in the global run loop thread. Processing of
|
221
221
|
/// these events will eventually trigger the kick.
|
222
|
-
static
|
223
|
-
|
224
|
-
|
222
|
+
static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
223
|
+
grpc_pollset_worker** worker,
|
224
|
+
grpc_millis deadline) {
|
225
225
|
GRPC_POLLING_TRACE("pollset work: %p, worker: %p, deadline: %" PRIu64,
|
226
226
|
pollset, worker, deadline);
|
227
227
|
GrpcApplePollset* apple_pollset =
|
@@ -272,8 +272,8 @@ static void kick_worker(GrpcAppleWorker* worker) {
|
|
272
272
|
/// The caller must acquire the lock GrpcApplePollset.mu before calling this
|
273
273
|
/// function. The kick action simply signals the condition variable of the
|
274
274
|
/// worker.
|
275
|
-
static
|
276
|
-
|
275
|
+
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
276
|
+
grpc_pollset_worker* specific_worker) {
|
277
277
|
GrpcApplePollset* apple_pollset =
|
278
278
|
reinterpret_cast<GrpcApplePollset*>(pollset);
|
279
279
|
|
@@ -241,7 +241,7 @@ struct grpc_pollset_set {
|
|
241
241
|
* Common helpers
|
242
242
|
*/
|
243
243
|
|
244
|
-
static bool append_error(
|
244
|
+
static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
|
245
245
|
const char* desc) {
|
246
246
|
if (error == GRPC_ERROR_NONE) return true;
|
247
247
|
if (*composite == GRPC_ERROR_NONE) {
|
@@ -382,7 +382,7 @@ static int fd_wrapped_fd(grpc_fd* fd) { return fd->fd; }
|
|
382
382
|
/* if 'releasing_fd' is true, it means that we are going to detach the internal
|
383
383
|
* fd from grpc_fd structure (i.e which means we should not be calling
|
384
384
|
* shutdown() syscall on that fd) */
|
385
|
-
static void fd_shutdown_internal(grpc_fd* fd,
|
385
|
+
static void fd_shutdown_internal(grpc_fd* fd, grpc_error_handle why,
|
386
386
|
bool releasing_fd) {
|
387
387
|
if (fd->read_closure->SetShutdown(GRPC_ERROR_REF(why))) {
|
388
388
|
if (!releasing_fd) {
|
@@ -402,13 +402,13 @@ static void fd_shutdown_internal(grpc_fd* fd, grpc_error* why,
|
|
402
402
|
}
|
403
403
|
|
404
404
|
/* Might be called multiple times */
|
405
|
-
static void fd_shutdown(grpc_fd* fd,
|
405
|
+
static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
406
406
|
fd_shutdown_internal(fd, why, false);
|
407
407
|
}
|
408
408
|
|
409
409
|
static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
|
410
410
|
const char* reason) {
|
411
|
-
|
411
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
412
412
|
bool is_release_fd = (release_fd != nullptr);
|
413
413
|
|
414
414
|
if (!fd->read_closure->IsShutdown()) {
|
@@ -514,12 +514,12 @@ static size_t choose_neighborhood(void) {
|
|
514
514
|
return static_cast<size_t>(gpr_cpu_current_cpu()) % g_num_neighborhoods;
|
515
515
|
}
|
516
516
|
|
517
|
-
static
|
517
|
+
static grpc_error_handle pollset_global_init(void) {
|
518
518
|
gpr_tls_init(&g_current_thread_pollset);
|
519
519
|
gpr_tls_init(&g_current_thread_worker);
|
520
520
|
gpr_atm_no_barrier_store(&g_active_poller, 0);
|
521
521
|
global_wakeup_fd.read_fd = -1;
|
522
|
-
|
522
|
+
grpc_error_handle err = grpc_wakeup_fd_init(&global_wakeup_fd);
|
523
523
|
if (err != GRPC_ERROR_NONE) return err;
|
524
524
|
struct epoll_event ev;
|
525
525
|
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
|
@@ -589,9 +589,9 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
589
589
|
gpr_mu_destroy(&pollset->mu);
|
590
590
|
}
|
591
591
|
|
592
|
-
static
|
592
|
+
static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
|
593
593
|
GPR_TIMER_SCOPE("pollset_kick_all", 0);
|
594
|
-
|
594
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
595
595
|
if (pollset->root_worker != nullptr) {
|
596
596
|
grpc_pollset_worker* worker = pollset->root_worker;
|
597
597
|
do {
|
@@ -663,11 +663,11 @@ static int poll_deadline_to_millis_timeout(grpc_millis millis) {
|
|
663
663
|
NOTE ON SYNCRHONIZATION: Similar to do_epoll_wait(), this function is only
|
664
664
|
called by g_active_poller thread. So there is no need for synchronization
|
665
665
|
when accessing fields in g_epoll_set */
|
666
|
-
static
|
666
|
+
static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
|
667
667
|
GPR_TIMER_SCOPE("process_epoll_events", 0);
|
668
668
|
|
669
669
|
static const char* err_desc = "process_events";
|
670
|
-
|
670
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
671
671
|
long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
|
672
672
|
long cursor = gpr_atm_acq_load(&g_epoll_set.cursor);
|
673
673
|
for (int idx = 0;
|
@@ -715,7 +715,7 @@ static grpc_error* process_epoll_events(grpc_pollset* /*pollset*/) {
|
|
715
715
|
NOTE ON SYNCHRONIZATION: At any point of time, only the g_active_poller
|
716
716
|
(i.e the designated poller thread) will be calling this function. So there is
|
717
717
|
no need for any synchronization when accesing fields in g_epoll_set */
|
718
|
-
static
|
718
|
+
static grpc_error_handle do_epoll_wait(grpc_pollset* ps, grpc_millis deadline) {
|
719
719
|
GPR_TIMER_SCOPE("do_epoll_wait", 0);
|
720
720
|
|
721
721
|
int r;
|
@@ -1014,12 +1014,12 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
1014
1014
|
The function pollset_work() may temporarily release the lock (pollset->po.mu)
|
1015
1015
|
during the course of its execution but it will always re-acquire the lock and
|
1016
1016
|
ensure that it is held by the time the function returns */
|
1017
|
-
static
|
1018
|
-
|
1019
|
-
|
1017
|
+
static grpc_error_handle pollset_work(grpc_pollset* ps,
|
1018
|
+
grpc_pollset_worker** worker_hdl,
|
1019
|
+
grpc_millis deadline) {
|
1020
1020
|
GPR_TIMER_SCOPE("pollset_work", 0);
|
1021
1021
|
grpc_pollset_worker worker;
|
1022
|
-
|
1022
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1023
1023
|
static const char* err_desc = "pollset_work";
|
1024
1024
|
if (ps->kicked_without_poller) {
|
1025
1025
|
ps->kicked_without_poller = false;
|
@@ -1065,11 +1065,11 @@ static grpc_error* pollset_work(grpc_pollset* ps,
|
|
1065
1065
|
return error;
|
1066
1066
|
}
|
1067
1067
|
|
1068
|
-
static
|
1069
|
-
|
1068
|
+
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
1069
|
+
grpc_pollset_worker* specific_worker) {
|
1070
1070
|
GPR_TIMER_SCOPE("pollset_kick", 0);
|
1071
1071
|
GRPC_STATS_INC_POLLSET_KICK();
|
1072
|
-
|
1072
|
+
grpc_error_handle ret_err = GRPC_ERROR_NONE;
|
1073
1073
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1074
1074
|
std::vector<std::string> log;
|
1075
1075
|
log.push_back(absl::StrFormat(
|
@@ -1260,7 +1260,7 @@ static bool is_any_background_poller_thread(void) { return false; }
|
|
1260
1260
|
static void shutdown_background_closure(void) {}
|
1261
1261
|
|
1262
1262
|
static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
1263
|
-
|
1263
|
+
grpc_error_handle /*error*/) {
|
1264
1264
|
return false;
|
1265
1265
|
}
|
1266
1266
|
|
@@ -134,7 +134,7 @@ static std::string pollable_desc(pollable* p) {
|
|
134
134
|
/// added
|
135
135
|
static pollable* g_empty_pollable;
|
136
136
|
|
137
|
-
static
|
137
|
+
static grpc_error_handle pollable_create(pollable_type type, pollable** p);
|
138
138
|
static pollable* pollable_ref(pollable* p,
|
139
139
|
const grpc_core::DebugLocation& dbg_loc,
|
140
140
|
const char* reason) {
|
@@ -314,7 +314,7 @@ struct grpc_pollset_set {
|
|
314
314
|
* Common helpers
|
315
315
|
*/
|
316
316
|
|
317
|
-
static bool append_error(
|
317
|
+
static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
|
318
318
|
const char* desc) {
|
319
319
|
if (error == GRPC_ERROR_NONE) return true;
|
320
320
|
if (*composite == GRPC_ERROR_NONE) {
|
@@ -372,7 +372,7 @@ static void ref_by(grpc_fd* fd, int n) {
|
|
372
372
|
}
|
373
373
|
|
374
374
|
/* Uninitialize and add to the freelist */
|
375
|
-
static void fd_destroy(void* arg,
|
375
|
+
static void fd_destroy(void* arg, grpc_error_handle /*error*/) {
|
376
376
|
grpc_fd* fd = static_cast<grpc_fd*>(arg);
|
377
377
|
fd->destroy();
|
378
378
|
|
@@ -509,7 +509,7 @@ static bool fd_is_shutdown(grpc_fd* fd) {
|
|
509
509
|
}
|
510
510
|
|
511
511
|
/* Might be called multiple times */
|
512
|
-
static void fd_shutdown(grpc_fd* fd,
|
512
|
+
static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
513
513
|
if (fd->read_closure.SetShutdown(GRPC_ERROR_REF(why))) {
|
514
514
|
if (shutdown(fd->fd, SHUT_RDWR)) {
|
515
515
|
if (errno != ENOTCONN) {
|
@@ -556,7 +556,7 @@ static void fd_add_pollset(grpc_fd* fd, grpc_pollset* pollset) {
|
|
556
556
|
* Pollable Definitions
|
557
557
|
*/
|
558
558
|
|
559
|
-
static
|
559
|
+
static grpc_error_handle pollable_create(pollable_type type, pollable** p) {
|
560
560
|
*p = nullptr;
|
561
561
|
|
562
562
|
int epfd = epoll_create1(EPOLL_CLOEXEC);
|
@@ -565,7 +565,7 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) {
|
|
565
565
|
}
|
566
566
|
GRPC_FD_TRACE("Pollable_create: created epfd: %d (type: %d)", epfd, type);
|
567
567
|
*p = static_cast<pollable*>(gpr_malloc(sizeof(**p)));
|
568
|
-
|
568
|
+
grpc_error_handle err = grpc_wakeup_fd_init(&(*p)->wakeup);
|
569
569
|
if (err != GRPC_ERROR_NONE) {
|
570
570
|
GRPC_FD_TRACE(
|
571
571
|
"Pollable_create: closed epfd: %d (type: %d). wakeupfd_init error",
|
@@ -609,8 +609,8 @@ static grpc_error* pollable_create(pollable_type type, pollable** p) {
|
|
609
609
|
return GRPC_ERROR_NONE;
|
610
610
|
}
|
611
611
|
|
612
|
-
static
|
613
|
-
|
612
|
+
static grpc_error_handle pollable_add_fd(pollable* p, grpc_fd* fd) {
|
613
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
614
614
|
static const char* err_desc = "pollable_add_fd";
|
615
615
|
const int epfd = p->epfd;
|
616
616
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
@@ -647,7 +647,7 @@ GPR_TLS_DECL(g_current_thread_pollset);
|
|
647
647
|
GPR_TLS_DECL(g_current_thread_worker);
|
648
648
|
|
649
649
|
/* Global state management */
|
650
|
-
static
|
650
|
+
static grpc_error_handle pollset_global_init(void) {
|
651
651
|
gpr_tls_init(&g_current_thread_pollset);
|
652
652
|
gpr_tls_init(&g_current_thread_worker);
|
653
653
|
return pollable_create(PO_EMPTY, &g_empty_pollable);
|
@@ -681,7 +681,7 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
|
|
681
681
|
/* pollset->mu must be held before calling this function,
|
682
682
|
* pollset->active_pollable->mu & specific_worker->pollable_obj->mu must not be
|
683
683
|
* held */
|
684
|
-
static
|
684
|
+
static grpc_error_handle kick_one_worker(grpc_pollset_worker* specific_worker) {
|
685
685
|
GPR_TIMER_SCOPE("kick_one_worker", 0);
|
686
686
|
pollable* p = specific_worker->pollable_obj;
|
687
687
|
grpc_core::MutexLockForGprMu lock(&p->mu);
|
@@ -708,7 +708,7 @@ static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) {
|
|
708
708
|
gpr_log(GPR_INFO, "PS:%p kicked_specific_via_wakeup_fd", p);
|
709
709
|
}
|
710
710
|
specific_worker->kicked = true;
|
711
|
-
|
711
|
+
grpc_error_handle error = grpc_wakeup_fd_wakeup(&p->wakeup);
|
712
712
|
return error;
|
713
713
|
}
|
714
714
|
if (specific_worker->initialized_cv) {
|
@@ -725,8 +725,8 @@ static grpc_error* kick_one_worker(grpc_pollset_worker* specific_worker) {
|
|
725
725
|
return GRPC_ERROR_NONE;
|
726
726
|
}
|
727
727
|
|
728
|
-
static
|
729
|
-
|
728
|
+
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
729
|
+
grpc_pollset_worker* specific_worker) {
|
730
730
|
GPR_TIMER_SCOPE("pollset_kick", 0);
|
731
731
|
GRPC_STATS_INC_POLLSET_KICK();
|
732
732
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
@@ -777,9 +777,9 @@ static grpc_error* pollset_kick(grpc_pollset* pollset,
|
|
777
777
|
}
|
778
778
|
}
|
779
779
|
|
780
|
-
static
|
780
|
+
static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
|
781
781
|
GPR_TIMER_SCOPE("pollset_kick_all", 0);
|
782
|
-
|
782
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
783
783
|
const char* err_desc = "pollset_kick_all";
|
784
784
|
grpc_pollset_worker* w = pollset->root_worker;
|
785
785
|
if (w != nullptr) {
|
@@ -828,9 +828,9 @@ static void fd_has_errors(grpc_fd* fd) { fd->error_closure.SetReady(); }
|
|
828
828
|
*
|
829
829
|
* Note that if a pollable object is already attached to the fd, it may be of
|
830
830
|
* either PO_FD or PO_MULTI type */
|
831
|
-
static
|
831
|
+
static grpc_error_handle get_fd_pollable(grpc_fd* fd, pollable** p) {
|
832
832
|
gpr_mu_lock(&fd->pollable_mu);
|
833
|
-
|
833
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
834
834
|
static const char* err_desc = "get_fd_pollable";
|
835
835
|
if (fd->pollable_obj == nullptr) {
|
836
836
|
if (append_error(&error, pollable_create(PO_FD, &fd->pollable_obj),
|
@@ -863,8 +863,9 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
863
863
|
pollset_maybe_finish_shutdown(pollset);
|
864
864
|
}
|
865
865
|
|
866
|
-
static
|
867
|
-
|
866
|
+
static grpc_error_handle pollable_process_events(grpc_pollset* pollset,
|
867
|
+
pollable* pollable_obj,
|
868
|
+
bool drain) {
|
868
869
|
GPR_TIMER_SCOPE("pollable_process_events", 0);
|
869
870
|
static const char* err_desc = "pollset_process_events";
|
870
871
|
// Use a simple heuristic to determine how many fd events to process
|
@@ -877,7 +878,7 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
|
877
878
|
if (handle_count == 0) {
|
878
879
|
handle_count = 1;
|
879
880
|
}
|
880
|
-
|
881
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
881
882
|
for (int i = 0; (drain || i < handle_count) &&
|
882
883
|
pollable_obj->event_cursor != pollable_obj->event_count;
|
883
884
|
i++) {
|
@@ -932,7 +933,7 @@ static void pollset_destroy(grpc_pollset* pollset) {
|
|
932
933
|
gpr_mu_destroy(&pollset->mu);
|
933
934
|
}
|
934
935
|
|
935
|
-
static
|
936
|
+
static grpc_error_handle pollable_epoll(pollable* p, grpc_millis deadline) {
|
936
937
|
GPR_TIMER_SCOPE("pollable_epoll", 0);
|
937
938
|
int timeout = poll_deadline_to_millis_timeout(deadline);
|
938
939
|
|
@@ -1103,9 +1104,9 @@ static long sys_gettid(void) { return syscall(__NR_gettid); }
|
|
1103
1104
|
The function pollset_work() may temporarily release the lock (pollset->po.mu)
|
1104
1105
|
during the course of its execution but it will always re-acquire the lock and
|
1105
1106
|
ensure that it is held by the time the function returns */
|
1106
|
-
static
|
1107
|
-
|
1108
|
-
|
1107
|
+
static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
1108
|
+
grpc_pollset_worker** worker_hdl,
|
1109
|
+
grpc_millis deadline) {
|
1109
1110
|
GPR_TIMER_SCOPE("pollset_work", 0);
|
1110
1111
|
#ifdef GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP
|
1111
1112
|
grpc_pollset_worker* worker =
|
@@ -1126,7 +1127,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
1126
1127
|
deadline, pollset->kicked_without_poller, pollset->active_pollable);
|
1127
1128
|
}
|
1128
1129
|
static const char* err_desc = "pollset_work";
|
1129
|
-
|
1130
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1130
1131
|
if (pollset->kicked_without_poller) {
|
1131
1132
|
pollset->kicked_without_poller = false;
|
1132
1133
|
} else {
|
@@ -1155,10 +1156,10 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
|
|
1155
1156
|
return error;
|
1156
1157
|
}
|
1157
1158
|
|
1158
|
-
static
|
1159
|
+
static grpc_error_handle pollset_transition_pollable_from_empty_to_fd_locked(
|
1159
1160
|
grpc_pollset* pollset, grpc_fd* fd) {
|
1160
1161
|
static const char* err_desc = "pollset_transition_pollable_from_empty_to_fd";
|
1161
|
-
|
1162
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1162
1163
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1163
1164
|
gpr_log(GPR_INFO,
|
1164
1165
|
"PS:%p add fd %p (%d); transition pollable from empty to fd",
|
@@ -1171,10 +1172,10 @@ static grpc_error* pollset_transition_pollable_from_empty_to_fd_locked(
|
|
1171
1172
|
return error;
|
1172
1173
|
}
|
1173
1174
|
|
1174
|
-
static
|
1175
|
+
static grpc_error_handle pollset_transition_pollable_from_fd_to_multi_locked(
|
1175
1176
|
grpc_pollset* pollset, grpc_fd* and_add_fd) {
|
1176
1177
|
static const char* err_desc = "pollset_transition_pollable_from_fd_to_multi";
|
1177
|
-
|
1178
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1178
1179
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1179
1180
|
gpr_log(
|
1180
1181
|
GPR_INFO,
|
@@ -1200,8 +1201,9 @@ static grpc_error* pollset_transition_pollable_from_fd_to_multi_locked(
|
|
1200
1201
|
}
|
1201
1202
|
|
1202
1203
|
/* expects pollsets locked, flag whether fd is locked or not */
|
1203
|
-
static
|
1204
|
-
|
1204
|
+
static grpc_error_handle pollset_add_fd_locked(grpc_pollset* pollset,
|
1205
|
+
grpc_fd* fd) {
|
1206
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1205
1207
|
pollable* po_at_start =
|
1206
1208
|
POLLABLE_REF(pollset->active_pollable, "pollset_add_fd");
|
1207
1209
|
switch (pollset->active_pollable->type) {
|
@@ -1236,9 +1238,9 @@ static grpc_error* pollset_add_fd_locked(grpc_pollset* pollset, grpc_fd* fd) {
|
|
1236
1238
|
return error;
|
1237
1239
|
}
|
1238
1240
|
|
1239
|
-
static
|
1240
|
-
|
1241
|
-
|
1241
|
+
static grpc_error_handle pollset_as_multipollable_locked(
|
1242
|
+
grpc_pollset* pollset, pollable** pollable_obj) {
|
1243
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1242
1244
|
pollable* po_at_start =
|
1243
1245
|
POLLABLE_REF(pollset->active_pollable, "pollset_as_multipollable");
|
1244
1246
|
switch (pollset->active_pollable->type) {
|
@@ -1297,7 +1299,7 @@ static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
|
|
1297
1299
|
}
|
1298
1300
|
|
1299
1301
|
grpc_core::MutexLockForGprMu lock(&pollset->mu);
|
1300
|
-
|
1302
|
+
grpc_error_handle error = pollset_add_fd_locked(pollset, fd);
|
1301
1303
|
|
1302
1304
|
// If we are in PO_MULTI mode, we should update the pollsets of the FD.
|
1303
1305
|
if (gpr_atm_no_barrier_load(&pollset->active_pollable_type) == PO_MULTI) {
|
@@ -1354,7 +1356,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
|
1354
1356
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1355
1357
|
gpr_log(GPR_INFO, "PSS:%p: add fd %p (%d)", pss, fd, fd->fd);
|
1356
1358
|
}
|
1357
|
-
|
1359
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1358
1360
|
static const char* err_desc = "pollset_set_add_fd";
|
1359
1361
|
pss = pss_lock_adam(pss);
|
1360
1362
|
for (size_t i = 0; i < pss->pollset_count; i++) {
|
@@ -1421,13 +1423,14 @@ static void pollset_set_del_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
|
1421
1423
|
|
1422
1424
|
// add all fds to pollables, and output a new array of unorphaned out_fds
|
1423
1425
|
// assumes pollsets are multipollable
|
1424
|
-
static
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1426
|
+
static grpc_error_handle add_fds_to_pollsets(grpc_fd** fds, size_t fd_count,
|
1427
|
+
grpc_pollset** pollsets,
|
1428
|
+
size_t pollset_count,
|
1429
|
+
const char* err_desc,
|
1430
|
+
grpc_fd** out_fds,
|
1431
|
+
size_t* out_fd_count) {
|
1429
1432
|
GPR_TIMER_SCOPE("add_fds_to_pollsets", 0);
|
1430
|
-
|
1433
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1431
1434
|
for (size_t i = 0; i < fd_count; i++) {
|
1432
1435
|
gpr_mu_lock(&fds[i]->orphan_mu);
|
1433
1436
|
if ((gpr_atm_no_barrier_load(&fds[i]->refst) & 1) == 0) {
|
@@ -1451,7 +1454,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
|
1451
1454
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1452
1455
|
gpr_log(GPR_INFO, "PSS:%p: add pollset %p", pss, ps);
|
1453
1456
|
}
|
1454
|
-
|
1457
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1455
1458
|
static const char* err_desc = "pollset_set_add_pollset";
|
1456
1459
|
pollable* pollable_obj = nullptr;
|
1457
1460
|
gpr_mu_lock(&ps->mu);
|
@@ -1488,7 +1491,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1488
1491
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1489
1492
|
gpr_log(GPR_INFO, "PSS: merge (%p, %p)", a, b);
|
1490
1493
|
}
|
1491
|
-
|
1494
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1492
1495
|
static const char* err_desc = "pollset_set_add_fd";
|
1493
1496
|
for (;;) {
|
1494
1497
|
if (a == b) {
|
@@ -1573,7 +1576,7 @@ static bool is_any_background_poller_thread(void) { return false; }
|
|
1573
1576
|
static void shutdown_background_closure(void) {}
|
1574
1577
|
|
1575
1578
|
static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
1576
|
-
|
1579
|
+
grpc_error_handle /*error*/) {
|
1577
1580
|
return false;
|
1578
1581
|
}
|
1579
1582
|
|
@@ -89,7 +89,7 @@ struct grpc_fd {
|
|
89
89
|
int closed;
|
90
90
|
int released;
|
91
91
|
gpr_atm pollhup;
|
92
|
-
|
92
|
+
grpc_error_handle shutdown_error;
|
93
93
|
|
94
94
|
/* The watcher list.
|
95
95
|
|
@@ -230,9 +230,9 @@ static int poll_deadline_to_millis_timeout(grpc_millis deadline);
|
|
230
230
|
#define GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP 2
|
231
231
|
/* As per pollset_kick, with an extended set of flags (defined above)
|
232
232
|
-- mostly for fd_posix's use. */
|
233
|
-
static
|
234
|
-
|
235
|
-
|
233
|
+
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
234
|
+
grpc_pollset_worker* specific_worker,
|
235
|
+
uint32_t flags) GRPC_MUST_USE_RESULT;
|
236
236
|
|
237
237
|
/* Return 1 if the pollset has active threads in pollset_work (pollset must
|
238
238
|
* be locked) */
|
@@ -394,11 +394,12 @@ static bool fd_is_orphaned(grpc_fd* fd) {
|
|
394
394
|
return (gpr_atm_acq_load(&fd->refst) & 1) == 0;
|
395
395
|
}
|
396
396
|
|
397
|
-
static
|
397
|
+
static grpc_error_handle pollset_kick_locked(grpc_fd_watcher* watcher) {
|
398
398
|
gpr_mu_lock(&watcher->pollset->mu);
|
399
399
|
GPR_ASSERT(watcher->worker);
|
400
|
-
|
401
|
-
|
400
|
+
grpc_error_handle err =
|
401
|
+
pollset_kick_ext(watcher->pollset, watcher->worker,
|
402
|
+
GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP);
|
402
403
|
gpr_mu_unlock(&watcher->pollset->mu);
|
403
404
|
return err;
|
404
405
|
}
|
@@ -484,7 +485,7 @@ static void fd_ref(grpc_fd* fd) { ref_by(fd, 2); }
|
|
484
485
|
static void fd_unref(grpc_fd* fd) { unref_by(fd, 2); }
|
485
486
|
#endif
|
486
487
|
|
487
|
-
static
|
488
|
+
static grpc_error_handle fd_shutdown_error(grpc_fd* fd) {
|
488
489
|
if (!fd->shutdown) {
|
489
490
|
return GRPC_ERROR_NONE;
|
490
491
|
} else {
|
@@ -537,7 +538,7 @@ static int set_ready_locked(grpc_fd* fd, grpc_closure** st) {
|
|
537
538
|
}
|
538
539
|
}
|
539
540
|
|
540
|
-
static void fd_shutdown(grpc_fd* fd,
|
541
|
+
static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
|
541
542
|
gpr_mu_lock(&fd->mu);
|
542
543
|
/* only shutdown once */
|
543
544
|
if (!fd->shutdown) {
|
@@ -747,7 +748,8 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
|
|
747
748
|
worker->prev->next = worker->next->prev = worker;
|
748
749
|
}
|
749
750
|
|
750
|
-
static void kick_append_error(
|
751
|
+
static void kick_append_error(grpc_error_handle* composite,
|
752
|
+
grpc_error_handle error) {
|
751
753
|
if (error == GRPC_ERROR_NONE) return;
|
752
754
|
if (*composite == GRPC_ERROR_NONE) {
|
753
755
|
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure");
|
@@ -755,11 +757,11 @@ static void kick_append_error(grpc_error** composite, grpc_error* error) {
|
|
755
757
|
*composite = grpc_error_add_child(*composite, error);
|
756
758
|
}
|
757
759
|
|
758
|
-
static
|
759
|
-
|
760
|
-
|
760
|
+
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
|
761
|
+
grpc_pollset_worker* specific_worker,
|
762
|
+
uint32_t flags) {
|
761
763
|
GPR_TIMER_SCOPE("pollset_kick_ext", 0);
|
762
|
-
|
764
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
763
765
|
GRPC_STATS_INC_POLLSET_KICK();
|
764
766
|
|
765
767
|
/* pollset->mu already held */
|
@@ -826,14 +828,14 @@ static grpc_error* pollset_kick_ext(grpc_pollset* p,
|
|
826
828
|
return error;
|
827
829
|
}
|
828
830
|
|
829
|
-
static
|
830
|
-
|
831
|
+
static grpc_error_handle pollset_kick(grpc_pollset* p,
|
832
|
+
grpc_pollset_worker* specific_worker) {
|
831
833
|
return pollset_kick_ext(p, specific_worker, 0);
|
832
834
|
}
|
833
835
|
|
834
836
|
/* global state management */
|
835
837
|
|
836
|
-
static
|
838
|
+
static grpc_error_handle pollset_global_init(void) {
|
837
839
|
gpr_tls_init(&g_current_thread_poller);
|
838
840
|
gpr_tls_init(&g_current_thread_worker);
|
839
841
|
return GRPC_ERROR_NONE;
|
@@ -904,7 +906,8 @@ static void finish_shutdown(grpc_pollset* pollset) {
|
|
904
906
|
GRPC_ERROR_NONE);
|
905
907
|
}
|
906
908
|
|
907
|
-
static void work_combine_error(
|
909
|
+
static void work_combine_error(grpc_error_handle* composite,
|
910
|
+
grpc_error_handle error) {
|
908
911
|
if (error == GRPC_ERROR_NONE) return;
|
909
912
|
if (*composite == GRPC_ERROR_NONE) {
|
910
913
|
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work");
|
@@ -912,13 +915,13 @@ static void work_combine_error(grpc_error** composite, grpc_error* error) {
|
|
912
915
|
*composite = grpc_error_add_child(*composite, error);
|
913
916
|
}
|
914
917
|
|
915
|
-
static
|
916
|
-
|
917
|
-
|
918
|
+
static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
919
|
+
grpc_pollset_worker** worker_hdl,
|
920
|
+
grpc_millis deadline) {
|
918
921
|
GPR_TIMER_SCOPE("pollset_work", 0);
|
919
922
|
grpc_pollset_worker worker;
|
920
923
|
if (worker_hdl) *worker_hdl = &worker;
|
921
|
-
|
924
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
922
925
|
|
923
926
|
/* Avoid malloc for small number of elements. */
|
924
927
|
enum { inline_elements = 96 };
|
@@ -1336,7 +1339,7 @@ static bool is_any_background_poller_thread(void) { return false; }
|
|
1336
1339
|
static void shutdown_background_closure(void) {}
|
1337
1340
|
|
1338
1341
|
static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
|
1339
|
-
|
1342
|
+
grpc_error_handle /*error*/) {
|
1340
1343
|
return false;
|
1341
1344
|
}
|
1342
1345
|
|