grpc 1.55.0 → 1.56.0.pre3
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 +100 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -28,7 +28,6 @@
|
|
28
28
|
#include "absl/functional/any_invocable.h"
|
29
29
|
#include "absl/status/status.h"
|
30
30
|
#include "absl/status/statusor.h"
|
31
|
-
#include "absl/synchronization/mutex.h"
|
32
31
|
|
33
32
|
#include <grpc/event_engine/endpoint_config.h>
|
34
33
|
#include <grpc/event_engine/event_engine.h>
|
@@ -36,6 +35,7 @@
|
|
36
35
|
#include <grpc/event_engine/slice_buffer.h>
|
37
36
|
|
38
37
|
#include "src/core/lib/event_engine/posix.h"
|
38
|
+
#include "src/core/lib/gprpp/sync.h"
|
39
39
|
#include "src/core/lib/iomgr/port.h"
|
40
40
|
|
41
41
|
#ifdef GRPC_POSIX_SOCKET_TCP
|
@@ -79,7 +79,7 @@ class PosixEngineListenerImpl
|
|
79
79
|
// This class represents accepting for one bind fd belonging to the listener.
|
80
80
|
// Each AsyncConnectionAcceptor takes a ref to the parent
|
81
81
|
// PosixEngineListenerImpl object. So the PosixEngineListenerImpl can be
|
82
|
-
// deleted only after all
|
82
|
+
// deleted only after all AsyncConnectionAcceptors get destroyed.
|
83
83
|
class AsyncConnectionAcceptor {
|
84
84
|
public:
|
85
85
|
AsyncConnectionAcceptor(std::shared_ptr<EventEngine> engine,
|
@@ -143,12 +143,11 @@ class PosixEngineListenerImpl
|
|
143
143
|
absl::StatusOr<ListenerSocket> Find(
|
144
144
|
const grpc_event_engine::experimental::EventEngine::ResolvedAddress&
|
145
145
|
addr) override {
|
146
|
-
for (auto acceptor
|
147
|
-
|
148
|
-
|
149
|
-
memcmp((*acceptor)->Socket().addr.address(), addr.address(),
|
146
|
+
for (auto* acceptor : acceptors_) {
|
147
|
+
if (acceptor->Socket().addr.size() == addr.size() &&
|
148
|
+
memcmp(acceptor->Socket().addr.address(), addr.address(),
|
150
149
|
addr.size()) == 0) {
|
151
|
-
return
|
150
|
+
return acceptor->Socket();
|
152
151
|
}
|
153
152
|
}
|
154
153
|
return absl::NotFoundError("Socket not found!");
|
@@ -172,7 +171,7 @@ class PosixEngineListenerImpl
|
|
172
171
|
friend class AsyncConnectionAcceptor;
|
173
172
|
// The mutex ensures thread safety when multiple threads try to call Bind
|
174
173
|
// and Start in parallel.
|
175
|
-
|
174
|
+
grpc_core::Mutex mu_;
|
176
175
|
PosixEventPoller* poller_;
|
177
176
|
PosixTcpOptions options_;
|
178
177
|
std::shared_ptr<EventEngine> engine_;
|
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
#include "src/core/lib/event_engine/forkable.h"
|
35
35
|
#include "src/core/lib/event_engine/posix_engine/timer.h"
|
36
|
-
#include "src/core/lib/event_engine/thread_pool.h"
|
36
|
+
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
37
37
|
#include "src/core/lib/gprpp/notification.h"
|
38
38
|
#include "src/core/lib/gprpp/sync.h"
|
39
39
|
#include "src/core/lib/gprpp/thd.h"
|
@@ -22,6 +22,12 @@
|
|
22
22
|
namespace grpc_event_engine {
|
23
23
|
namespace experimental {
|
24
24
|
|
25
|
+
#if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM)
|
26
|
+
bool g_event_engine_supports_fd = true;
|
27
|
+
#else
|
28
|
+
bool g_event_engine_supports_fd = false;
|
29
|
+
#endif
|
30
|
+
|
25
31
|
bool UseEventEngineClient() {
|
26
32
|
// TODO(hork, eryu): Adjust the ifdefs accordingly when event engines become
|
27
33
|
// available for other platforms.
|
@@ -48,7 +54,7 @@ bool UseEventEngineListener() {
|
|
48
54
|
|
49
55
|
bool EventEngineSupportsFd() {
|
50
56
|
#if defined(GRPC_POSIX_SOCKET_TCP) && !defined(GRPC_CFSTREAM)
|
51
|
-
return
|
57
|
+
return g_event_engine_supports_fd;
|
52
58
|
#else
|
53
59
|
return false;
|
54
60
|
#endif
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "src/core/lib/event_engine/thread_pool.h"
|
21
|
+
#include "src/core/lib/event_engine/thread_pool/original_thread_pool.h"
|
22
22
|
|
23
23
|
#include <atomic>
|
24
24
|
#include <memory>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
namespace grpc_event_engine {
|
38
38
|
namespace experimental {
|
39
39
|
|
40
|
-
void
|
40
|
+
void OriginalThreadPool::StartThread(StatePtr state, StartThreadReason reason) {
|
41
41
|
state->thread_count.Add();
|
42
42
|
const auto now = grpc_core::Timestamp::Now();
|
43
43
|
switch (reason) {
|
@@ -95,13 +95,13 @@ void ThreadPool::StartThread(StatePtr state, StartThreadReason reason) {
|
|
95
95
|
.Start();
|
96
96
|
}
|
97
97
|
|
98
|
-
void
|
98
|
+
void OriginalThreadPool::ThreadFunc(StatePtr state) {
|
99
99
|
while (state->queue.Step()) {
|
100
100
|
}
|
101
101
|
state->thread_count.Remove();
|
102
102
|
}
|
103
103
|
|
104
|
-
bool
|
104
|
+
bool OriginalThreadPool::Queue::Step() {
|
105
105
|
grpc_core::ReleasableMutexLock lock(&queue_mu_);
|
106
106
|
// Wait until work is available or we are shutting down.
|
107
107
|
while (!shutdown_ && !forking_ && callbacks_.empty()) {
|
@@ -130,17 +130,19 @@ bool ThreadPool::Queue::Step() {
|
|
130
130
|
return true;
|
131
131
|
}
|
132
132
|
|
133
|
-
|
134
|
-
|
133
|
+
OriginalThreadPool::OriginalThreadPool(size_t reserve_threads)
|
134
|
+
: reserve_threads_(reserve_threads),
|
135
|
+
state_(std::make_shared<State>(reserve_threads)) {
|
136
|
+
for (unsigned i = 0; i < reserve_threads; i++) {
|
135
137
|
StartThread(state_, StartThreadReason::kInitialPool);
|
136
138
|
}
|
137
139
|
}
|
138
140
|
|
139
|
-
bool
|
141
|
+
bool OriginalThreadPool::IsThreadPoolThread() {
|
140
142
|
return ThreadLocal::IsEventEngineThread();
|
141
143
|
}
|
142
144
|
|
143
|
-
void
|
145
|
+
void OriginalThreadPool::Quiesce() {
|
144
146
|
state_->queue.SetShutdown(true);
|
145
147
|
// Wait until all threads are exited.
|
146
148
|
// Note that if this is a threadpool thread then we won't exit this thread
|
@@ -151,22 +153,22 @@ void ThreadPool::Quiesce() {
|
|
151
153
|
quiesced_.store(true, std::memory_order_relaxed);
|
152
154
|
}
|
153
155
|
|
154
|
-
|
156
|
+
OriginalThreadPool::~OriginalThreadPool() {
|
155
157
|
GPR_ASSERT(quiesced_.load(std::memory_order_relaxed));
|
156
158
|
}
|
157
159
|
|
158
|
-
void
|
160
|
+
void OriginalThreadPool::Run(absl::AnyInvocable<void()> callback) {
|
159
161
|
GPR_DEBUG_ASSERT(quiesced_.load(std::memory_order_relaxed) == false);
|
160
162
|
if (state_->queue.Add(std::move(callback))) {
|
161
163
|
StartThread(state_, StartThreadReason::kNoWaitersWhenScheduling);
|
162
164
|
}
|
163
165
|
}
|
164
166
|
|
165
|
-
void
|
167
|
+
void OriginalThreadPool::Run(EventEngine::Closure* closure) {
|
166
168
|
Run([closure]() { closure->Run(); });
|
167
169
|
}
|
168
170
|
|
169
|
-
bool
|
171
|
+
bool OriginalThreadPool::Queue::Add(absl::AnyInvocable<void()> callback) {
|
170
172
|
grpc_core::MutexLock lock(&queue_mu_);
|
171
173
|
// Add works to the callbacks list
|
172
174
|
callbacks_.push(std::move(callback));
|
@@ -175,13 +177,13 @@ bool ThreadPool::Queue::Add(absl::AnyInvocable<void()> callback) {
|
|
175
177
|
return callbacks_.size() > threads_waiting_;
|
176
178
|
}
|
177
179
|
|
178
|
-
bool
|
180
|
+
bool OriginalThreadPool::Queue::IsBacklogged() {
|
179
181
|
grpc_core::MutexLock lock(&queue_mu_);
|
180
182
|
if (forking_) return false;
|
181
183
|
return callbacks_.size() > 1;
|
182
184
|
}
|
183
185
|
|
184
|
-
void
|
186
|
+
void OriginalThreadPool::Queue::SleepIfRunning() {
|
185
187
|
grpc_core::MutexLock lock(&queue_mu_);
|
186
188
|
auto end = grpc_core::Duration::Seconds(1) + grpc_core::Timestamp::Now();
|
187
189
|
while (true) {
|
@@ -191,33 +193,33 @@ void ThreadPool::Queue::SleepIfRunning() {
|
|
191
193
|
}
|
192
194
|
}
|
193
195
|
|
194
|
-
void
|
196
|
+
void OriginalThreadPool::Queue::SetShutdown(bool is_shutdown) {
|
195
197
|
grpc_core::MutexLock lock(&queue_mu_);
|
196
198
|
auto was_shutdown = std::exchange(shutdown_, is_shutdown);
|
197
199
|
GPR_ASSERT(is_shutdown != was_shutdown);
|
198
200
|
cv_.SignalAll();
|
199
201
|
}
|
200
202
|
|
201
|
-
void
|
203
|
+
void OriginalThreadPool::Queue::SetForking(bool is_forking) {
|
202
204
|
grpc_core::MutexLock lock(&queue_mu_);
|
203
205
|
auto was_forking = std::exchange(forking_, is_forking);
|
204
206
|
GPR_ASSERT(is_forking != was_forking);
|
205
207
|
cv_.SignalAll();
|
206
208
|
}
|
207
209
|
|
208
|
-
void
|
210
|
+
void OriginalThreadPool::ThreadCount::Add() {
|
209
211
|
grpc_core::MutexLock lock(&thread_count_mu_);
|
210
212
|
++threads_;
|
211
213
|
}
|
212
214
|
|
213
|
-
void
|
215
|
+
void OriginalThreadPool::ThreadCount::Remove() {
|
214
216
|
grpc_core::MutexLock lock(&thread_count_mu_);
|
215
217
|
--threads_;
|
216
218
|
cv_.Signal();
|
217
219
|
}
|
218
220
|
|
219
|
-
void
|
220
|
-
|
221
|
+
void OriginalThreadPool::ThreadCount::BlockUntilThreadCount(int threads,
|
222
|
+
const char* why) {
|
221
223
|
grpc_core::MutexLock lock(&thread_count_mu_);
|
222
224
|
auto last_log = absl::Now();
|
223
225
|
while (threads_ > threads) {
|
@@ -227,22 +229,23 @@ void ThreadPool::ThreadCount::BlockUntilThreadCount(int threads,
|
|
227
229
|
// fork.
|
228
230
|
cv_.WaitWithTimeout(&thread_count_mu_, absl::Seconds(3));
|
229
231
|
if (threads_ > threads && absl::Now() - last_log > absl::Seconds(1)) {
|
230
|
-
gpr_log(GPR_ERROR, "Waiting for thread pool to idle before %s",
|
232
|
+
gpr_log(GPR_ERROR, "Waiting for thread pool to idle before %s (%d to %d)",
|
233
|
+
why, threads_, threads);
|
231
234
|
last_log = absl::Now();
|
232
235
|
}
|
233
236
|
}
|
234
237
|
}
|
235
238
|
|
236
|
-
void
|
239
|
+
void OriginalThreadPool::PrepareFork() {
|
237
240
|
state_->queue.SetForking(true);
|
238
241
|
state_->thread_count.BlockUntilThreadCount(0, "forking");
|
239
242
|
}
|
240
243
|
|
241
|
-
void
|
244
|
+
void OriginalThreadPool::PostforkParent() { Postfork(); }
|
242
245
|
|
243
|
-
void
|
246
|
+
void OriginalThreadPool::PostforkChild() { Postfork(); }
|
244
247
|
|
245
|
-
void
|
248
|
+
void OriginalThreadPool::Postfork() {
|
246
249
|
state_->queue.SetForking(false);
|
247
250
|
for (unsigned i = 0; i < reserve_threads_; i++) {
|
248
251
|
StartThread(state_, StartThreadReason::kInitialPool);
|
@@ -15,12 +15,12 @@
|
|
15
15
|
// limitations under the License.
|
16
16
|
//
|
17
17
|
//
|
18
|
-
|
19
|
-
#
|
20
|
-
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_H
|
18
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_ORIGINAL_THREAD_POOL_H
|
19
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_ORIGINAL_THREAD_POOL_H
|
21
20
|
|
22
21
|
#include <grpc/support/port_platform.h>
|
23
22
|
|
23
|
+
#include <stddef.h>
|
24
24
|
#include <stdint.h>
|
25
25
|
|
26
26
|
#include <atomic>
|
@@ -31,23 +31,20 @@
|
|
31
31
|
#include "absl/functional/any_invocable.h"
|
32
32
|
|
33
33
|
#include <grpc/event_engine/event_engine.h>
|
34
|
-
#include <grpc/support/cpu.h>
|
35
34
|
|
36
|
-
#include "src/core/lib/event_engine/
|
37
|
-
#include "src/core/lib/event_engine/forkable.h"
|
38
|
-
#include "src/core/lib/gpr/useful.h"
|
35
|
+
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
39
36
|
#include "src/core/lib/gprpp/sync.h"
|
40
37
|
|
41
38
|
namespace grpc_event_engine {
|
42
39
|
namespace experimental {
|
43
40
|
|
44
|
-
class
|
41
|
+
class OriginalThreadPool final : public ThreadPool {
|
45
42
|
public:
|
46
|
-
|
43
|
+
explicit OriginalThreadPool(size_t reserve_threads);
|
47
44
|
// Asserts Quiesce was called.
|
48
|
-
~
|
45
|
+
~OriginalThreadPool() override;
|
49
46
|
|
50
|
-
void Quiesce();
|
47
|
+
void Quiesce() override;
|
51
48
|
|
52
49
|
// Run must not be called after Quiesce completes
|
53
50
|
void Run(absl::AnyInvocable<void()> callback) override;
|
@@ -129,13 +126,12 @@ class ThreadPool final : public Forkable, public Executor {
|
|
129
126
|
static void StartThread(StatePtr state, StartThreadReason reason);
|
130
127
|
void Postfork();
|
131
128
|
|
132
|
-
const
|
133
|
-
|
134
|
-
const StatePtr state_ = std::make_shared<State>(reserve_threads_);
|
129
|
+
const size_t reserve_threads_;
|
130
|
+
const StatePtr state_;
|
135
131
|
std::atomic<bool> quiesced_{false};
|
136
132
|
};
|
137
133
|
|
138
134
|
} // namespace experimental
|
139
135
|
} // namespace grpc_event_engine
|
140
136
|
|
141
|
-
#endif //
|
137
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_ORIGINAL_THREAD_POOL_H
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// Copyright 2023 The gRPC Authors
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_THREAD_POOL_H
|
15
|
+
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_THREAD_POOL_H
|
16
|
+
#include <grpc/support/port_platform.h>
|
17
|
+
|
18
|
+
#include <stddef.h>
|
19
|
+
|
20
|
+
#include <memory>
|
21
|
+
|
22
|
+
#include "absl/functional/any_invocable.h"
|
23
|
+
|
24
|
+
#include <grpc/event_engine/event_engine.h>
|
25
|
+
|
26
|
+
#include "src/core/lib/event_engine/forkable.h"
|
27
|
+
|
28
|
+
namespace grpc_event_engine {
|
29
|
+
namespace experimental {
|
30
|
+
|
31
|
+
// Interface for all EventEngine ThreadPool implementations
|
32
|
+
class ThreadPool : public Forkable {
|
33
|
+
public:
|
34
|
+
// Asserts Quiesce was called.
|
35
|
+
~ThreadPool() override = default;
|
36
|
+
// Shut down the pool, and wait for all threads to exit.
|
37
|
+
// This method is safe to call from within a ThreadPool thread.
|
38
|
+
virtual void Quiesce() = 0;
|
39
|
+
// Run must not be called after Quiesce completes
|
40
|
+
virtual void Run(absl::AnyInvocable<void()> callback) = 0;
|
41
|
+
virtual void Run(EventEngine::Closure* closure) = 0;
|
42
|
+
};
|
43
|
+
|
44
|
+
// Creates a default thread pool.
|
45
|
+
std::shared_ptr<ThreadPool> MakeThreadPool(size_t reserve_threads);
|
46
|
+
|
47
|
+
} // namespace experimental
|
48
|
+
} // namespace grpc_event_engine
|
49
|
+
|
50
|
+
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_THREAD_POOL_H
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright
|
1
|
+
// Copyright 2023 The gRPC Authors
|
2
2
|
//
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
// you may not use this file except in compliance with the License.
|
@@ -11,28 +11,30 @@
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
12
|
// See the License for the specific language governing permissions and
|
13
13
|
// limitations under the License.
|
14
|
+
#include <grpc/support/port_platform.h>
|
14
15
|
|
15
|
-
#
|
16
|
-
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXECUTOR_EXECUTOR_H
|
16
|
+
#include <stddef.h>
|
17
17
|
|
18
|
-
#include <
|
18
|
+
#include <memory>
|
19
19
|
|
20
|
-
#include
|
20
|
+
#include <grpc/support/cpu.h>
|
21
21
|
|
22
|
-
#include
|
22
|
+
#include "src/core/lib/event_engine/thread_pool/original_thread_pool.h"
|
23
|
+
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
24
|
+
#include "src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h"
|
25
|
+
#include "src/core/lib/experiments/experiments.h"
|
26
|
+
#include "src/core/lib/gpr/useful.h"
|
23
27
|
|
24
28
|
namespace grpc_event_engine {
|
25
29
|
namespace experimental {
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
}
|
31
|
+
std::shared_ptr<ThreadPool> MakeThreadPool(size_t reserve_threads) {
|
32
|
+
if (grpc_core::IsWorkStealingEnabled()) {
|
33
|
+
return std::make_shared<WorkStealingThreadPool>(
|
34
|
+
grpc_core::Clamp(gpr_cpu_num_cores(), 2u, 16u));
|
35
|
+
}
|
36
|
+
return std::make_shared<OriginalThreadPool>(reserve_threads);
|
37
|
+
}
|
34
38
|
|
35
39
|
} // namespace experimental
|
36
40
|
} // namespace grpc_event_engine
|
37
|
-
|
38
|
-
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXECUTOR_EXECUTOR_H
|