Index: net/quic/quic_stream_factory.cc |
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc |
index ea30b2e16e087c9c686e53ac1e0c9b936b17ffe7..040c563b0a0fe0cf407d3a94dbf1052ac76a3597 100644 |
--- a/net/quic/quic_stream_factory.cc |
+++ b/net/quic/quic_stream_factory.cc |
@@ -100,6 +100,26 @@ QuicConfig InitializeQuicConfig(bool enable_pacing, |
return config; |
} |
+class ClientPacketWriterFactory : public QuicConnection::PacketWriterFactory { |
wtc
2014/08/13 21:01:34
Note: I picked the "ClientPacketWriterFactory" nam
dmz
2014/08/14 17:22:42
I probably would have gone with DefaultPacketWrite
wtc
2014/08/14 20:05:00
Ah, I now also prefer "Default" because this facto
dmz
2014/08/14 21:24:51
Done.
|
+ public: |
+ explicit ClientPacketWriterFactory(DatagramClientSocket* socket) |
+ : socket_(socket) {} |
+ virtual ~ClientPacketWriterFactory() {} |
+ |
+ virtual QuicPacketWriter* Create(QuicConnection* connection) const OVERRIDE; |
+ |
+ private: |
+ DatagramClientSocket* socket_; |
+}; |
+ |
+QuicPacketWriter* ClientPacketWriterFactory::Create( |
+ QuicConnection* connection) const { |
+ scoped_ptr<QuicDefaultPacketWriter> writer( |
+ new QuicDefaultPacketWriter(socket_)); |
+ writer->SetConnection(connection); |
+ return writer.release(); |
+} |
+ |
} // namespace |
QuicStreamFactory::IpAliasKey::IpAliasKey() {} |
@@ -822,8 +842,7 @@ int QuicStreamFactory::CreateSession( |
return rv; |
} |
- scoped_ptr<QuicDefaultPacketWriter> writer( |
- new QuicDefaultPacketWriter(socket.get())); |
+ ClientPacketWriterFactory packet_writer_factory(socket.get()); |
if (!helper_.get()) { |
helper_.reset(new QuicConnectionHelper( |
@@ -834,11 +853,10 @@ int QuicStreamFactory::CreateSession( |
QuicConnection* connection = new QuicConnection(connection_id, |
addr, |
helper_.get(), |
- writer.get(), |
- false /* owns_writer */, |
+ packet_writer_factory, |
+ true /* owns_writer */, |
false /* is_server */, |
supported_versions_); |
- writer->SetConnection(connection); |
connection->set_max_packet_length(max_packet_length_); |
InitializeCachedStateInCryptoConfig(server_id, server_info); |
@@ -860,7 +878,7 @@ int QuicStreamFactory::CreateSession( |
} |
*session = new QuicClientSession( |
- connection, socket.Pass(), writer.Pass(), this, |
+ connection, socket.Pass(), this, |
quic_crypto_client_stream_factory_, server_info.Pass(), server_id, |
config, &crypto_config_, |
base::MessageLoop::current()->message_loop_proxy().get(), |