grpc 1.53.2 → 1.54.0
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 +78 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +142 -0
- data/src/core/ext/gcp/metadata_query.h +82 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -32
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +0 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +19 -55
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +42 -43
- data/src/core/lib/surface/validate_metadata.h +0 -9
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +5 -2
- data/src/core/lib/transport/metadata_batch.h +17 -113
- data/src/core/lib/transport/parsed_metadata.h +6 -16
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +103 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -30,6 +30,8 @@
|
|
30
30
|
#include "absl/strings/str_cat.h"
|
31
31
|
|
32
32
|
#include <grpc/event_engine/endpoint_config.h>
|
33
|
+
#include <grpc/event_engine/event_engine.h>
|
34
|
+
#include <grpc/event_engine/memory_allocator.h>
|
33
35
|
#include <grpc/support/alloc.h>
|
34
36
|
#include <grpc/support/log.h>
|
35
37
|
#include <grpc/support/log_windows.h>
|
@@ -38,7 +40,15 @@
|
|
38
40
|
#include <grpc/support/time.h>
|
39
41
|
|
40
42
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
43
|
+
#include "src/core/lib/event_engine/memory_allocator_factory.h"
|
44
|
+
#include "src/core/lib/event_engine/resolved_address_internal.h"
|
45
|
+
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
46
|
+
#include "src/core/lib/event_engine/windows/windows_engine.h"
|
47
|
+
#include "src/core/lib/event_engine/windows/windows_listener.h"
|
41
48
|
#include "src/core/lib/gprpp/crash.h"
|
49
|
+
#include "src/core/lib/iomgr/closure.h"
|
50
|
+
#include "src/core/lib/iomgr/event_engine_shims/closure.h"
|
51
|
+
#include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
|
42
52
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
43
53
|
#include "src/core/lib/iomgr/pollset_windows.h"
|
44
54
|
#include "src/core/lib/iomgr/resolve_address.h"
|
@@ -47,11 +57,23 @@
|
|
47
57
|
#include "src/core/lib/iomgr/tcp_server.h"
|
48
58
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
49
59
|
#include "src/core/lib/resource_quota/api.h"
|
60
|
+
#include "src/core/lib/resource_quota/resource_quota.h"
|
50
61
|
#include "src/core/lib/slice/slice_internal.h"
|
51
62
|
|
52
63
|
#define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
|
53
64
|
|
65
|
+
namespace {
|
66
|
+
using ::grpc_event_engine::experimental::CreateResolvedAddress;
|
54
67
|
using ::grpc_event_engine::experimental::EndpointConfig;
|
68
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
69
|
+
using ::grpc_event_engine::experimental::grpc_event_engine_endpoint_create;
|
70
|
+
using ::grpc_event_engine::experimental::MemoryAllocator;
|
71
|
+
using ::grpc_event_engine::experimental::MemoryQuotaBasedMemoryAllocatorFactory;
|
72
|
+
using ::grpc_event_engine::experimental::ResolvedAddressSetPort;
|
73
|
+
using ::grpc_event_engine::experimental::RunEventEngineClosure;
|
74
|
+
using ::grpc_event_engine::experimental::WindowsEventEngine;
|
75
|
+
using ::grpc_event_engine::experimental::WindowsEventEngineListener;
|
76
|
+
} // namespace
|
55
77
|
|
56
78
|
// one listening port
|
57
79
|
typedef struct grpc_tcp_listener grpc_tcp_listener;
|
@@ -98,12 +120,15 @@ struct grpc_tcp_server {
|
|
98
120
|
|
99
121
|
// shutdown callback
|
100
122
|
grpc_closure* shutdown_complete;
|
123
|
+
|
124
|
+
// used for the EventEngine shim
|
125
|
+
WindowsEventEngineListener* ee_listener;
|
101
126
|
};
|
102
127
|
|
103
128
|
// Public function. Allocates the proper data structures to hold a
|
104
129
|
// grpc_tcp_server.
|
105
130
|
static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
|
106
|
-
const EndpointConfig& config
|
131
|
+
const EndpointConfig& /* config */,
|
107
132
|
grpc_tcp_server_cb on_accept_cb,
|
108
133
|
void* on_accept_cb_arg,
|
109
134
|
grpc_tcp_server** server) {
|
@@ -122,7 +147,7 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
|
|
122
147
|
return absl::OkStatus();
|
123
148
|
}
|
124
149
|
|
125
|
-
static void destroy_server(void* arg, grpc_error_handle error) {
|
150
|
+
static void destroy_server(void* arg, grpc_error_handle /* error */) {
|
126
151
|
grpc_tcp_server* s = (grpc_tcp_server*)arg;
|
127
152
|
|
128
153
|
// Now that the accepts have been aborted, we can destroy the sockets.
|
@@ -533,27 +558,169 @@ static void tcp_server_start(grpc_tcp_server* s,
|
|
533
558
|
gpr_mu_unlock(&s->mu);
|
534
559
|
}
|
535
560
|
|
536
|
-
static unsigned tcp_server_port_fd_count(grpc_tcp_server* s
|
537
|
-
unsigned port_index) {
|
561
|
+
static unsigned tcp_server_port_fd_count(grpc_tcp_server* /* s */,
|
562
|
+
unsigned /* port_index */) {
|
538
563
|
return 0;
|
539
564
|
}
|
540
565
|
|
541
|
-
static int tcp_server_port_fd(grpc_tcp_server* s
|
542
|
-
unsigned
|
566
|
+
static int tcp_server_port_fd(grpc_tcp_server* /* s */,
|
567
|
+
unsigned /* port_index */,
|
568
|
+
unsigned /* fd_index */) {
|
543
569
|
return -1;
|
544
570
|
}
|
545
571
|
|
546
572
|
static grpc_core::TcpServerFdHandler* tcp_server_create_fd_handler(
|
547
|
-
grpc_tcp_server* s) {
|
573
|
+
grpc_tcp_server* /* s */) {
|
548
574
|
return nullptr;
|
549
575
|
}
|
550
576
|
|
551
|
-
static void tcp_server_shutdown_listeners(grpc_tcp_server* s) {}
|
577
|
+
static void tcp_server_shutdown_listeners(grpc_tcp_server* /* s */) {}
|
578
|
+
|
579
|
+
static int tcp_pre_allocated_fd(grpc_tcp_server* /* s */) { return -1; }
|
580
|
+
|
581
|
+
static void tcp_set_pre_allocated_fd(grpc_tcp_server* /* s */, int /* fd */) {}
|
552
582
|
|
553
583
|
grpc_tcp_server_vtable grpc_windows_tcp_server_vtable = {
|
554
584
|
tcp_server_create, tcp_server_start,
|
555
585
|
tcp_server_add_port, tcp_server_create_fd_handler,
|
556
586
|
tcp_server_port_fd_count, tcp_server_port_fd,
|
557
587
|
tcp_server_ref, tcp_server_shutdown_starting_add,
|
558
|
-
tcp_server_unref, tcp_server_shutdown_listeners
|
588
|
+
tcp_server_unref, tcp_server_shutdown_listeners,
|
589
|
+
tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
|
590
|
+
|
591
|
+
// ---- EventEngine shim ------------------------------------------------------
|
592
|
+
|
593
|
+
namespace {
|
594
|
+
|
595
|
+
static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
|
596
|
+
const EndpointConfig& config,
|
597
|
+
grpc_tcp_server_cb on_accept_cb,
|
598
|
+
void* on_accept_cb_arg,
|
599
|
+
grpc_tcp_server** server) {
|
600
|
+
// On Windows, the event_engine_listener experiment only supports the
|
601
|
+
// default engine
|
602
|
+
WindowsEventEngine* engine_ptr = reinterpret_cast<WindowsEventEngine*>(
|
603
|
+
config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE));
|
604
|
+
grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
|
605
|
+
GPR_ASSERT(on_accept_cb != nullptr);
|
606
|
+
auto accept_cb = [s, on_accept_cb, on_accept_cb_arg](
|
607
|
+
std::unique_ptr<EventEngine::Endpoint> endpoint,
|
608
|
+
MemoryAllocator memory_allocator) {
|
609
|
+
grpc_core::ApplicationCallbackExecCtx app_ctx;
|
610
|
+
grpc_core::ExecCtx exec_ctx;
|
611
|
+
grpc_tcp_server_acceptor* acceptor =
|
612
|
+
static_cast<grpc_tcp_server_acceptor*>(gpr_malloc(sizeof(*acceptor)));
|
613
|
+
acceptor->from_server = s;
|
614
|
+
acceptor->port_index = -1;
|
615
|
+
acceptor->fd_index = -1;
|
616
|
+
acceptor->external_connection = false;
|
617
|
+
on_accept_cb(on_accept_cb_arg,
|
618
|
+
grpc_event_engine_endpoint_create(std::move(endpoint)),
|
619
|
+
nullptr, acceptor);
|
620
|
+
};
|
621
|
+
auto on_shutdown = [shutdown_complete](absl::Status status) {
|
622
|
+
RunEventEngineClosure(shutdown_complete, status);
|
623
|
+
};
|
624
|
+
grpc_core::RefCountedPtr<grpc_core::ResourceQuota> resource_quota;
|
625
|
+
{
|
626
|
+
void* tmp_quota = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
|
627
|
+
GPR_ASSERT(tmp_quota != nullptr);
|
628
|
+
resource_quota =
|
629
|
+
reinterpret_cast<grpc_core::ResourceQuota*>(tmp_quota)->Ref();
|
630
|
+
}
|
631
|
+
gpr_ref_init(&s->refs, 1);
|
632
|
+
gpr_mu_init(&s->mu);
|
633
|
+
s->ee_listener = new WindowsEventEngineListener(
|
634
|
+
engine_ptr->poller(), std::move(accept_cb), std::move(on_shutdown),
|
635
|
+
std::make_unique<MemoryQuotaBasedMemoryAllocatorFactory>(
|
636
|
+
resource_quota->memory_quota()),
|
637
|
+
engine_ptr->shared_from_this(), engine_ptr->executor(), config);
|
638
|
+
s->active_ports = -1;
|
639
|
+
s->on_accept_cb = [](void* /* arg */, grpc_endpoint* /* ep */,
|
640
|
+
grpc_pollset* /* accepting_pollset */,
|
641
|
+
grpc_tcp_server_acceptor* /* acceptor */) {
|
642
|
+
grpc_core::Crash("iomgr on_accept_cb callback should be unused");
|
643
|
+
};
|
644
|
+
s->on_accept_cb_arg = nullptr;
|
645
|
+
s->head = nullptr;
|
646
|
+
s->tail = nullptr;
|
647
|
+
s->shutdown_starting.head = nullptr;
|
648
|
+
s->shutdown_starting.tail = nullptr;
|
649
|
+
s->shutdown_complete = grpc_core::NewClosure([](absl::Status) {
|
650
|
+
grpc_core::Crash("iomgr shutdown_complete callback should be unused");
|
651
|
+
});
|
652
|
+
*server = s;
|
653
|
+
return absl::OkStatus();
|
654
|
+
}
|
655
|
+
|
656
|
+
static void event_engine_start(grpc_tcp_server* s,
|
657
|
+
const std::vector<grpc_pollset*>* /*pollsets*/) {
|
658
|
+
GPR_ASSERT(s->ee_listener->Start().ok());
|
659
|
+
}
|
660
|
+
|
661
|
+
static grpc_error_handle event_engine_add_port(
|
662
|
+
grpc_tcp_server* s, const grpc_resolved_address* addr, int* port) {
|
663
|
+
GPR_ASSERT(addr != nullptr);
|
664
|
+
GPR_ASSERT(port != nullptr);
|
665
|
+
auto ee_addr = CreateResolvedAddress(*addr);
|
666
|
+
auto out_port = s->ee_listener->Bind(ee_addr);
|
667
|
+
*port = out_port.ok() ? *out_port : -1;
|
668
|
+
return out_port.status();
|
669
|
+
}
|
670
|
+
|
671
|
+
static grpc_core::TcpServerFdHandler* event_engine_create_fd_handler(
|
672
|
+
grpc_tcp_server* /* s */) {
|
673
|
+
return nullptr;
|
674
|
+
}
|
675
|
+
|
676
|
+
static unsigned event_engine_port_fd_count(grpc_tcp_server* /* s */,
|
677
|
+
unsigned /* port_index */) {
|
678
|
+
return 0;
|
679
|
+
}
|
680
|
+
|
681
|
+
static int event_engine_port_fd(grpc_tcp_server* /* s */,
|
682
|
+
unsigned /* port_index */,
|
683
|
+
unsigned /* fd_index */) {
|
684
|
+
return -1;
|
685
|
+
}
|
686
|
+
|
687
|
+
static grpc_tcp_server* event_engine_ref(grpc_tcp_server* s) {
|
688
|
+
gpr_ref_non_zero(&s->refs);
|
689
|
+
return s;
|
690
|
+
}
|
691
|
+
|
692
|
+
static void event_engine_shutdown_listeners(grpc_tcp_server* s) {
|
693
|
+
s->ee_listener->ShutdownListeners();
|
694
|
+
}
|
695
|
+
|
696
|
+
static void event_engine_unref(grpc_tcp_server* s) {
|
697
|
+
if (gpr_unref(&s->refs)) {
|
698
|
+
event_engine_shutdown_listeners(s);
|
699
|
+
gpr_mu_lock(&s->mu);
|
700
|
+
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_starting);
|
701
|
+
gpr_mu_unlock(&s->mu);
|
702
|
+
gpr_mu_destroy(&s->mu);
|
703
|
+
delete s->ee_listener;
|
704
|
+
gpr_free(s);
|
705
|
+
}
|
706
|
+
}
|
707
|
+
|
708
|
+
static void event_engine_shutdown_starting_add(
|
709
|
+
grpc_tcp_server* s, grpc_closure* shutdown_starting) {
|
710
|
+
gpr_mu_lock(&s->mu);
|
711
|
+
grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
|
712
|
+
absl::OkStatus());
|
713
|
+
gpr_mu_unlock(&s->mu);
|
714
|
+
}
|
715
|
+
|
716
|
+
} // namespace
|
717
|
+
|
718
|
+
grpc_tcp_server_vtable grpc_windows_event_engine_tcp_server_vtable = {
|
719
|
+
event_engine_create, event_engine_start,
|
720
|
+
event_engine_add_port, event_engine_create_fd_handler,
|
721
|
+
event_engine_port_fd_count, event_engine_port_fd,
|
722
|
+
event_engine_ref, event_engine_shutdown_starting_add,
|
723
|
+
event_engine_unref, event_engine_shutdown_listeners,
|
724
|
+
tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
|
725
|
+
|
559
726
|
#endif // GRPC_WINSOCK_SOCKET
|
@@ -203,7 +203,8 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
203
203
|
}
|
204
204
|
GPR_ASSERT((size_t)info->bytes_transferred == tcp->read_slices->length);
|
205
205
|
|
206
|
-
if (grpc_tcp_trace
|
206
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
|
207
|
+
gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
|
207
208
|
size_t i;
|
208
209
|
for (i = 0; i < tcp->read_slices->count; i++) {
|
209
210
|
char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
|
@@ -236,7 +237,8 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
236
237
|
#define DEFAULT_TARGET_READ_SIZE 8192
|
237
238
|
#define MAX_WSABUF_COUNT 16
|
238
239
|
static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
239
|
-
grpc_closure* cb, bool urgent
|
240
|
+
grpc_closure* cb, bool /* urgent */,
|
241
|
+
int /* min_progress_size */) {
|
240
242
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
241
243
|
grpc_winsocket* handle = tcp->socket;
|
242
244
|
grpc_winsocket_callback_info* info = &handle->read_info;
|
@@ -341,7 +343,8 @@ static void on_write(void* tcpp, grpc_error_handle error) {
|
|
341
343
|
|
342
344
|
// Initiates a write.
|
343
345
|
static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
344
|
-
grpc_closure* cb, void* arg
|
346
|
+
grpc_closure* cb, void* /* arg */,
|
347
|
+
int /* max_frame_size */) {
|
345
348
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
346
349
|
grpc_winsocket* socket = tcp->socket;
|
347
350
|
grpc_winsocket_callback_info* info = &socket->write_info;
|
@@ -353,7 +356,8 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
|
353
356
|
WSABUF* buffers = local_buffers;
|
354
357
|
size_t len, async_buffers_offset = 0;
|
355
358
|
|
356
|
-
if (grpc_tcp_trace
|
359
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
|
360
|
+
gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
|
357
361
|
size_t i;
|
358
362
|
for (i = 0; i < slices->count; i++) {
|
359
363
|
char* data =
|
@@ -466,8 +470,8 @@ static void win_add_to_pollset_set(grpc_endpoint* ep, grpc_pollset_set* pss) {
|
|
466
470
|
grpc_iocp_add_socket(tcp->socket);
|
467
471
|
}
|
468
472
|
|
469
|
-
static void win_delete_from_pollset_set(grpc_endpoint* ep
|
470
|
-
grpc_pollset_set* pss) {}
|
473
|
+
static void win_delete_from_pollset_set(grpc_endpoint* /* ep */,
|
474
|
+
grpc_pollset_set* /* pss */) {}
|
471
475
|
|
472
476
|
// Initiates a shutdown of the TCP endpoint. This will queue abort callbacks
|
473
477
|
// for the potential read and write operations. It is up to the caller to
|
@@ -504,9 +508,9 @@ static absl::string_view win_get_local_address(grpc_endpoint* ep) {
|
|
504
508
|
return tcp->local_address;
|
505
509
|
}
|
506
510
|
|
507
|
-
static int win_get_fd(grpc_endpoint* ep) { return -1; }
|
511
|
+
static int win_get_fd(grpc_endpoint* /* ep */) { return -1; }
|
508
512
|
|
509
|
-
static bool win_can_track_err(grpc_endpoint* ep) { return false; }
|
513
|
+
static bool win_can_track_err(grpc_endpoint* /* ep */) { return false; }
|
510
514
|
|
511
515
|
static grpc_endpoint_vtable vtable = {win_read,
|
512
516
|
win_write,
|
@@ -69,19 +69,15 @@ LoadBalancingPolicy::SubchannelPicker::SubchannelPicker()
|
|
69
69
|
LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
|
70
70
|
PickArgs /*args*/) {
|
71
71
|
// We invoke the parent's ExitIdleLocked() via a closure instead
|
72
|
-
// of doing it directly here
|
73
|
-
//
|
74
|
-
//
|
75
|
-
//
|
76
|
-
//
|
77
|
-
//
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
// ExitIdleLocked().
|
82
|
-
if (!exit_idle_called_ && parent_ != nullptr) {
|
83
|
-
exit_idle_called_ = true;
|
84
|
-
auto* parent = parent_->Ref().release(); // ref held by lambda.
|
72
|
+
// of doing it directly here because ExitIdleLocked() may cause the
|
73
|
+
// policy's state to change and a new picker to be delivered to the
|
74
|
+
// channel. If that new picker is delivered before ExitIdleLocked()
|
75
|
+
// returns, then by the time this function returns, the pick will already
|
76
|
+
// have been processed, and we'll be trying to re-process the same pick
|
77
|
+
// again, leading to a crash.
|
78
|
+
MutexLock lock(&mu_);
|
79
|
+
if (parent_ != nullptr) {
|
80
|
+
auto* parent = parent_.release(); // ref held by lambda.
|
85
81
|
ExecCtx::Run(DEBUG_LOCATION,
|
86
82
|
GRPC_CLOSURE_CREATE(
|
87
83
|
[](void* arg, grpc_error_handle /*error*/) {
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <utility>
|
28
28
|
#include <vector>
|
29
29
|
|
30
|
+
#include "absl/base/thread_annotations.h"
|
30
31
|
#include "absl/status/status.h"
|
31
32
|
#include "absl/status/statusor.h"
|
32
33
|
#include "absl/strings/string_view.h"
|
@@ -44,6 +45,7 @@
|
|
44
45
|
#include "src/core/lib/gprpp/orphanable.h"
|
45
46
|
#include "src/core/lib/gprpp/ref_counted.h"
|
46
47
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
48
|
+
#include "src/core/lib/gprpp/sync.h"
|
47
49
|
#include "src/core/lib/gprpp/work_serializer.h"
|
48
50
|
#include "src/core/lib/iomgr/iomgr_fwd.h"
|
49
51
|
#include "src/core/lib/load_balancing/subchannel_interface.h"
|
@@ -392,8 +394,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
392
394
|
PickResult Pick(PickArgs args) override;
|
393
395
|
|
394
396
|
private:
|
395
|
-
|
396
|
-
|
397
|
+
Mutex mu_;
|
398
|
+
RefCountedPtr<LoadBalancingPolicy> parent_ ABSL_GUARDED_BY(&mu_);
|
397
399
|
};
|
398
400
|
|
399
401
|
// A picker that returns PickResult::Fail for all picks.
|
@@ -19,8 +19,11 @@
|
|
19
19
|
#include <stddef.h>
|
20
20
|
|
21
21
|
#include <initializer_list>
|
22
|
+
#include <vector>
|
22
23
|
|
24
|
+
#include "absl/strings/str_cat.h"
|
23
25
|
#include "absl/strings/str_format.h"
|
26
|
+
#include "absl/strings/str_join.h"
|
24
27
|
|
25
28
|
#include "src/core/lib/gprpp/atomic_utils.h"
|
26
29
|
|
@@ -36,7 +39,9 @@ namespace promise_detail {
|
|
36
39
|
///////////////////////////////////////////////////////////////////////////////
|
37
40
|
// HELPER TYPES
|
38
41
|
|
39
|
-
std::string Unwakeable::ActivityDebugTag(
|
42
|
+
std::string Unwakeable::ActivityDebugTag(WakeupMask) const {
|
43
|
+
return "<unknown>";
|
44
|
+
}
|
40
45
|
|
41
46
|
// Weak handle to an Activity.
|
42
47
|
// Handle can persist while Activity goes away.
|
@@ -58,7 +63,7 @@ class FreestandingActivity::Handle final : public Wakeable {
|
|
58
63
|
|
59
64
|
// Activity needs to wake up (if it still exists!) - wake it up, and drop the
|
60
65
|
// ref that was kept for this handle.
|
61
|
-
void Wakeup(
|
66
|
+
void Wakeup(WakeupMask) override ABSL_LOCKS_EXCLUDED(mu_) {
|
62
67
|
mu_.Lock();
|
63
68
|
// Note that activity refcount can drop to zero, but we could win the lock
|
64
69
|
// against DropActivity, so we need to only increase activities refcount if
|
@@ -68,7 +73,7 @@ class FreestandingActivity::Handle final : public Wakeable {
|
|
68
73
|
mu_.Unlock();
|
69
74
|
// Activity still exists and we have a reference: wake it up, which will
|
70
75
|
// drop the ref.
|
71
|
-
activity->Wakeup(
|
76
|
+
activity->Wakeup(0);
|
72
77
|
} else {
|
73
78
|
// Could not get the activity - it's either gone or going. No need to wake
|
74
79
|
// it up!
|
@@ -78,9 +83,9 @@ class FreestandingActivity::Handle final : public Wakeable {
|
|
78
83
|
Unref();
|
79
84
|
}
|
80
85
|
|
81
|
-
void Drop(
|
86
|
+
void Drop(WakeupMask) override { Unref(); }
|
82
87
|
|
83
|
-
std::string ActivityDebugTag(
|
88
|
+
std::string ActivityDebugTag(WakeupMask) const override {
|
84
89
|
MutexLock lock(&mu_);
|
85
90
|
return activity_ == nullptr ? "<unknown>" : activity_->DebugTag();
|
86
91
|
}
|
@@ -124,7 +129,7 @@ void FreestandingActivity::DropHandle() {
|
|
124
129
|
|
125
130
|
Waker FreestandingActivity::MakeNonOwningWaker() {
|
126
131
|
mu_.AssertHeld();
|
127
|
-
return Waker(RefHandle(),
|
132
|
+
return Waker(RefHandle(), 0);
|
128
133
|
}
|
129
134
|
|
130
135
|
} // namespace promise_detail
|
@@ -133,4 +138,15 @@ std::string Activity::DebugTag() const {
|
|
133
138
|
return absl::StrFormat("ACTIVITY[%p]", this);
|
134
139
|
}
|
135
140
|
|
141
|
+
///////////////////////////////////////////////////////////////////////////////
|
142
|
+
// INTRA ACTIVITY WAKER IMPLEMENTATION
|
143
|
+
|
144
|
+
std::string IntraActivityWaiter::DebugString() const {
|
145
|
+
std::vector<int> bits;
|
146
|
+
for (size_t i = 0; i < 8 * sizeof(WakeupMask); i++) {
|
147
|
+
if (wakeups_ & (1 << i)) bits.push_back(i);
|
148
|
+
}
|
149
|
+
return absl::StrCat("{", absl::StrJoin(bits, ","), "}");
|
150
|
+
}
|
151
|
+
|
136
152
|
} // namespace grpc_core
|
@@ -38,24 +38,29 @@
|
|
38
38
|
#include "src/core/lib/promise/context.h"
|
39
39
|
#include "src/core/lib/promise/detail/promise_factory.h"
|
40
40
|
#include "src/core/lib/promise/detail/status.h"
|
41
|
+
#include "src/core/lib/promise/poll.h"
|
41
42
|
|
42
43
|
namespace grpc_core {
|
43
44
|
|
44
45
|
class Activity;
|
45
46
|
|
47
|
+
// WakeupMask is a bitfield representing which parts of an activity should be
|
48
|
+
// woken up.
|
49
|
+
using WakeupMask = uint16_t;
|
50
|
+
|
46
51
|
// A Wakeable object is used by queues to wake activities.
|
47
52
|
class Wakeable {
|
48
53
|
public:
|
49
54
|
// Wake up the underlying activity.
|
50
55
|
// After calling, this Wakeable cannot be used again.
|
51
|
-
//
|
52
|
-
//
|
53
|
-
virtual void Wakeup(
|
56
|
+
// WakeupMask comes from the activity that created this Wakeable and specifies
|
57
|
+
// the set of promises that should be awoken.
|
58
|
+
virtual void Wakeup(WakeupMask wakeup_mask) = 0;
|
54
59
|
// Drop this wakeable without waking up the underlying activity.
|
55
|
-
virtual void Drop(
|
60
|
+
virtual void Drop(WakeupMask wakeup_mask) = 0;
|
56
61
|
|
57
62
|
// Return the underlying activity debug tag, or "<unknown>" if not available.
|
58
|
-
virtual std::string ActivityDebugTag(
|
63
|
+
virtual std::string ActivityDebugTag(WakeupMask wakeup_mask) const = 0;
|
59
64
|
|
60
65
|
protected:
|
61
66
|
inline ~Wakeable() {}
|
@@ -63,9 +68,9 @@ class Wakeable {
|
|
63
68
|
|
64
69
|
namespace promise_detail {
|
65
70
|
struct Unwakeable final : public Wakeable {
|
66
|
-
void Wakeup(
|
67
|
-
void Drop(
|
68
|
-
std::string ActivityDebugTag(
|
71
|
+
void Wakeup(WakeupMask) override {}
|
72
|
+
void Drop(WakeupMask) override {}
|
73
|
+
std::string ActivityDebugTag(WakeupMask) const override;
|
69
74
|
};
|
70
75
|
static Unwakeable* unwakeable() {
|
71
76
|
return NoDestructSingleton<Unwakeable>::Get();
|
@@ -76,8 +81,9 @@ static Unwakeable* unwakeable() {
|
|
76
81
|
// This type is non-copyable but movable.
|
77
82
|
class Waker {
|
78
83
|
public:
|
79
|
-
Waker(Wakeable* wakeable,
|
80
|
-
|
84
|
+
Waker(Wakeable* wakeable, WakeupMask wakeup_mask)
|
85
|
+
: wakeable_and_arg_{wakeable, wakeup_mask} {}
|
86
|
+
Waker() : Waker(promise_detail::unwakeable(), 0) {}
|
81
87
|
~Waker() { wakeable_and_arg_.Drop(); }
|
82
88
|
Waker(const Waker&) = delete;
|
83
89
|
Waker& operator=(const Waker&) = delete;
|
@@ -93,7 +99,7 @@ class Waker {
|
|
93
99
|
template <typename H>
|
94
100
|
friend H AbslHashValue(H h, const Waker& w) {
|
95
101
|
return H::combine(H::combine(std::move(h), w.wakeable_and_arg_.wakeable),
|
96
|
-
w.wakeable_and_arg_.
|
102
|
+
w.wakeable_and_arg_.wakeup_mask);
|
97
103
|
}
|
98
104
|
|
99
105
|
bool operator==(const Waker& other) const noexcept {
|
@@ -116,27 +122,42 @@ class Waker {
|
|
116
122
|
private:
|
117
123
|
struct WakeableAndArg {
|
118
124
|
Wakeable* wakeable;
|
119
|
-
|
125
|
+
WakeupMask wakeup_mask;
|
120
126
|
|
121
|
-
void Wakeup() { wakeable->Wakeup(
|
122
|
-
void Drop() { wakeable->Drop(
|
127
|
+
void Wakeup() { wakeable->Wakeup(wakeup_mask); }
|
128
|
+
void Drop() { wakeable->Drop(wakeup_mask); }
|
123
129
|
std::string ActivityDebugTag() const {
|
124
130
|
return wakeable == nullptr ? "<unknown>"
|
125
|
-
: wakeable->ActivityDebugTag(
|
131
|
+
: wakeable->ActivityDebugTag(wakeup_mask);
|
126
132
|
}
|
127
133
|
bool operator==(const WakeableAndArg& other) const noexcept {
|
128
|
-
return wakeable == other.wakeable &&
|
134
|
+
return wakeable == other.wakeable && wakeup_mask == other.wakeup_mask;
|
129
135
|
}
|
130
136
|
};
|
131
137
|
|
132
138
|
WakeableAndArg Take() {
|
133
|
-
return std::exchange(wakeable_and_arg_,
|
134
|
-
{promise_detail::unwakeable(), nullptr});
|
139
|
+
return std::exchange(wakeable_and_arg_, {promise_detail::unwakeable(), 0});
|
135
140
|
}
|
136
141
|
|
137
142
|
WakeableAndArg wakeable_and_arg_;
|
138
143
|
};
|
139
144
|
|
145
|
+
// Helper type to track wakeups between objects in the same activity.
|
146
|
+
// Can be fairly fast as no ref counting or locking needs to occur.
|
147
|
+
class IntraActivityWaiter {
|
148
|
+
public:
|
149
|
+
// Register for wakeup, return Pending(). If state is not ready to proceed,
|
150
|
+
// Promises should bottom out here.
|
151
|
+
Pending pending();
|
152
|
+
// Wake the activity
|
153
|
+
void Wake();
|
154
|
+
|
155
|
+
std::string DebugString() const;
|
156
|
+
|
157
|
+
private:
|
158
|
+
WakeupMask wakeups_ = 0;
|
159
|
+
};
|
160
|
+
|
140
161
|
// An Activity tracks execution of a single promise.
|
141
162
|
// It executes the promise under a mutex.
|
142
163
|
// When the promise stalls, it registers the containing activity to be woken up
|
@@ -156,7 +177,13 @@ class Activity : public Orphanable {
|
|
156
177
|
void ForceWakeup() { MakeOwningWaker().Wakeup(); }
|
157
178
|
|
158
179
|
// Force the current activity to immediately repoll if it doesn't complete.
|
159
|
-
virtual void ForceImmediateRepoll() = 0;
|
180
|
+
virtual void ForceImmediateRepoll(WakeupMask mask) = 0;
|
181
|
+
// Legacy version of ForceImmediateRepoll() that uses the current participant.
|
182
|
+
// Will go away once Party gets merged with Activity. New usage is banned.
|
183
|
+
void ForceImmediateRepoll() { ForceImmediateRepoll(CurrentParticipant()); }
|
184
|
+
|
185
|
+
// Return the current part of the activity as a bitmask
|
186
|
+
virtual WakeupMask CurrentParticipant() const { return 1; }
|
160
187
|
|
161
188
|
// Return the current activity.
|
162
189
|
// Additionally:
|
@@ -284,7 +311,7 @@ class FreestandingActivity : public Activity, private Wakeable {
|
|
284
311
|
public:
|
285
312
|
Waker MakeOwningWaker() final {
|
286
313
|
Ref();
|
287
|
-
return Waker(this,
|
314
|
+
return Waker(this, 0);
|
288
315
|
}
|
289
316
|
Waker MakeNonOwningWaker() final;
|
290
317
|
|
@@ -293,7 +320,7 @@ class FreestandingActivity : public Activity, private Wakeable {
|
|
293
320
|
Unref();
|
294
321
|
}
|
295
322
|
|
296
|
-
void ForceImmediateRepoll() final {
|
323
|
+
void ForceImmediateRepoll(WakeupMask) final {
|
297
324
|
mu_.AssertHeld();
|
298
325
|
SetActionDuringRun(ActionDuringRun::kWakeup);
|
299
326
|
}
|
@@ -333,7 +360,7 @@ class FreestandingActivity : public Activity, private Wakeable {
|
|
333
360
|
|
334
361
|
Mutex* mu() ABSL_LOCK_RETURNED(mu_) { return &mu_; }
|
335
362
|
|
336
|
-
std::string ActivityDebugTag(
|
363
|
+
std::string ActivityDebugTag(WakeupMask) const override { return DebugTag(); }
|
337
364
|
|
338
365
|
private:
|
339
366
|
class Handle;
|
@@ -467,7 +494,7 @@ class PromiseActivity final
|
|
467
494
|
// the activity to an external threadpool to run. If the activity is already
|
468
495
|
// running on this thread, a note is taken of such and the activity is
|
469
496
|
// repolled if it doesn't complete.
|
470
|
-
void Wakeup(
|
497
|
+
void Wakeup(WakeupMask) final {
|
471
498
|
// If there is an active activity, but hey it's us, flag that and we'll loop
|
472
499
|
// in RunLoop (that's calling from above here!).
|
473
500
|
if (Activity::is_current()) {
|
@@ -486,7 +513,7 @@ class PromiseActivity final
|
|
486
513
|
}
|
487
514
|
|
488
515
|
// Drop a wakeup
|
489
|
-
void Drop(
|
516
|
+
void Drop(WakeupMask) final { this->WakeupComplete(); }
|
490
517
|
|
491
518
|
// Notification that we're no longer executing - it's ok to destruct the
|
492
519
|
// promise.
|
@@ -593,6 +620,16 @@ ActivityPtr MakeActivity(Factory promise_factory,
|
|
593
620
|
std::move(on_done), std::forward<Contexts>(contexts)...));
|
594
621
|
}
|
595
622
|
|
623
|
+
inline Pending IntraActivityWaiter::pending() {
|
624
|
+
wakeups_ |= Activity::current()->CurrentParticipant();
|
625
|
+
return Pending();
|
626
|
+
}
|
627
|
+
|
628
|
+
inline void IntraActivityWaiter::Wake() {
|
629
|
+
if (wakeups_ == 0) return;
|
630
|
+
Activity::current()->ForceImmediateRepoll(std::exchange(wakeups_, 0));
|
631
|
+
}
|
632
|
+
|
596
633
|
} // namespace grpc_core
|
597
634
|
|
598
635
|
#endif // GRPC_SRC_CORE_LIB_PROMISE_ACTIVITY_H
|