QuartcFactory cleanup part 1: delete the QuartcFactory object. QuartcFactory is really just a wrapper for a QuicConnectionHelperInterface and a function to create a QuartcClientSession. There's no need for the object. Instead, CreateQuartcClientSession is now a free function. gfe-relnote: n/a (Quartc only) PiperOrigin-RevId: 239778175 Change-Id: I2f7481563f994fb8b364985222c91cbad923af89
diff --git a/quic/quartc/quartc_endpoint.cc b/quic/quartc/quartc_endpoint.cc index 2882705..459ceba 100644 --- a/quic/quartc/quartc_endpoint.cc +++ b/quic/quartc/quartc_endpoint.cc
@@ -42,14 +42,6 @@ return impl_->CreateAlarm(std::move(delegate), arena); } -QuartcFactoryConfig CreateFactoryConfig(QuicAlarmFactory* alarm_factory, - const QuicClock* clock) { - QuartcFactoryConfig config; - config.alarm_factory = alarm_factory; - config.clock = clock; - return config; -} - } // namespace QuartcClientEndpoint::QuartcClientEndpoint( @@ -68,8 +60,7 @@ AllSupportedVersions())), create_session_alarm_(QuicWrapUnique( alarm_factory_->CreateAlarm(new CreateSessionDelegate(this)))), - factory_(QuicMakeUnique<QuartcFactory>( - CreateFactoryConfig(alarm_factory, clock))), + connection_helper_(QuicMakeUnique<QuartcConnectionHelper>(clock)), config_(config) {} void QuartcClientEndpoint::Connect(QuartcPacketTransport* packet_transport) { @@ -78,9 +69,10 @@ } void QuartcClientEndpoint::OnCreateSessionAlarm() { - session_ = factory_->CreateQuartcClientSession( - config_, version_manager_->GetSupportedVersions(), - serialized_server_config_, packet_transport_); + session_ = CreateQuartcClientSession( + config_, clock_, alarm_factory_, connection_helper_.get(), + version_manager_->GetSupportedVersions(), serialized_server_config_, + packet_transport_); delegate_->OnSessionCreated(session_.get()); }
diff --git a/quic/quartc/quartc_endpoint.h b/quic/quartc/quartc_endpoint.h index c78641f..97f3060 100644 --- a/quic/quartc/quartc_endpoint.h +++ b/quic/quartc/quartc_endpoint.h
@@ -108,11 +108,8 @@ // calls the delegate. std::unique_ptr<QuicAlarm> create_session_alarm_; - // QuartcFactory used by this endpoint to create sessions. This is an - // implementation detail of the QuartcEndpoint, and will eventually be - // replaced by a dispatcher (for servers) or version-negotiation agent (for - // clients). - std::unique_ptr<QuartcFactory> factory_; + // Helper used by QuicConnection. + std::unique_ptr<QuicConnectionHelperInterface> connection_helper_; // Config to be used for new sessions. QuartcSessionConfig config_;
diff --git a/quic/quartc/quartc_factory.cc b/quic/quartc/quartc_factory.cc index 8efa544..51066f4 100644 --- a/quic/quartc/quartc_factory.cc +++ b/quic/quartc/quartc_factory.cc
@@ -16,16 +16,11 @@ namespace quic { -QuartcFactory::QuartcFactory(const QuartcFactoryConfig& factory_config) - : alarm_factory_(factory_config.alarm_factory), - clock_(factory_config.clock), - connection_helper_(QuicMakeUnique<QuartcConnectionHelper>(clock_)), - compressed_certs_cache_(QuicMakeUnique<QuicCompressedCertsCache>( - QuicCompressedCertsCache::kQuicCompressedCertsCacheSize)), - stream_helper_(QuicMakeUnique<QuartcCryptoServerStreamHelper>()) {} - -std::unique_ptr<QuartcSession> QuartcFactory::CreateQuartcClientSession( +std::unique_ptr<QuartcSession> CreateQuartcClientSession( const QuartcSessionConfig& quartc_session_config, + const QuicClock* clock, + QuicAlarmFactory* alarm_factory, + QuicConnectionHelperInterface* connection_helper, const ParsedQuicVersionVector& supported_versions, QuicStringPiece server_crypto_config, QuartcPacketTransport* packet_transport) { @@ -38,11 +33,18 @@ // While the QuicConfig is not directly used by the connection, creating it // also sets flag values which must be set before creating the connection. QuicConfig quic_config = CreateQuicConfig(quartc_session_config); + + // |dummy_id| and |dummy_address| are used because Quartc network layer will + // not use these two. + QuicConnectionId dummy_id = QuicUtils::CreateZeroConnectionId( + supported_versions[0].transport_version); + QuicSocketAddress dummy_address(QuicIpAddress::Any4(), /*port=*/0); std::unique_ptr<QuicConnection> quic_connection = CreateQuicConnection( - Perspective::IS_CLIENT, supported_versions, writer.get()); + dummy_id, dummy_address, connection_helper, alarm_factory, writer.get(), + Perspective::IS_CLIENT, supported_versions); return QuicMakeUnique<QuartcClientSession>( - std::move(quic_connection), quic_config, supported_versions, clock_, + std::move(quic_connection), quic_config, supported_versions, clock, std::move(writer), CreateCryptoClientConfig(quartc_session_config.pre_shared_key), server_crypto_config); @@ -191,20 +193,6 @@ return quic_config; } -std::unique_ptr<QuicConnection> QuartcFactory::CreateQuicConnection( - Perspective perspective, - const ParsedQuicVersionVector& supported_versions, - QuartcPacketWriter* packet_writer) { - // |dummy_id| and |dummy_address| are used because Quartc network layer will - // not use these two. - QuicConnectionId dummy_id = QuicUtils::CreateZeroConnectionId( - supported_versions[0].transport_version); - QuicSocketAddress dummy_address(QuicIpAddress::Any4(), /*port=*/0); - return quic::CreateQuicConnection( - dummy_id, dummy_address, connection_helper_.get(), alarm_factory_, - packet_writer, perspective, supported_versions); -} - std::unique_ptr<QuicConnection> CreateQuicConnection( QuicConnectionId connection_id, const QuicSocketAddress& peer_address, @@ -246,9 +234,4 @@ return quic_connection; } -std::unique_ptr<QuartcFactory> CreateQuartcFactory( - const QuartcFactoryConfig& factory_config) { - return std::unique_ptr<QuartcFactory>(new QuartcFactory(factory_config)); -} - } // namespace quic
diff --git a/quic/quartc/quartc_factory.h b/quic/quartc/quartc_factory.h index d568f52..df55cd3 100644 --- a/quic/quartc/quartc_factory.h +++ b/quic/quartc/quartc_factory.h
@@ -13,18 +13,6 @@ namespace quic { -// The configuration for creating a QuartcFactory. -struct QuartcFactoryConfig { - // Factory for |QuicAlarm|s. Implemented by the Quartc user with different - // mechanisms. For example in WebRTC, it is implemented with rtc::Thread. - // Owned by the user, and needs to stay alive for as long as the QuartcFactory - // exists. - QuicAlarmFactory* alarm_factory = nullptr; - // The clock used by |QuicAlarm|s. Implemented by the Quartc user. Owned by - // the user, and needs to stay alive for as long as the QuartcFactory exists. - const QuicClock* clock = nullptr; -}; - struct QuartcSessionConfig { // If a pre-shared cryptographic key is available for this session, specify it // here. This value will only be used if non-empty. @@ -48,42 +36,15 @@ bool enable_tail_loss_probe = true; }; -// Factory that creates instances of QuartcSession. Implements the -// QuicConnectionHelperInterface used by the QuicConnections. Only one -// QuartcFactory is expected to be created. -class QuartcFactory { - public: - explicit QuartcFactory(const QuartcFactoryConfig& factory_config); - - // Creates a new QuartcSession using the given configuration. - std::unique_ptr<QuartcSession> CreateQuartcClientSession( - const QuartcSessionConfig& quartc_session_config, - const ParsedQuicVersionVector& supported_versions, - QuicStringPiece server_crypto_config, - QuartcPacketTransport* packet_transport); - - private: - std::unique_ptr<QuicConnection> CreateQuicConnection( - Perspective perspective, - const ParsedQuicVersionVector& supported_versions, - QuartcPacketWriter* packet_writer); - - // Used to implement QuicAlarmFactory. Owned by the user and must outlive - // QuartcFactory. - QuicAlarmFactory* alarm_factory_; - // Used to implement the QuicConnectionHelperInterface. Owned by the user and - // must outlive QuartcFactory. - const QuicClock* clock_; - - // Helper used by all QuicConnections. - std::unique_ptr<QuicConnectionHelperInterface> connection_helper_; - - // Used by QuicCryptoServerStream to track most recently compressed certs. - std::unique_ptr<QuicCompressedCertsCache> compressed_certs_cache_; - - // This helper is needed to create QuicCryptoServerStreams. - std::unique_ptr<QuicCryptoServerStream::Helper> stream_helper_; -}; +// Creates a new QuartcClientSession using the given configuration. +std::unique_ptr<QuartcSession> CreateQuartcClientSession( + const QuartcSessionConfig& quartc_session_config, + const QuicClock* clock, + QuicAlarmFactory* alarm_factory, + QuicConnectionHelperInterface* connection_helper, + const ParsedQuicVersionVector& supported_versions, + QuicStringPiece server_crypto_config, + QuartcPacketTransport* packet_transport); // Configures global settings, such as supported quic versions. // Must execute on QUIC thread. @@ -101,10 +62,6 @@ Perspective perspective, ParsedQuicVersionVector supported_versions); -// Creates a new instance of QuartcFactory. -std::unique_ptr<QuartcFactory> CreateQuartcFactory( - const QuartcFactoryConfig& factory_config); - } // namespace quic #endif // QUICHE_QUIC_QUARTC_QUARTC_FACTORY_H_