grpc 1.75.0.pre1 → 1.76.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +18 -5
- data/include/grpc/credentials.h +21 -5
- data/src/core/call/call_filters.cc +4 -4
- data/src/core/call/call_filters.h +36 -36
- data/src/core/call/call_spine.h +27 -27
- data/src/core/call/client_call.cc +6 -5
- data/src/core/call/filter_fusion.h +5 -5
- data/src/core/call/metadata_batch.h +3 -3
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/server_call.cc +4 -4
- data/src/core/call/server_call.h +1 -1
- data/src/core/channelz/channelz.cc +12 -18
- data/src/core/channelz/channelz.h +32 -16
- data/src/core/channelz/channelz_registry.h +11 -0
- data/src/core/channelz/property_list.cc +18 -0
- data/src/core/channelz/property_list.h +10 -1
- data/src/core/channelz/text_encode.cc +66 -0
- data/src/core/channelz/text_encode.h +29 -0
- data/src/core/channelz/v2tov1/convert.cc +11 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
- data/src/core/channelz/ztrace_collector.h +247 -86
- data/src/core/client_channel/backup_poller.cc +5 -6
- data/src/core/client_channel/client_channel.cc +20 -13
- data/src/core/client_channel/client_channel_filter.cc +53 -45
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +3 -4
- data/src/core/client_channel/config_selector.h +3 -3
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/global_subchannel_pool.cc +0 -37
- data/src/core/client_channel/global_subchannel_pool.h +0 -27
- data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
- data/src/core/client_channel/local_subchannel_pool.cc +4 -4
- data/src/core/client_channel/retry_filter.h +3 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/subchannel.cc +8 -8
- data/src/core/client_channel/subchannel_stream_client.cc +4 -4
- data/src/core/config/config_vars.cc +30 -1
- data/src/core/config/config_vars.h +21 -0
- data/src/core/config/core_configuration.cc +5 -5
- data/src/core/config/core_configuration.h +7 -7
- data/src/core/config/load_config.cc +12 -0
- data/src/core/config/load_config.h +2 -0
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_util.cc +4 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
- data/src/core/credentials/call/jwt/json_token.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
- data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
- data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
- data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
- data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
- data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
- data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
- data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
- data/src/core/credentials/transport/security_connector.cc +5 -5
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
- data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
- data/src/core/credentials/transport/transport_credentials.cc +2 -2
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
- data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
- data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
- data/src/core/filter/auth/server_auth_filter.cc +2 -2
- data/src/core/handshaker/handshaker.cc +3 -3
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
- data/src/core/handshaker/security/secure_endpoint.cc +16 -6
- data/src/core/handshaker/security/security_handshaker.cc +3 -3
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/channel/channel_stack.cc +8 -5
- data/src/core/lib/channel/channel_stack.h +3 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +69 -64
- data/src/core/lib/channel/promise_based_filter.h +16 -15
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/message_compress.cc +7 -7
- data/src/core/lib/event_engine/ares_resolver.cc +22 -20
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
- data/src/core/lib/event_engine/extensions/channelz.h +2 -2
- data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
- data/src/core/lib/event_engine/resolved_address.cc +3 -3
- data/src/core/lib/event_engine/shim.cc +8 -11
- data/src/core/lib/event_engine/shim.h +2 -1
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
- data/src/core/lib/event_engine/windows/iocp.cc +10 -10
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
- data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
- data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
- data/src/core/lib/experiments/experiments.cc +105 -18
- data/src/core/lib/experiments/experiments.h +43 -11
- data/src/core/lib/iomgr/call_combiner.cc +3 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +8 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
- data/src/core/lib/iomgr/lockfree_event.cc +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +3 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +42 -42
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +7 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
- data/src/core/lib/iomgr/tcp_windows.cc +7 -7
- data/src/core/lib/iomgr/timer_generic.cc +2 -2
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +6 -6
- data/src/core/lib/promise/context.h +2 -2
- data/src/core/lib/promise/detail/join_state.h +9 -9
- data/src/core/lib/promise/detail/seq_state.h +13 -13
- data/src/core/lib/promise/detail/status.h +2 -2
- data/src/core/lib/promise/for_each.h +5 -5
- data/src/core/lib/promise/interceptor_list.h +2 -2
- data/src/core/lib/promise/latch.h +7 -7
- data/src/core/lib/promise/mpsc.cc +26 -26
- data/src/core/lib/promise/mpsc.h +2 -2
- data/src/core/lib/promise/observable.h +4 -4
- data/src/core/lib/promise/party.cc +32 -25
- data/src/core/lib/promise/party.h +16 -19
- data/src/core/lib/promise/pipe.h +15 -15
- data/src/core/lib/promise/poll.h +5 -4
- data/src/core/lib/promise/promise.h +0 -2
- data/src/core/lib/promise/sleep.cc +3 -1
- data/src/core/lib/promise/status_flag.h +7 -7
- data/src/core/lib/promise/try_join.h +2 -2
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +15 -2
- data/src/core/lib/resource_quota/connection_quota.cc +9 -7
- data/src/core/lib/resource_quota/memory_quota.cc +45 -24
- data/src/core/lib/resource_quota/memory_quota.h +48 -16
- data/src/core/lib/resource_quota/telemetry.h +54 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -2
- data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
- data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
- data/src/core/lib/surface/call.cc +16 -14
- data/src/core/lib/surface/call.h +1 -1
- data/src/core/lib/surface/call_utils.cc +2 -2
- data/src/core/lib/surface/call_utils.h +2 -2
- data/src/core/lib/surface/channel.cc +4 -4
- data/src/core/lib/surface/channel_create.cc +10 -6
- data/src/core/lib/surface/channel_init.cc +80 -23
- data/src/core/lib/surface/channel_init.h +26 -11
- data/src/core/lib/surface/completion_queue.cc +17 -16
- data/src/core/lib/surface/completion_queue_factory.cc +7 -7
- data/src/core/lib/surface/connection_context.h +45 -2
- data/src/core/lib/surface/filter_stack_call.cc +12 -23
- data/src/core/lib/surface/filter_stack_call.h +3 -4
- data/src/core/lib/surface/legacy_channel.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +3 -3
- data/src/core/lib/transport/promise_endpoint.cc +3 -3
- data/src/core/lib/transport/promise_endpoint.h +8 -8
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/endpoint_list.cc +2 -2
- data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
- data/src/core/load_balancing/health_check_client.cc +4 -4
- data/src/core/load_balancing/health_check_client_internal.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +4 -4
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
- data/src/core/load_balancing/priority/priority.cc +23 -24
- data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
- data/src/core/load_balancing/rls/rls.cc +13 -13
- data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
- data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
- data/src/core/load_balancing/xds/cds.cc +76 -32
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
- data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
- data/src/core/resolver/endpoint_addresses.cc +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
- data/src/core/resolver/polling_resolver.cc +3 -3
- data/src/core/resolver/resolver_registry.cc +5 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
- data/src/core/resolver/xds/xds_resolver.cc +9 -9
- data/src/core/server/server.cc +38 -38
- data/src/core/server/server_call_tracer_filter.h +4 -4
- data/src/core/server/server_config_selector_filter.cc +2 -2
- data/src/core/server/xds_server_config_fetcher.cc +9 -8
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/telemetry/call_tracer.cc +39 -49
- data/src/core/telemetry/call_tracer.h +199 -22
- data/src/core/telemetry/histogram.h +205 -0
- data/src/core/telemetry/instrument.cc +719 -0
- data/src/core/telemetry/instrument.h +932 -0
- data/src/core/telemetry/metrics.cc +13 -5
- data/src/core/telemetry/metrics.h +3 -1
- data/src/core/telemetry/stats_data.cc +0 -19
- data/src/core/telemetry/stats_data.h +0 -19
- data/src/core/transport/auth_context.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
- data/src/core/tsi/fake_transport_security.cc +4 -4
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +26 -25
- data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
- data/src/core/util/chunked_vector.h +4 -4
- data/src/core/util/event_log.cc +2 -2
- data/src/core/util/gcp_metadata_query.cc +2 -2
- data/src/core/util/grpc_check.cc +22 -0
- data/src/core/util/grpc_check.h +103 -0
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/parser.cc +4 -4
- data/src/core/util/latent_see.h +7 -4
- data/src/core/util/lru_cache.h +4 -4
- data/src/core/util/memory_usage.h +16 -0
- data/src/core/util/posix/directory_reader.cc +3 -2
- data/src/core/util/posix/sync.cc +24 -24
- data/src/core/util/postmortem_emit.cc +52 -0
- data/src/core/util/postmortem_emit.h +30 -0
- data/src/core/util/ref_counted_ptr.h +5 -0
- data/src/core/util/trie_lookup.h +170 -0
- data/src/core/util/unique_ptr_with_bitset.h +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
- data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
- data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
- data/src/core/xds/grpc/xds_client_grpc.h +4 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
- data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
- data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
- data/src/core/xds/grpc/xds_matcher.cc +277 -0
- data/src/core/xds/grpc/xds_matcher.h +432 -0
- data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
- data/src/core/xds/grpc/xds_matcher_action.h +48 -0
- data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
- data/src/core/xds/grpc/xds_matcher_context.h +46 -0
- data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
- data/src/core/xds/grpc/xds_matcher_input.h +105 -0
- data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
- data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
- data/src/core/xds/grpc/xds_metadata.cc +4 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
- data/src/core/xds/grpc/xds_routing.cc +3 -3
- data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
- data/src/core/xds/xds_client/lrs_client.cc +6 -6
- data/src/core/xds/xds_client/xds_client.cc +9 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- metadata +37 -2
@@ -31,7 +31,6 @@
|
|
31
31
|
#include <string_view>
|
32
32
|
#include <utility>
|
33
33
|
|
34
|
-
#include "absl/log/check.h"
|
35
34
|
#include "absl/strings/str_cat.h"
|
36
35
|
#include "src/core/client_channel/client_channel_filter.h"
|
37
36
|
#include "src/core/config/core_configuration.h"
|
@@ -56,6 +55,7 @@
|
|
56
55
|
#include "src/core/lib/transport/connectivity_state.h"
|
57
56
|
#include "src/core/util/debug_location.h"
|
58
57
|
#include "src/core/util/down_cast.h"
|
58
|
+
#include "src/core/util/grpc_check.h"
|
59
59
|
#include "src/core/util/orphanable.h"
|
60
60
|
#include "src/core/util/ref_counted_ptr.h"
|
61
61
|
#include "src/core/util/time.h"
|
@@ -79,7 +79,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall(
|
|
79
79
|
factory_->interested_parties(), Slice::FromStaticString(method),
|
80
80
|
/*authority=*/std::nullopt, Timestamp::InfFuture(),
|
81
81
|
/*registered_method=*/true);
|
82
|
-
|
82
|
+
GRPC_CHECK_NE(call_, nullptr);
|
83
83
|
// Init data associated with the call.
|
84
84
|
grpc_metadata_array_init(&initial_metadata_recv_);
|
85
85
|
grpc_metadata_array_init(&trailing_metadata_recv_);
|
@@ -109,7 +109,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall(
|
|
109
109
|
this->Ref(DEBUG_LOCATION, "OnRecvInitialMetadata").release(), nullptr);
|
110
110
|
call_error = grpc_call_start_batch_and_execute(
|
111
111
|
call_, ops, static_cast<size_t>(op - ops), &on_recv_initial_metadata_);
|
112
|
-
|
112
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
113
113
|
// Start a batch for recv_trailing_metadata.
|
114
114
|
memset(ops, 0, sizeof(ops));
|
115
115
|
op = ops;
|
@@ -126,7 +126,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall(
|
|
126
126
|
GRPC_CLOSURE_INIT(&on_status_received_, OnStatusReceived, this, nullptr);
|
127
127
|
call_error = grpc_call_start_batch_and_execute(
|
128
128
|
call_, ops, static_cast<size_t>(op - ops), &on_status_received_);
|
129
|
-
|
129
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
130
130
|
GRPC_CLOSURE_INIT(&on_response_received_, OnResponseReceived, this, nullptr);
|
131
131
|
}
|
132
132
|
|
@@ -136,12 +136,12 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
|
|
136
136
|
grpc_byte_buffer_destroy(send_message_payload_);
|
137
137
|
grpc_byte_buffer_destroy(recv_message_payload_);
|
138
138
|
CSliceUnref(status_details_);
|
139
|
-
|
139
|
+
GRPC_CHECK_NE(call_, nullptr);
|
140
140
|
grpc_call_unref(call_);
|
141
141
|
}
|
142
142
|
|
143
143
|
void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::Orphan() {
|
144
|
-
|
144
|
+
GRPC_CHECK_NE(call_, nullptr);
|
145
145
|
// If we are here because xds_client wants to cancel the call,
|
146
146
|
// OnStatusReceived() will complete the cancellation and clean up.
|
147
147
|
// Otherwise, we are here because xds_client has to orphan a failed call,
|
@@ -165,7 +165,7 @@ void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::SendMessage(
|
|
165
165
|
Ref(DEBUG_LOCATION, "OnRequestSent").release();
|
166
166
|
grpc_call_error call_error =
|
167
167
|
grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
|
168
|
-
|
168
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
169
169
|
}
|
170
170
|
|
171
171
|
void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
|
@@ -175,10 +175,10 @@ void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
|
|
175
175
|
memset(&op, 0, sizeof(op));
|
176
176
|
op.op = GRPC_OP_RECV_MESSAGE;
|
177
177
|
op.data.recv_message.recv_message = &recv_message_payload_;
|
178
|
-
|
178
|
+
GRPC_CHECK_NE(call_, nullptr);
|
179
179
|
const grpc_call_error call_error =
|
180
180
|
grpc_call_start_batch_and_execute(call_, &op, 1, &on_response_received_);
|
181
|
-
|
181
|
+
GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
|
182
182
|
}
|
183
183
|
|
184
184
|
void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
|
@@ -291,7 +291,7 @@ GrpcXdsTransportFactory::GrpcXdsTransport::GrpcXdsTransport(
|
|
291
291
|
<< "[GrpcXdsTransport " << this << "] created";
|
292
292
|
channel_ = CreateXdsChannel(factory_->args_,
|
293
293
|
DownCast<const GrpcXdsServerInterface&>(server));
|
294
|
-
|
294
|
+
GRPC_CHECK(channel_ != nullptr);
|
295
295
|
if (channel_->IsLame()) {
|
296
296
|
*status = absl::UnavailableError("xds client has a lame channel");
|
297
297
|
}
|
@@ -25,7 +25,6 @@
|
|
25
25
|
#include <vector>
|
26
26
|
|
27
27
|
#include "absl/cleanup/cleanup.h"
|
28
|
-
#include "absl/log/check.h"
|
29
28
|
#include "absl/log/log.h"
|
30
29
|
#include "absl/strings/string_view.h"
|
31
30
|
#include "envoy/config/core/v3/base.upb.h"
|
@@ -38,6 +37,7 @@
|
|
38
37
|
#include "src/core/util/backoff.h"
|
39
38
|
#include "src/core/util/debug_location.h"
|
40
39
|
#include "src/core/util/env.h"
|
40
|
+
#include "src/core/util/grpc_check.h"
|
41
41
|
#include "src/core/util/orphanable.h"
|
42
42
|
#include "src/core/util/ref_counted_ptr.h"
|
43
43
|
#include "src/core/util/string.h"
|
@@ -400,7 +400,7 @@ LrsClient::LrsChannel::LrsChannel(
|
|
400
400
|
<< " for server " << server_->server_uri();
|
401
401
|
absl::Status status;
|
402
402
|
transport_ = lrs_client_->transport_factory_->GetTransport(*server_, &status);
|
403
|
-
|
403
|
+
GRPC_CHECK(transport_ != nullptr);
|
404
404
|
if (!status.ok()) {
|
405
405
|
LOG(ERROR) << "Error creating LRS channel to " << server_->server_uri()
|
406
406
|
<< ": " << status;
|
@@ -484,8 +484,8 @@ void LrsClient::LrsChannel::RetryableCall<T>::OnCallFinishedLocked() {
|
|
484
484
|
template <typename T>
|
485
485
|
void LrsClient::LrsChannel::RetryableCall<T>::StartNewCallLocked() {
|
486
486
|
if (shutting_down_) return;
|
487
|
-
|
488
|
-
|
487
|
+
GRPC_CHECK(lrs_channel_->transport_ != nullptr);
|
488
|
+
GRPC_CHECK(call_ == nullptr);
|
489
489
|
GRPC_TRACE_LOG(xds_client, INFO)
|
490
490
|
<< "[lrs_client " << lrs_channel()->lrs_client() << "] lrs server "
|
491
491
|
<< lrs_channel()->server_->server_uri()
|
@@ -569,7 +569,7 @@ LrsClient::LrsChannel::LrsCall::LrsCall(
|
|
569
569
|
// Init the LRS call. Note that the call will progress every time there's
|
570
570
|
// activity in lrs_client()->interested_parties_, which is comprised of
|
571
571
|
// the polling entities from client_channel.
|
572
|
-
|
572
|
+
GRPC_CHECK_NE(lrs_client(), nullptr);
|
573
573
|
const char* method =
|
574
574
|
"/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats";
|
575
575
|
streaming_call_ = lrs_channel()->transport_->CreateStreamingCall(
|
@@ -577,7 +577,7 @@ LrsClient::LrsChannel::LrsCall::LrsCall(
|
|
577
577
|
// Passing the initial ref here. This ref will go away when
|
578
578
|
// the StreamEventHandler is destroyed.
|
579
579
|
RefCountedPtr<LrsCall>(this)));
|
580
|
-
|
580
|
+
GRPC_CHECK(streaming_call_ != nullptr);
|
581
581
|
// Start the call.
|
582
582
|
GRPC_TRACE_LOG(xds_client, INFO)
|
583
583
|
<< "[lrs_client " << lrs_client() << "] lrs server "
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include <vector>
|
31
31
|
|
32
32
|
#include "absl/cleanup/cleanup.h"
|
33
|
-
#include "absl/log/check.h"
|
34
33
|
#include "absl/log/log.h"
|
35
34
|
#include "absl/strings/match.h"
|
36
35
|
#include "absl/strings/str_cat.h"
|
@@ -48,6 +47,7 @@
|
|
48
47
|
#include "src/core/util/backoff.h"
|
49
48
|
#include "src/core/util/debug_location.h"
|
50
49
|
#include "src/core/util/env.h"
|
50
|
+
#include "src/core/util/grpc_check.h"
|
51
51
|
#include "src/core/util/orphanable.h"
|
52
52
|
#include "src/core/util/ref_counted_ptr.h"
|
53
53
|
#include "src/core/util/string.h"
|
@@ -423,7 +423,7 @@ XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr<XdsClient> xds_client,
|
|
423
423
|
absl::Status status;
|
424
424
|
transport_ =
|
425
425
|
xds_client_->transport_factory_->GetTransport(*server.target(), &status);
|
426
|
-
|
426
|
+
GRPC_CHECK(transport_ != nullptr);
|
427
427
|
if (!status.ok()) {
|
428
428
|
SetChannelStatusLocked(std::move(status));
|
429
429
|
} else {
|
@@ -662,8 +662,8 @@ void XdsClient::XdsChannel::RetryableCall<T>::OnCallFinishedLocked() {
|
|
662
662
|
template <typename T>
|
663
663
|
void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
|
664
664
|
if (shutting_down_) return;
|
665
|
-
|
666
|
-
|
665
|
+
GRPC_CHECK(xds_channel_->transport_ != nullptr);
|
666
|
+
GRPC_CHECK(call_ == nullptr);
|
667
667
|
GRPC_TRACE_LOG(xds_client, INFO)
|
668
668
|
<< "[xds_client " << xds_channel()->xds_client() << "] xds server "
|
669
669
|
<< xds_channel()->server_uri() << ": start new call from retryable call "
|
@@ -732,7 +732,7 @@ XdsClient::XdsChannel::AdsCall::AdsCall(
|
|
732
732
|
: InternallyRefCounted<AdsCall>(
|
733
733
|
GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "AdsCall" : nullptr),
|
734
734
|
retryable_call_(std::move(retryable_call)) {
|
735
|
-
|
735
|
+
GRPC_CHECK_NE(xds_client(), nullptr);
|
736
736
|
// Init the ADS call.
|
737
737
|
const char* method =
|
738
738
|
"/envoy.service.discovery.v3.AggregatedDiscoveryService/"
|
@@ -742,7 +742,7 @@ XdsClient::XdsChannel::AdsCall::AdsCall(
|
|
742
742
|
// Passing the initial ref here. This ref will go away when
|
743
743
|
// the StreamEventHandler is destroyed.
|
744
744
|
RefCountedPtr<AdsCall>(this)));
|
745
|
-
|
745
|
+
GRPC_CHECK(streaming_call_ != nullptr);
|
746
746
|
// Start the call.
|
747
747
|
GRPC_TRACE_LOG(xds_client, INFO)
|
748
748
|
<< "[xds_client " << xds_client() << "] xds server "
|
@@ -1622,7 +1622,7 @@ XdsClient::XdsClient(
|
|
1622
1622
|
metrics_reporter_(std::move(metrics_reporter)) {
|
1623
1623
|
GRPC_TRACE_LOG(xds_client, INFO)
|
1624
1624
|
<< "[xds_client " << this << "] creating xds client";
|
1625
|
-
|
1625
|
+
GRPC_CHECK(bootstrap_ != nullptr);
|
1626
1626
|
if (bootstrap_->node() != nullptr) {
|
1627
1627
|
GRPC_TRACE_LOG(xds_client, INFO)
|
1628
1628
|
<< "[xds_client " << this
|
@@ -1852,7 +1852,7 @@ void XdsClient::MaybeRegisterResourceTypeLocked(
|
|
1852
1852
|
const XdsResourceType* resource_type) {
|
1853
1853
|
auto it = resource_types_.find(resource_type->type_url());
|
1854
1854
|
if (it != resource_types_.end()) {
|
1855
|
-
|
1855
|
+
GRPC_CHECK(it->second == resource_type);
|
1856
1856
|
return;
|
1857
1857
|
}
|
1858
1858
|
resource_types_.emplace(resource_type->type_url(), resource_type);
|
@@ -1903,7 +1903,7 @@ std::string XdsClient::ConstructFullXdsResourceName(
|
|
1903
1903
|
auto uri = URI::Create("xdstp", /*user_info=*/"", std::string(authority),
|
1904
1904
|
absl::StrCat("/", resource_type, "/", key.id),
|
1905
1905
|
key.query_params, /*fragment=*/"");
|
1906
|
-
|
1906
|
+
GRPC_CHECK(uri.ok());
|
1907
1907
|
return uri->ToString();
|
1908
1908
|
}
|
1909
1909
|
// Old-style name.
|
@@ -132,7 +132,7 @@ extern grpc_metadata_credentials_create_from_plugin_type grpc_metadata_credentia
|
|
132
132
|
typedef void(*grpc_call_credentials_release_type)(grpc_call_credentials* creds);
|
133
133
|
extern grpc_call_credentials_release_type grpc_call_credentials_release_import;
|
134
134
|
#define grpc_call_credentials_release grpc_call_credentials_release_import
|
135
|
-
typedef grpc_channel_credentials*(*grpc_google_default_credentials_create_type)(grpc_call_credentials* call_creds_for_tls,
|
135
|
+
typedef grpc_channel_credentials*(*grpc_google_default_credentials_create_type)(grpc_call_credentials* call_creds_for_tls, grpc_google_default_credentials_options* options);
|
136
136
|
extern grpc_google_default_credentials_create_type grpc_google_default_credentials_create_import;
|
137
137
|
#define grpc_google_default_credentials_create grpc_google_default_credentials_create_import
|
138
138
|
typedef grpc_ssl_server_certificate_config*(*grpc_ssl_server_certificate_config_create_type)(const char* pem_root_certs, const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs, size_t num_key_cert_pairs);
|
@@ -171,7 +171,7 @@ extern grpc_server_credentials_set_auth_metadata_processor_type grpc_server_cred
|
|
171
171
|
typedef grpc_call_credentials*(*grpc_composite_call_credentials_create_type)(grpc_call_credentials* creds1, grpc_call_credentials* creds2, void* reserved);
|
172
172
|
extern grpc_composite_call_credentials_create_type grpc_composite_call_credentials_create_import;
|
173
173
|
#define grpc_composite_call_credentials_create grpc_composite_call_credentials_create_import
|
174
|
-
typedef grpc_call_credentials*(*grpc_google_compute_engine_credentials_create_type)(
|
174
|
+
typedef grpc_call_credentials*(*grpc_google_compute_engine_credentials_create_type)(grpc_google_compute_engine_credentials_options* options);
|
175
175
|
extern grpc_google_compute_engine_credentials_create_type grpc_google_compute_engine_credentials_create_import;
|
176
176
|
#define grpc_google_compute_engine_credentials_create grpc_google_compute_engine_credentials_create_import
|
177
177
|
typedef grpc_channel_credentials*(*grpc_composite_channel_credentials_create_type)(grpc_channel_credentials* channel_creds, grpc_call_credentials* call_creds, void* reserved);
|
@@ -0,0 +1,95 @@
|
|
1
|
+
// Copyright 2018 The Abseil Authors.
|
2
|
+
//
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
// you may not use this file except in compliance with the License.
|
5
|
+
// You may obtain a copy of the License at
|
6
|
+
//
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
//
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
// See the License for the specific language governing permissions and
|
13
|
+
// limitations under the License.
|
14
|
+
//
|
15
|
+
// Adapts a policy for nodes.
|
16
|
+
//
|
17
|
+
// The node policy should model:
|
18
|
+
//
|
19
|
+
// struct Policy {
|
20
|
+
// // Returns a new node allocated and constructed using the allocator, using
|
21
|
+
// // the specified arguments.
|
22
|
+
// template <class Alloc, class... Args>
|
23
|
+
// value_type* new_element(Alloc* alloc, Args&&... args) const;
|
24
|
+
//
|
25
|
+
// // Destroys and deallocates node using the allocator.
|
26
|
+
// template <class Alloc>
|
27
|
+
// void delete_element(Alloc* alloc, value_type* node) const;
|
28
|
+
// };
|
29
|
+
//
|
30
|
+
// It may also optionally define `value()` and `apply()`. For documentation on
|
31
|
+
// these, see hash_policy_traits.h.
|
32
|
+
|
33
|
+
#ifndef ABSL_CONTAINER_INTERNAL_NODE_SLOT_POLICY_H_
|
34
|
+
#define ABSL_CONTAINER_INTERNAL_NODE_SLOT_POLICY_H_
|
35
|
+
|
36
|
+
#include <cassert>
|
37
|
+
#include <cstddef>
|
38
|
+
#include <memory>
|
39
|
+
#include <type_traits>
|
40
|
+
#include <utility>
|
41
|
+
|
42
|
+
#include "absl/base/config.h"
|
43
|
+
|
44
|
+
namespace absl {
|
45
|
+
ABSL_NAMESPACE_BEGIN
|
46
|
+
namespace container_internal {
|
47
|
+
|
48
|
+
template <class Reference, class Policy>
|
49
|
+
struct node_slot_policy {
|
50
|
+
static_assert(std::is_lvalue_reference<Reference>::value, "");
|
51
|
+
|
52
|
+
using slot_type = typename std::remove_cv<
|
53
|
+
typename std::remove_reference<Reference>::type>::type*;
|
54
|
+
|
55
|
+
template <class Alloc, class... Args>
|
56
|
+
static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
|
57
|
+
*slot = Policy::new_element(alloc, std::forward<Args>(args)...);
|
58
|
+
}
|
59
|
+
|
60
|
+
template <class Alloc>
|
61
|
+
static void destroy(Alloc* alloc, slot_type* slot) {
|
62
|
+
Policy::delete_element(alloc, *slot);
|
63
|
+
}
|
64
|
+
|
65
|
+
// Returns true_type to indicate that transfer can use memcpy.
|
66
|
+
template <class Alloc>
|
67
|
+
static std::true_type transfer(Alloc*, slot_type* new_slot,
|
68
|
+
slot_type* old_slot) {
|
69
|
+
*new_slot = *old_slot;
|
70
|
+
return {};
|
71
|
+
}
|
72
|
+
|
73
|
+
static size_t space_used(const slot_type* slot) {
|
74
|
+
if (slot == nullptr) return Policy::element_space_used(nullptr);
|
75
|
+
return Policy::element_space_used(*slot);
|
76
|
+
}
|
77
|
+
|
78
|
+
static Reference element(slot_type* slot) { return **slot; }
|
79
|
+
|
80
|
+
template <class T, class P = Policy>
|
81
|
+
static auto value(T* elem) -> decltype(P::value(elem)) {
|
82
|
+
return P::value(elem);
|
83
|
+
}
|
84
|
+
|
85
|
+
template <class... Ts, class P = Policy>
|
86
|
+
static auto apply(Ts&&... ts) -> decltype(P::apply(std::forward<Ts>(ts)...)) {
|
87
|
+
return P::apply(std::forward<Ts>(ts)...);
|
88
|
+
}
|
89
|
+
};
|
90
|
+
|
91
|
+
} // namespace container_internal
|
92
|
+
ABSL_NAMESPACE_END
|
93
|
+
} // namespace absl
|
94
|
+
|
95
|
+
#endif // ABSL_CONTAINER_INTERNAL_NODE_SLOT_POLICY_H_
|