Refactor GfeQuicCryptoServerStream so parent class owns handshaker
Before this change, GfeQuicCryptoServerStream owns a
GfeQuicCryptoServerHandshaker (which is a
QuicCryptoServerStream::HandshakerDelegate), as well as being a
QuicCryptoServerStream which also owns a HandshakerDelegate. This
restructures those two classes so only QuicCryptoServerStream owns the
handshaker, and GfeQuicCryptoServerStream can provide a different
handshaker.
gfe-relnote: refactor GfeQuicCryptoServerStream and QuicCryptoServerStream, no behavior change, not flag protected
PiperOrigin-RevId: 286504120
Change-Id: Ifd219b1a43e06606a96f2967ff84f07be644e8b6
diff --git a/quic/core/quic_crypto_server_stream.h b/quic/core/quic_crypto_server_stream.h
index d80c495..2e0e723 100644
--- a/quic/core/quic_crypto_server_stream.h
+++ b/quic/core/quic_crypto_server_stream.h
@@ -184,7 +184,16 @@
protected:
// Provided so that subclasses can provide their own handshaker.
- virtual HandshakerDelegate* handshaker() const;
+ // set_handshaker can only be called if this QuicCryptoServerStream's
+ // handshaker hasn't been set yet. If set_handshaker is called outside of
+ // OnSuccessfulVersionNegotiation, then that method must be overridden to not
+ // set a handshaker.
+ void set_handshaker(std::unique_ptr<HandshakerDelegate> handshaker);
+ HandshakerDelegate* handshaker() const;
+
+ const QuicCryptoServerConfig* crypto_config() const;
+ QuicCompressedCertsCache* compressed_certs_cache() const;
+ Helper* helper() const;
private:
std::unique_ptr<HandshakerDelegate> handshaker_;