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
@@ -24,23 +24,20 @@
|
|
24
24
|
#include <atomic>
|
25
25
|
#include <map>
|
26
26
|
#include <memory>
|
27
|
-
#include <set>
|
28
27
|
#include <string>
|
29
|
-
#include <utility>
|
30
28
|
|
31
29
|
#include "absl/base/thread_annotations.h"
|
30
|
+
#include "absl/container/flat_hash_set.h"
|
32
31
|
#include "absl/status/status.h"
|
33
32
|
#include "absl/strings/string_view.h"
|
34
33
|
#include "absl/types/optional.h"
|
35
34
|
|
36
35
|
#include <grpc/grpc.h>
|
37
36
|
#include <grpc/impl/connectivity_state.h>
|
38
|
-
#include <grpc/support/atm.h>
|
39
37
|
|
40
38
|
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
|
41
39
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
42
40
|
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
|
43
|
-
#include "src/core/ext/filters/client_channel/lb_call_state_internal.h"
|
44
41
|
#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
|
45
42
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
46
43
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
@@ -56,7 +53,6 @@
|
|
56
53
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
57
54
|
#include "src/core/lib/gprpp/sync.h"
|
58
55
|
#include "src/core/lib/gprpp/time.h"
|
59
|
-
#include "src/core/lib/gprpp/unique_type_name.h"
|
60
56
|
#include "src/core/lib/gprpp/work_serializer.h"
|
61
57
|
#include "src/core/lib/iomgr/call_combiner.h"
|
62
58
|
#include "src/core/lib/iomgr/closure.h"
|
@@ -67,10 +63,6 @@
|
|
67
63
|
#include "src/core/lib/resolver/resolver.h"
|
68
64
|
#include "src/core/lib/resource_quota/arena.h"
|
69
65
|
#include "src/core/lib/service_config/service_config.h"
|
70
|
-
#include "src/core/lib/service_config/service_config_call_data.h"
|
71
|
-
#include "src/core/lib/service_config/service_config_parser.h"
|
72
|
-
#include "src/core/lib/slice/slice.h"
|
73
|
-
#include "src/core/lib/slice/slice_buffer.h"
|
74
66
|
#include "src/core/lib/surface/channel.h"
|
75
67
|
#include "src/core/lib/transport/connectivity_state.h"
|
76
68
|
#include "src/core/lib/transport/metadata_batch.h"
|
@@ -110,6 +102,7 @@ class ClientChannel {
|
|
110
102
|
static const grpc_channel_filter kFilterVtable;
|
111
103
|
|
112
104
|
class LoadBalancedCall;
|
105
|
+
class FilterBasedLoadBalancedCall;
|
113
106
|
|
114
107
|
// Flag that this object gets stored in channel args as a raw pointer.
|
115
108
|
struct RawPointerChannelArgTag {};
|
@@ -163,7 +156,7 @@ class ClientChannel {
|
|
163
156
|
void RemoveConnectivityWatcher(
|
164
157
|
AsyncConnectivityStateWatcherInterface* watcher);
|
165
158
|
|
166
|
-
OrphanablePtr<
|
159
|
+
OrphanablePtr<FilterBasedLoadBalancedCall> CreateLoadBalancedCall(
|
167
160
|
const grpc_call_element_args& args, grpc_polling_entity* pollent,
|
168
161
|
grpc_closure* on_call_destruction_complete,
|
169
162
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
@@ -177,6 +170,7 @@ class ClientChannel {
|
|
177
170
|
|
178
171
|
private:
|
179
172
|
class CallData;
|
173
|
+
class FilterBasedCallData;
|
180
174
|
class ResolverResultHandler;
|
181
175
|
class SubchannelWrapper;
|
182
176
|
class ClientChannelControlHelper;
|
@@ -222,15 +216,6 @@ class ClientChannel {
|
|
222
216
|
std::atomic<bool> done_{false};
|
223
217
|
};
|
224
218
|
|
225
|
-
struct ResolverQueuedCall {
|
226
|
-
grpc_call_element* elem;
|
227
|
-
ResolverQueuedCall* next = nullptr;
|
228
|
-
};
|
229
|
-
struct LbQueuedCall {
|
230
|
-
LoadBalancedCall* lb_call;
|
231
|
-
LbQueuedCall* next = nullptr;
|
232
|
-
};
|
233
|
-
|
234
219
|
ClientChannel(grpc_channel_element_args* args, grpc_error_handle* error);
|
235
220
|
~ClientChannel();
|
236
221
|
|
@@ -246,6 +231,9 @@ class ClientChannel {
|
|
246
231
|
// Note: All methods with "Locked" suffix must be invoked from within
|
247
232
|
// work_serializer_.
|
248
233
|
|
234
|
+
void ReprocessQueuedResolverCalls()
|
235
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&resolution_mu_);
|
236
|
+
|
249
237
|
void OnResolverResultChangedLocked(Resolver::Result result)
|
250
238
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
|
251
239
|
void OnResolverErrorLocked(absl::Status status)
|
@@ -284,20 +272,6 @@ class ClientChannel {
|
|
284
272
|
|
285
273
|
void TryToConnectLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
|
286
274
|
|
287
|
-
// These methods all require holding resolution_mu_.
|
288
|
-
void AddResolverQueuedCall(ResolverQueuedCall* call,
|
289
|
-
grpc_polling_entity* pollent)
|
290
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(resolution_mu_);
|
291
|
-
void RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
|
292
|
-
grpc_polling_entity* pollent)
|
293
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(resolution_mu_);
|
294
|
-
|
295
|
-
// These methods all require holding data_plane_mu_.
|
296
|
-
void AddLbQueuedCall(LbQueuedCall* call, grpc_polling_entity* pollent)
|
297
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
298
|
-
void RemoveLbQueuedCall(LbQueuedCall* to_remove, grpc_polling_entity* pollent)
|
299
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(data_plane_mu_);
|
300
|
-
|
301
275
|
//
|
302
276
|
// Fields set at construction and never modified.
|
303
277
|
//
|
@@ -316,9 +290,9 @@ class ClientChannel {
|
|
316
290
|
// Fields related to name resolution. Guarded by resolution_mu_.
|
317
291
|
//
|
318
292
|
mutable Mutex resolution_mu_;
|
319
|
-
//
|
320
|
-
|
321
|
-
|
293
|
+
// List of calls queued waiting for resolver result.
|
294
|
+
absl::flat_hash_set<CallData*> resolver_queued_calls_
|
295
|
+
ABSL_GUARDED_BY(resolution_mu_);
|
322
296
|
// Data from service config.
|
323
297
|
absl::Status resolver_transient_failure_error_
|
324
298
|
ABSL_GUARDED_BY(resolution_mu_);
|
@@ -330,13 +304,13 @@ class ClientChannel {
|
|
330
304
|
ABSL_GUARDED_BY(resolution_mu_);
|
331
305
|
|
332
306
|
//
|
333
|
-
// Fields
|
307
|
+
// Fields related to LB picks. Guarded by lb_mu_.
|
334
308
|
//
|
335
|
-
mutable Mutex
|
309
|
+
mutable Mutex lb_mu_;
|
336
310
|
RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker_
|
337
|
-
ABSL_GUARDED_BY(
|
338
|
-
|
339
|
-
|
311
|
+
ABSL_GUARDED_BY(lb_mu_);
|
312
|
+
absl::flat_hash_set<LoadBalancedCall*> lb_queued_calls_
|
313
|
+
ABSL_GUARDED_BY(lb_mu_);
|
340
314
|
|
341
315
|
//
|
342
316
|
// Fields used in the control plane. Guarded by work_serializer.
|
@@ -360,7 +334,7 @@ class ClientChannel {
|
|
360
334
|
// The set of SubchannelWrappers that currently exist.
|
361
335
|
// No need to hold a ref, since the map is updated in the control-plane
|
362
336
|
// work_serializer when the SubchannelWrappers are created and destroyed.
|
363
|
-
|
337
|
+
absl::flat_hash_set<SubchannelWrapper*> subchannel_wrappers_
|
364
338
|
ABSL_GUARDED_BY(*work_serializer_);
|
365
339
|
int keepalive_time_ ABSL_GUARDED_BY(*work_serializer_) = -1;
|
366
340
|
grpc_error_handle disconnect_error_ ABSL_GUARDED_BY(*work_serializer_);
|
@@ -389,58 +363,135 @@ class ClientChannel {
|
|
389
363
|
// TODO(roth): As part of simplifying cancellation in the filter stack,
|
390
364
|
// this should no longer need to be ref-counted.
|
391
365
|
class ClientChannel::LoadBalancedCall
|
392
|
-
: public InternallyRefCounted<LoadBalancedCall,
|
366
|
+
: public InternallyRefCounted<LoadBalancedCall, UnrefCallDtor> {
|
393
367
|
public:
|
394
|
-
|
395
|
-
|
396
|
-
|
368
|
+
LoadBalancedCall(
|
369
|
+
ClientChannel* chand, grpc_call_context_element* call_context,
|
370
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
371
|
+
bool is_transparent_retry);
|
372
|
+
~LoadBalancedCall() override;
|
397
373
|
|
398
|
-
|
374
|
+
void Orphan() override;
|
399
375
|
|
400
|
-
|
401
|
-
|
402
|
-
|
376
|
+
// Called by channel when removing a call from the list of queued calls.
|
377
|
+
void RemoveCallFromLbQueuedCallsLocked()
|
378
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_);
|
403
379
|
|
404
|
-
|
405
|
-
|
406
|
-
|
380
|
+
// Called by the channel for each queued call when a new picker
|
381
|
+
// becomes available.
|
382
|
+
virtual void RetryPickLocked()
|
383
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_) = 0;
|
384
|
+
|
385
|
+
protected:
|
386
|
+
ClientChannel* chand() const { return chand_; }
|
387
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller() const {
|
388
|
+
return call_dispatch_controller_;
|
389
|
+
}
|
390
|
+
ClientCallTracer::CallAttemptTracer* call_attempt_tracer() const {
|
391
|
+
return static_cast<ClientCallTracer::CallAttemptTracer*>(
|
392
|
+
call_context()[GRPC_CONTEXT_CALL_TRACER].value);
|
393
|
+
}
|
394
|
+
gpr_cycle_counter lb_call_start_time() const { return lb_call_start_time_; }
|
395
|
+
ConnectedSubchannel* connected_subchannel() const {
|
396
|
+
return connected_subchannel_.get();
|
397
|
+
}
|
398
|
+
LoadBalancingPolicy::SubchannelCallTrackerInterface*
|
399
|
+
lb_subchannel_call_tracker() const {
|
400
|
+
return lb_subchannel_call_tracker_.get();
|
401
|
+
}
|
402
|
+
|
403
|
+
// Attempts an LB pick. The following outcomes are possible:
|
404
|
+
// - No pick result is available yet. The call will be queued and
|
405
|
+
// nullopt will be returned. The channel will later call
|
406
|
+
// RetryPickLocked() when a new picker is available and the pick
|
407
|
+
// should be retried.
|
408
|
+
// - The pick failed. If the call is not wait_for_ready, a non-OK
|
409
|
+
// status will be returned. (If the call *is* wait_for_ready,
|
410
|
+
// it will be queued instead.)
|
411
|
+
// - The pick completed successfully. A connected subchannel is
|
412
|
+
// stored and an OK status will be returned.
|
413
|
+
absl::optional<absl::Status> PickSubchannel(bool was_queued);
|
414
|
+
|
415
|
+
void RecordCallCompletion(absl::Status status,
|
416
|
+
grpc_metadata_batch* recv_trailing_metadata,
|
417
|
+
grpc_transport_stream_stats* transport_stream_stats,
|
418
|
+
absl::string_view peer_address);
|
419
|
+
|
420
|
+
private:
|
421
|
+
class LbCallState;
|
422
|
+
class Metadata;
|
423
|
+
class BackendMetricAccessor;
|
424
|
+
|
425
|
+
virtual Arena* arena() const = 0;
|
426
|
+
virtual grpc_call_context_element* call_context() const = 0;
|
427
|
+
virtual grpc_polling_entity* pollent() const = 0;
|
428
|
+
virtual grpc_metadata_batch* send_initial_metadata() const = 0;
|
429
|
+
|
430
|
+
// Helper function for performing an LB pick with a specified picker.
|
431
|
+
// Returns true if the pick is complete.
|
432
|
+
bool PickSubchannelImpl(LoadBalancingPolicy::SubchannelPicker* picker,
|
433
|
+
grpc_error_handle* error);
|
434
|
+
// Adds the call to the channel's list of queued picks if not already present.
|
435
|
+
void AddCallToLbQueuedCallsLocked()
|
436
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_);
|
437
|
+
|
438
|
+
// Called when adding the call to the LB queue.
|
439
|
+
virtual void OnAddToQueueLocked()
|
440
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_) {}
|
441
|
+
|
442
|
+
ClientChannel* chand_;
|
443
|
+
|
444
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller_;
|
407
445
|
|
446
|
+
gpr_cycle_counter lb_call_start_time_ = gpr_get_cycle_counter();
|
447
|
+
|
448
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
449
|
+
const BackendMetricData* backend_metric_data_ = nullptr;
|
450
|
+
std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
|
451
|
+
lb_subchannel_call_tracker_;
|
452
|
+
};
|
453
|
+
|
454
|
+
class ClientChannel::FilterBasedLoadBalancedCall
|
455
|
+
: public ClientChannel::LoadBalancedCall {
|
456
|
+
public:
|
408
457
|
// If on_call_destruction_complete is non-null, then it will be
|
409
458
|
// invoked once the LoadBalancedCall is completely destroyed.
|
410
459
|
// If it is null, then the caller is responsible for checking whether
|
411
460
|
// the LB call has a subchannel call and ensuring that the
|
412
461
|
// on_call_destruction_complete closure passed down from the surface
|
413
462
|
// is not invoked until after the subchannel call stack is destroyed.
|
414
|
-
|
463
|
+
FilterBasedLoadBalancedCall(
|
415
464
|
ClientChannel* chand, const grpc_call_element_args& args,
|
416
465
|
grpc_polling_entity* pollent, grpc_closure* on_call_destruction_complete,
|
417
466
|
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
418
467
|
bool is_transparent_retry);
|
419
|
-
~
|
468
|
+
~FilterBasedLoadBalancedCall() override;
|
420
469
|
|
421
470
|
void Orphan() override;
|
422
471
|
|
423
472
|
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
424
473
|
|
425
|
-
// Invoked by channel for queued LB picks when the picker is updated.
|
426
|
-
static void PickSubchannel(void* arg, grpc_error_handle error);
|
427
|
-
// Helper function for performing an LB pick while holding the data plane
|
428
|
-
// mutex. Returns true if the pick is complete, in which case the caller
|
429
|
-
// must invoke PickDone() or AsyncPickDone() with the returned error.
|
430
|
-
bool PickSubchannelLocked(grpc_error_handle* error)
|
431
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
432
|
-
// Schedules a callback to process the completed pick. The callback
|
433
|
-
// will not run until after this method returns.
|
434
|
-
void AsyncPickDone(grpc_error_handle error);
|
435
|
-
|
436
474
|
RefCountedPtr<SubchannelCall> subchannel_call() const {
|
437
475
|
return subchannel_call_;
|
438
476
|
}
|
439
477
|
|
440
478
|
private:
|
441
479
|
class LbQueuedCallCanceller;
|
442
|
-
|
443
|
-
|
480
|
+
|
481
|
+
// Work-around for Windows compilers that don't allow nested classes
|
482
|
+
// to access protected members of the enclosing class's parent class.
|
483
|
+
using LoadBalancedCall::call_dispatch_controller;
|
484
|
+
using LoadBalancedCall::chand;
|
485
|
+
|
486
|
+
Arena* arena() const override { return arena_; }
|
487
|
+
grpc_call_context_element* call_context() const override {
|
488
|
+
return call_context_;
|
489
|
+
}
|
490
|
+
grpc_polling_entity* pollent() const override { return pollent_; }
|
491
|
+
grpc_metadata_batch* send_initial_metadata() const override {
|
492
|
+
return pending_batches_[0]
|
493
|
+
->payload->send_initial_metadata.send_initial_metadata;
|
494
|
+
}
|
444
495
|
|
445
496
|
// Returns the index into pending_batches_ to be used for batch.
|
446
497
|
static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
|
@@ -473,39 +524,30 @@ class ClientChannel::LoadBalancedCall
|
|
473
524
|
|
474
525
|
static void SendInitialMetadataOnComplete(void* arg, grpc_error_handle error);
|
475
526
|
static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
|
476
|
-
static void RecvMessageReady(void* arg, grpc_error_handle error);
|
477
527
|
static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
|
478
528
|
|
479
|
-
|
529
|
+
// Called to perform a pick, both when the call is initially started
|
530
|
+
// and when it is queued and the channel gets a new picker.
|
531
|
+
void TryPick(bool was_queued);
|
480
532
|
|
481
|
-
void
|
482
|
-
|
483
|
-
static void PickDone(void* arg, grpc_error_handle error);
|
484
|
-
// Removes the call from the channel's list of queued picks if present.
|
485
|
-
void MaybeRemoveCallFromLbQueuedCallsLocked()
|
486
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
487
|
-
// Adds the call to the channel's list of queued picks if not already present.
|
488
|
-
void MaybeAddCallToLbQueuedCallsLocked()
|
489
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_);
|
533
|
+
void OnAddToQueueLocked() override
|
534
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_);
|
490
535
|
|
491
|
-
|
536
|
+
void RetryPickLocked() override
|
537
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::lb_mu_);
|
538
|
+
|
539
|
+
void CreateSubchannelCall();
|
492
540
|
|
493
541
|
// TODO(roth): Instead of duplicating these fields in every filter
|
494
542
|
// that uses any one of them, we should store them in the call
|
495
543
|
// context. This will save per-call memory overhead.
|
496
|
-
Slice path_; // Request path.
|
497
544
|
Timestamp deadline_;
|
498
545
|
Arena* arena_;
|
546
|
+
grpc_call_context_element* call_context_;
|
499
547
|
grpc_call_stack* owning_call_;
|
500
548
|
CallCombiner* call_combiner_;
|
501
|
-
grpc_call_context_element* call_context_;
|
502
549
|
grpc_polling_entity* pollent_;
|
503
550
|
grpc_closure* on_call_destruction_complete_;
|
504
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller_;
|
505
|
-
|
506
|
-
CallTracer::CallAttemptTracer* call_attempt_tracer_;
|
507
|
-
|
508
|
-
gpr_cycle_counter lb_call_start_time_ = gpr_get_cycle_counter();
|
509
551
|
|
510
552
|
// Set when we get a cancel_stream op.
|
511
553
|
grpc_error_handle cancel_error_;
|
@@ -513,38 +555,17 @@ class ClientChannel::LoadBalancedCall
|
|
513
555
|
// Set when we fail inside the LB call.
|
514
556
|
grpc_error_handle failure_error_;
|
515
557
|
|
516
|
-
|
517
|
-
|
518
|
-
// Accessed while holding ClientChannel::data_plane_mu_.
|
519
|
-
ClientChannel::LbQueuedCall queued_call_
|
520
|
-
ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_);
|
521
|
-
bool queued_pending_lb_pick_ ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) =
|
522
|
-
false;
|
558
|
+
// Accessed while holding ClientChannel::lb_mu_.
|
523
559
|
LbQueuedCallCanceller* lb_call_canceller_
|
524
|
-
ABSL_GUARDED_BY(&ClientChannel::
|
525
|
-
|
526
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
527
|
-
const BackendMetricData* backend_metric_data_ = nullptr;
|
528
|
-
std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
|
529
|
-
lb_subchannel_call_tracker_;
|
560
|
+
ABSL_GUARDED_BY(&ClientChannel::lb_mu_) = nullptr;
|
530
561
|
|
531
562
|
RefCountedPtr<SubchannelCall> subchannel_call_;
|
532
563
|
|
533
|
-
// For intercepting send_initial_metadata on_complete.
|
534
|
-
gpr_atm* peer_string_ = nullptr;
|
535
|
-
grpc_closure send_initial_metadata_on_complete_;
|
536
|
-
grpc_closure* original_send_initial_metadata_on_complete_ = nullptr;
|
537
|
-
|
538
564
|
// For intercepting recv_initial_metadata_ready.
|
539
565
|
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
|
540
566
|
grpc_closure recv_initial_metadata_ready_;
|
541
567
|
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
|
542
568
|
|
543
|
-
// For intercepting recv_message_ready.
|
544
|
-
absl::optional<SliceBuffer>* recv_message_ = nullptr;
|
545
|
-
grpc_closure recv_message_ready_;
|
546
|
-
grpc_closure* original_recv_message_ready_ = nullptr;
|
547
|
-
|
548
569
|
// For intercepting recv_trailing_metadata_ready.
|
549
570
|
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
|
550
571
|
grpc_transport_stream_stats* transport_stream_stats_ = nullptr;
|
@@ -559,69 +580,6 @@ class ClientChannel::LoadBalancedCall
|
|
559
580
|
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
560
581
|
};
|
561
582
|
|
562
|
-
// A sub-class of ServiceConfigCallData used to access the
|
563
|
-
// CallDispatchController. Allocated on the arena, stored in the call
|
564
|
-
// context, and destroyed when the call is destroyed.
|
565
|
-
class ClientChannelServiceConfigCallData : public ServiceConfigCallData {
|
566
|
-
public:
|
567
|
-
ClientChannelServiceConfigCallData(
|
568
|
-
RefCountedPtr<ServiceConfig> service_config,
|
569
|
-
const ServiceConfigParser::ParsedConfigVector* method_configs,
|
570
|
-
ServiceConfigCallData::CallAttributes call_attributes,
|
571
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
572
|
-
grpc_call_context_element* call_context)
|
573
|
-
: ServiceConfigCallData(std::move(service_config), method_configs,
|
574
|
-
std::move(call_attributes)),
|
575
|
-
call_dispatch_controller_(call_dispatch_controller) {
|
576
|
-
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
|
577
|
-
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
|
578
|
-
}
|
579
|
-
|
580
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller() {
|
581
|
-
return &call_dispatch_controller_;
|
582
|
-
}
|
583
|
-
|
584
|
-
private:
|
585
|
-
// A wrapper for the CallDispatchController returned by the ConfigSelector.
|
586
|
-
// Handles the case where the ConfigSelector doees not return any
|
587
|
-
// CallDispatchController.
|
588
|
-
// Also ensures that we call Commit() at most once, which allows the
|
589
|
-
// client channel code to call Commit() when the call is complete in case
|
590
|
-
// it wasn't called earlier, without needing to know whether or not it was.
|
591
|
-
class CallDispatchControllerWrapper
|
592
|
-
: public ConfigSelector::CallDispatchController {
|
593
|
-
public:
|
594
|
-
explicit CallDispatchControllerWrapper(
|
595
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller)
|
596
|
-
: call_dispatch_controller_(call_dispatch_controller) {}
|
597
|
-
|
598
|
-
bool ShouldRetry() override {
|
599
|
-
if (call_dispatch_controller_ != nullptr) {
|
600
|
-
return call_dispatch_controller_->ShouldRetry();
|
601
|
-
}
|
602
|
-
return true;
|
603
|
-
}
|
604
|
-
|
605
|
-
void Commit() override {
|
606
|
-
if (call_dispatch_controller_ != nullptr && !commit_called_) {
|
607
|
-
call_dispatch_controller_->Commit();
|
608
|
-
commit_called_ = true;
|
609
|
-
}
|
610
|
-
}
|
611
|
-
|
612
|
-
private:
|
613
|
-
ConfigSelector::CallDispatchController* call_dispatch_controller_;
|
614
|
-
bool commit_called_ = false;
|
615
|
-
};
|
616
|
-
|
617
|
-
static void Destroy(void* ptr) {
|
618
|
-
auto* self = static_cast<ClientChannelServiceConfigCallData*>(ptr);
|
619
|
-
self->~ClientChannelServiceConfigCallData();
|
620
|
-
}
|
621
|
-
|
622
|
-
CallDispatchControllerWrapper call_dispatch_controller_;
|
623
|
-
};
|
624
|
-
|
625
583
|
} // namespace grpc_core
|
626
584
|
|
627
585
|
#endif // GRPC_SRC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_H
|
@@ -0,0 +1,114 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_SRC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_INTERNAL_H
|
18
|
+
#define GRPC_SRC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_INTERNAL_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <utility>
|
23
|
+
|
24
|
+
#include "absl/strings/string_view.h"
|
25
|
+
|
26
|
+
#include "src/core/ext/filters/client_channel/config_selector.h"
|
27
|
+
#include "src/core/lib/channel/context.h"
|
28
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
29
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
30
|
+
#include "src/core/lib/load_balancing/lb_policy.h"
|
31
|
+
#include "src/core/lib/service_config/service_config.h"
|
32
|
+
#include "src/core/lib/service_config/service_config_call_data.h"
|
33
|
+
#include "src/core/lib/service_config/service_config_parser.h"
|
34
|
+
|
35
|
+
//
|
36
|
+
// This file contains internal interfaces used to allow various plugins
|
37
|
+
// (filters, LB policies, etc) to access internal data provided by the
|
38
|
+
// ClientChannel that is not normally accessible via external APIs.
|
39
|
+
//
|
40
|
+
|
41
|
+
namespace grpc_core {
|
42
|
+
|
43
|
+
// Internal type for LB call state interface. Provides an interface for
|
44
|
+
// LB policies to access internal call attributes.
|
45
|
+
class ClientChannelLbCallState : public LoadBalancingPolicy::CallState {
|
46
|
+
public:
|
47
|
+
virtual absl::string_view GetCallAttribute(UniqueTypeName type) = 0;
|
48
|
+
};
|
49
|
+
|
50
|
+
// Internal type for ServiceConfigCallData. Provides access to the
|
51
|
+
// CallDispatchController.
|
52
|
+
class ClientChannelServiceConfigCallData : public ServiceConfigCallData {
|
53
|
+
public:
|
54
|
+
ClientChannelServiceConfigCallData(
|
55
|
+
RefCountedPtr<ServiceConfig> service_config,
|
56
|
+
const ServiceConfigParser::ParsedConfigVector* method_configs,
|
57
|
+
ServiceConfigCallData::CallAttributes call_attributes,
|
58
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller,
|
59
|
+
grpc_call_context_element* call_context)
|
60
|
+
: ServiceConfigCallData(std::move(service_config), method_configs,
|
61
|
+
std::move(call_attributes)),
|
62
|
+
call_dispatch_controller_(call_dispatch_controller) {
|
63
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
|
64
|
+
call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
|
65
|
+
}
|
66
|
+
|
67
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller() {
|
68
|
+
return &call_dispatch_controller_;
|
69
|
+
}
|
70
|
+
|
71
|
+
private:
|
72
|
+
// A wrapper for the CallDispatchController returned by the ConfigSelector.
|
73
|
+
// Handles the case where the ConfigSelector doees not return any
|
74
|
+
// CallDispatchController.
|
75
|
+
// Also ensures that we call Commit() at most once, which allows the
|
76
|
+
// client channel code to call Commit() when the call is complete in case
|
77
|
+
// it wasn't called earlier, without needing to know whether or not it was.
|
78
|
+
class CallDispatchControllerWrapper
|
79
|
+
: public ConfigSelector::CallDispatchController {
|
80
|
+
public:
|
81
|
+
explicit CallDispatchControllerWrapper(
|
82
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller)
|
83
|
+
: call_dispatch_controller_(call_dispatch_controller) {}
|
84
|
+
|
85
|
+
bool ShouldRetry() override {
|
86
|
+
if (call_dispatch_controller_ != nullptr) {
|
87
|
+
return call_dispatch_controller_->ShouldRetry();
|
88
|
+
}
|
89
|
+
return true;
|
90
|
+
}
|
91
|
+
|
92
|
+
void Commit() override {
|
93
|
+
if (call_dispatch_controller_ != nullptr && !commit_called_) {
|
94
|
+
call_dispatch_controller_->Commit();
|
95
|
+
commit_called_ = true;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
private:
|
100
|
+
ConfigSelector::CallDispatchController* call_dispatch_controller_;
|
101
|
+
bool commit_called_ = false;
|
102
|
+
};
|
103
|
+
|
104
|
+
static void Destroy(void* ptr) {
|
105
|
+
auto* self = static_cast<ClientChannelServiceConfigCallData*>(ptr);
|
106
|
+
self->~ClientChannelServiceConfigCallData();
|
107
|
+
}
|
108
|
+
|
109
|
+
CallDispatchControllerWrapper call_dispatch_controller_;
|
110
|
+
};
|
111
|
+
|
112
|
+
} // namespace grpc_core
|
113
|
+
|
114
|
+
#endif // GRPC_SRC_CORE_EXT_FILTERS_CLIENT_CHANNEL_CLIENT_CHANNEL_INTERNAL_H
|
@@ -28,7 +28,6 @@
|
|
28
28
|
#include "absl/strings/string_view.h"
|
29
29
|
|
30
30
|
#include <grpc/grpc.h>
|
31
|
-
#include <grpc/slice.h>
|
32
31
|
#include <grpc/support/log.h>
|
33
32
|
|
34
33
|
#include "src/core/lib/channel/channel_fwd.h"
|
@@ -39,6 +38,7 @@
|
|
39
38
|
#include "src/core/lib/service_config/service_config.h"
|
40
39
|
#include "src/core/lib/service_config/service_config_call_data.h"
|
41
40
|
#include "src/core/lib/service_config/service_config_parser.h"
|
41
|
+
#include "src/core/lib/slice/slice.h"
|
42
42
|
#include "src/core/lib/transport/metadata_batch.h"
|
43
43
|
|
44
44
|
// Channel arg key for ConfigSelector.
|
@@ -65,7 +65,6 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
|
|
65
65
|
};
|
66
66
|
|
67
67
|
struct GetCallConfigArgs {
|
68
|
-
grpc_slice* path;
|
69
68
|
grpc_metadata_batch* initial_metadata;
|
70
69
|
Arena* arena;
|
71
70
|
};
|
@@ -132,8 +131,10 @@ class DefaultConfigSelector : public ConfigSelector {
|
|
132
131
|
|
133
132
|
absl::StatusOr<CallConfig> GetCallConfig(GetCallConfigArgs args) override {
|
134
133
|
CallConfig call_config;
|
134
|
+
Slice* path = args.initial_metadata->get_pointer(HttpPathMetadata());
|
135
|
+
GPR_ASSERT(path != nullptr);
|
135
136
|
call_config.method_configs =
|
136
|
-
service_config_->GetMethodParsedConfigVector(
|
137
|
+
service_config_->GetMethodParsedConfigVector(path->c_slice());
|
137
138
|
call_config.service_config = service_config_;
|
138
139
|
return call_config;
|
139
140
|
}
|
@@ -32,8 +32,10 @@ struct BackendMetricData {
|
|
32
32
|
/// Memory utilization expressed as a fraction of available memory
|
33
33
|
/// resources.
|
34
34
|
double mem_utilization = -1;
|
35
|
-
/// Total
|
35
|
+
/// Total queries per second being served by the backend across all services.
|
36
36
|
double qps = -1;
|
37
|
+
/// Total errors per second reported by the backend across all services.
|
38
|
+
double eps = -1;
|
37
39
|
/// Application-specific requests cost metrics. Metric names are
|
38
40
|
/// determined by the application. Each value is an absolute cost
|
39
41
|
/// (e.g. 3487 bytes of storage) associated with the request.
|
@@ -42,6 +44,9 @@ struct BackendMetricData {
|
|
42
44
|
/// are determined by the application. Each value is expressed as a
|
43
45
|
/// fraction of total resources available.
|
44
46
|
std::map<absl::string_view, double> utilization;
|
47
|
+
/// Application-specific opaque metrics. Metric names are determined by the
|
48
|
+
/// the application. Each value is an opaque measurement.
|
49
|
+
std::map<absl::string_view, double> named_metrics;
|
45
50
|
};
|
46
51
|
|
47
52
|
} // namespace grpc_core
|