blob: 1a7325dff217936aaeda81c5e3331a6385983566 [file] [log] [blame]
rch16c74d1d2016-04-22 06:14:071// Copyright (c) 2012 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//
Ryan Hamilton8d9ee76e2018-05-29 23:52:525// The Chrome-specific helper for quic::QuicConnection which uses
rch16c74d1d2016-04-22 06:14:076// a TaskRunner for alarms, and uses a DatagramClientSocket for writing data.
7
Ryan Hamiltona3ee93a72018-08-01 22:03:088#ifndef NET_QUIC_QUIC_CHROMIUM_ALARM_FACTORY_H_
9#define NET_QUIC_QUIC_CHROMIUM_ALARM_FACTORY_H_
rch16c74d1d2016-04-22 06:14:0710
Keishi Hattori0e45c022021-11-27 09:25:5211#include "base/memory/raw_ptr.h"
bnc81c46c1f2016-10-04 16:25:5912#include "net/base/net_export.h"
Victor Vasiliev6bb59d22019-03-08 21:34:5113#include "net/third_party/quiche/src/quic/core/quic_alarm_factory.h"
Bin Wu43ad1462020-02-14 03:18:4914#include "net/third_party/quiche/src/quic/core/quic_clock.h"
Victor Vasiliev6bb59d22019-03-08 21:34:5115#include "net/third_party/quiche/src/quic/core/quic_packets.h"
16#include "net/third_party/quiche/src/quic/core/quic_time.h"
rch16c74d1d2016-04-22 06:14:0717
18namespace base {
Francois Dorayc30a2d02021-06-18 21:36:0119class SequencedTaskRunner;
rch16c74d1d2016-04-22 06:14:0720} // namespace base
21
22namespace net {
23
Ryan Hamilton8d9ee76e2018-05-29 23:52:5224class NET_EXPORT_PRIVATE QuicChromiumAlarmFactory
25 : public quic::QuicAlarmFactory {
rch16c74d1d2016-04-22 06:14:0726 public:
Francois Dorayc30a2d02021-06-18 21:36:0127 QuicChromiumAlarmFactory(base::SequencedTaskRunner* task_runner,
Ryan Hamilton8d9ee76e2018-05-29 23:52:5228 const quic::QuicClock* clock);
Peter Boström293b1342021-09-22 17:31:4329
30 QuicChromiumAlarmFactory(const QuicChromiumAlarmFactory&) = delete;
31 QuicChromiumAlarmFactory& operator=(const QuicChromiumAlarmFactory&) = delete;
32
rch16c74d1d2016-04-22 06:14:0733 ~QuicChromiumAlarmFactory() override;
34
Ryan Hamilton8d9ee76e2018-05-29 23:52:5235 // quic::QuicAlarmFactory
36 quic::QuicAlarm* CreateAlarm(quic::QuicAlarm::Delegate* delegate) override;
37 quic::QuicArenaScopedPtr<quic::QuicAlarm> CreateAlarm(
38 quic::QuicArenaScopedPtr<quic::QuicAlarm::Delegate> delegate,
39 quic::QuicConnectionArena* arena) override;
rch16c74d1d2016-04-22 06:14:0740
41 private:
Keishi Hattori0e45c022021-11-27 09:25:5242 raw_ptr<base::SequencedTaskRunner> task_runner_;
43 const raw_ptr<const quic::QuicClock> clock_;
rch16c74d1d2016-04-22 06:14:0744};
45
46} // namespace net
47
Ryan Hamiltona3ee93a72018-08-01 22:03:0848#endif // NET_QUIC_QUIC_CHROMIUM_ALARM_FACTORY_H_