|  | // 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_ |