blob: cab2925d5f1c02a9d9b1985e1e77364a8a3b447f [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/tools/quic/quic_simple_dispatcher.h"
#include "net/tools/quic/quic_simple_server_session.h"
namespace net {
QuicSimpleDispatcher::QuicSimpleDispatcher(
const QuicConfig& config,
const QuicCryptoServerConfig* crypto_config,
QuicVersionManager* version_manager,
std::unique_ptr<QuicConnectionHelperInterface> helper,
std::unique_ptr<QuicCryptoServerStream::Helper> session_helper,
std::unique_ptr<QuicAlarmFactory> alarm_factory,
QuicHttpResponseCache* response_cache)
: QuicDispatcher(config,
crypto_config,
version_manager,
std::move(helper),
std::move(session_helper),
std::move(alarm_factory)),
response_cache_(response_cache) {}
QuicSimpleDispatcher::~QuicSimpleDispatcher() {}
QuicServerSessionBase* QuicSimpleDispatcher::CreateQuicSession(
QuicConnectionId connection_id,
const QuicSocketAddress& client_address) {
// The QuicServerSessionBase takes ownership of |connection| below.
QuicConnection* connection = new QuicConnection(
connection_id, client_address, helper(), alarm_factory(),
CreatePerConnectionWriter(),
/* owns_writer= */ true, Perspective::IS_SERVER, GetSupportedVersions());
QuicServerSessionBase* session = new QuicSimpleServerSession(
config(), connection, this, session_helper(), crypto_config(),
compressed_certs_cache(), response_cache_);
session->Initialize();
return session;
}
} // namespace net