Change `ProofSourceHandleCallback::ConfigureSSLFunc` and `ProofSourceHandleCallback::ALPNSelectFunc` from `std::function` to `quiche::SingleUseCallback`. `quiche::SingleUseCallback` is an alias for single-use `absl::AnyInvocable`. This remove the need to use CallAtMostOnce to wrap "configure_ssl" and "select_alpn" functors. PiperOrigin-RevId: 684881445
diff --git a/quiche/quic/core/crypto/proof_source.h b/quiche/quic/core/crypto/proof_source.h index 11c7c76..725b5ac 100644 --- a/quiche/quic/core/crypto/proof_source.h +++ b/quiche/quic/core/crypto/proof_source.h
@@ -27,6 +27,7 @@ #include "quiche/quic/platform/api/quic_socket_address.h" #include "quiche/common/platform/api/quiche_export.h" #include "quiche/common/platform/api/quiche_reference_counted.h" +#include "quiche/common/quiche_callbacks.h" namespace quic { @@ -262,16 +263,14 @@ QuicDelayedSSLConfig delayed_ssl_config; }; - // Functor to call to configure the SSL object. This functor must not be - // called more than once. - using ConfigureSSLFunc = - std::function<absl::Status(SSL& ssl, const SSL_PRIVATE_KEY_METHOD& key)>; + // Functor to call to configure the SSL object. + using ConfigureSSLFunc = quiche::SingleUseCallback<absl::Status( + SSL& ssl, const SSL_PRIVATE_KEY_METHOD& key)>; - // Functor to call to select ALPN and configure ALPS. This functor must not - // be called more than once. - using ALPNSelectFunc = - std::function<int(SSL& ssl, const uint8_t** out, uint8_t* out_len, - const uint8_t* in, unsigned in_len)>; + // Functor to call to select ALPN and configure ALPS. + using ALPNSelectFunc = quiche::SingleUseCallback<int( + SSL& ssl, const uint8_t** out, uint8_t* out_len, const uint8_t* in, + unsigned in_len)>; // Configuration to use for configuring the SSL object when using a // handshake-hints server.