blob: df55cd3a3baf7af4317d9b58cad9b49112437fce [file] [log] [blame]
// Copyright (c) 2017 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.
#ifndef QUICHE_QUIC_QUARTC_QUARTC_FACTORY_H_
#define QUICHE_QUIC_QUARTC_QUARTC_FACTORY_H_
#include "net/third_party/quiche/src/quic/core/quic_alarm_factory.h"
#include "net/third_party/quiche/src/quic/core/quic_connection.h"
#include "net/third_party/quiche/src/quic/core/quic_simple_buffer_allocator.h"
#include "net/third_party/quiche/src/quic/quartc/quartc_packet_writer.h"
#include "net/third_party/quiche/src/quic/quartc/quartc_session.h"
namespace quic {
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.
std::string pre_shared_key;
// The maximum size of the packet can be written with the packet writer.
// 1200 bytes by default.
QuicPacketLength max_packet_size = 1200;
// Timeouts for the crypto handshake. Set them to higher values to
// prevent closing the session before it started on a slow network.
// Zero entries are ignored and QUIC defaults are used in that case.
QuicTime::Delta max_idle_time_before_crypto_handshake =
QuicTime::Delta::Zero();
QuicTime::Delta max_time_before_crypto_handshake = QuicTime::Delta::Zero();
QuicTime::Delta idle_network_timeout = QuicTime::Delta::Zero();
// Tail loss probes (TLP) are enabled by default, but it may be useful to
// disable them in tests. We can also consider disabling them in production
// if we discover that tail loss probes add overhead in low bitrate audio.
bool enable_tail_loss_probe = true;
};
// 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.
void ConfigureGlobalQuicSettings();
// Must execute on QUIC thread.
QuicConfig CreateQuicConfig(const QuartcSessionConfig& quartc_session_config);
std::unique_ptr<QuicConnection> CreateQuicConnection(
QuicConnectionId connection_id,
const QuicSocketAddress& peer_address,
QuicConnectionHelperInterface* connection_helper,
QuicAlarmFactory* alarm_factory,
QuicPacketWriter* packet_writer,
Perspective perspective,
ParsedQuicVersionVector supported_versions);
} // namespace quic
#endif // QUICHE_QUIC_QUARTC_QUARTC_FACTORY_H_