blob: b6daed3764bf9bc3ae35f42789c56ce1f72f807e [file] [log] [blame]
vasilvvd88f1622019-11-04 13:50:53 -08001// Copyright (c) 2019 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/third_party/quiche/src/quic/tools/quic_transport_simple_server_dispatcher.h"
6
7#include <memory>
8
9#include "net/third_party/quiche/src/quic/core/quic_connection.h"
10#include "net/third_party/quiche/src/quic/core/quic_dispatcher.h"
11#include "net/third_party/quiche/src/quic/core/quic_types.h"
12#include "net/third_party/quiche/src/quic/core/quic_versions.h"
13#include "net/third_party/quiche/src/quic/tools/quic_transport_simple_server_session.h"
QUICHE team5015e2e2019-12-11 09:38:06 -080014#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
vasilvvd88f1622019-11-04 13:50:53 -080015
16namespace quic {
17
18QuicTransportSimpleServerDispatcher::QuicTransportSimpleServerDispatcher(
19 const QuicConfig* config,
20 const QuicCryptoServerConfig* crypto_config,
21 QuicVersionManager* version_manager,
22 std::unique_ptr<QuicConnectionHelperInterface> helper,
23 std::unique_ptr<QuicCryptoServerStream::Helper> session_helper,
24 std::unique_ptr<QuicAlarmFactory> alarm_factory,
25 uint8_t expected_server_connection_id_length,
vasilvvd88f1622019-11-04 13:50:53 -080026 std::vector<url::Origin> accepted_origins)
27 : QuicDispatcher(config,
28 crypto_config,
29 version_manager,
30 std::move(helper),
31 std::move(session_helper),
32 std::move(alarm_factory),
33 expected_server_connection_id_length),
vasilvvd88f1622019-11-04 13:50:53 -080034 accepted_origins_(accepted_origins) {}
35
wub89490e02019-12-12 12:45:58 -080036std::unique_ptr<QuicSession>
37QuicTransportSimpleServerDispatcher::CreateQuicSession(
vasilvvd88f1622019-11-04 13:50:53 -080038 QuicConnectionId server_connection_id,
39 const QuicSocketAddress& peer_address,
QUICHE team5015e2e2019-12-11 09:38:06 -080040 quiche::QuicheStringPiece /*alpn*/,
vasilvvd88f1622019-11-04 13:50:53 -080041 const ParsedQuicVersion& version) {
42 auto connection = std::make_unique<QuicConnection>(
43 server_connection_id, peer_address, helper(), alarm_factory(), writer(),
44 /*owns_writer=*/false, Perspective::IS_SERVER,
45 ParsedQuicVersionVector{version});
wub89490e02019-12-12 12:45:58 -080046 auto session = std::make_unique<QuicTransportSimpleServerSession>(
47 connection.release(), /*owns_connection=*/true, this, config(),
48 GetSupportedVersions(), crypto_config(), compressed_certs_cache(),
49 accepted_origins_);
wub50c6a372019-11-25 05:34:56 -080050 session->Initialize();
51 return session;
vasilvvd88f1622019-11-04 13:50:53 -080052}
53
54} // namespace quic