| Index: net/tools/quic/quic_dispatcher.cc
|
| diff --git a/net/tools/quic/quic_dispatcher.cc b/net/tools/quic/quic_dispatcher.cc
|
| index cf3a46b3bf0a38e343bdedb3f06cf10e382c3186..05cb39d4432cb8742131582068bf3837fe718592 100644
|
| --- a/net/tools/quic/quic_dispatcher.cc
|
| +++ b/net/tools/quic/quic_dispatcher.cc
|
| @@ -15,6 +15,7 @@
|
| #include "net/tools/epoll_server/epoll_server.h"
|
| #include "net/tools/quic/quic_default_packet_writer.h"
|
| #include "net/tools/quic/quic_epoll_connection_helper.h"
|
| +#include "net/tools/quic/quic_per_connection_packet_writer.h"
|
| #include "net/tools/quic/quic_socket_utils.h"
|
| #include "net/tools/quic/quic_time_wait_list_manager.h"
|
|
|
| @@ -159,15 +160,37 @@ class QuicDispatcher::QuicFramerVisitor : public QuicFramerVisitorInterface {
|
| QuicConnectionId connection_id_;
|
| };
|
|
|
| +QuicPacketWriter* QuicDispatcher::DefaultPacketWriterFactory::Create(
|
| + QuicPacketWriter* writer,
|
| + QuicConnection* connection) {
|
| + return new QuicPerConnectionPacketWriter(writer, connection);
|
| +}
|
| +
|
| +QuicDispatcher::PacketWriterFactoryAdapter::PacketWriterFactoryAdapter(
|
| + QuicDispatcher* dispatcher)
|
| + : dispatcher_(dispatcher) {}
|
| +
|
| +QuicDispatcher::PacketWriterFactoryAdapter::~PacketWriterFactoryAdapter() {}
|
| +
|
| +QuicPacketWriter* QuicDispatcher::PacketWriterFactoryAdapter::Create(
|
| + QuicConnection* connection) const {
|
| + return dispatcher_->packet_writer_factory_->Create(
|
| + dispatcher_->writer_.get(),
|
| + connection);
|
| +}
|
| +
|
| QuicDispatcher::QuicDispatcher(const QuicConfig& config,
|
| const QuicCryptoServerConfig& crypto_config,
|
| const QuicVersionVector& supported_versions,
|
| + PacketWriterFactory* packet_writer_factory,
|
| EpollServer* epoll_server)
|
| : config_(config),
|
| crypto_config_(crypto_config),
|
| delete_sessions_alarm_(new DeleteSessionsAlarm(this)),
|
| epoll_server_(epoll_server),
|
| helper_(new QuicEpollConnectionHelper(epoll_server_)),
|
| + packet_writer_factory_(packet_writer_factory),
|
| + connection_writer_factory_(this),
|
| supported_versions_(supported_versions),
|
| current_packet_(NULL),
|
| framer_(supported_versions, /*unused*/ QuicTime::Zero(), true),
|
| @@ -366,9 +389,9 @@ QuicConnection* QuicDispatcher::CreateQuicConnection(
|
| return new QuicConnection(connection_id,
|
| client_address,
|
| helper_.get(),
|
| - writer_.get(),
|
| - false /* owns_writer */,
|
| - true /* is_server */,
|
| + connection_writer_factory_,
|
| + /* owns_writer= */ true,
|
| + /* is_server= */ true,
|
| supported_versions_);
|
| }
|
|
|
|
|