1
#pragma once
2

            
3
#include "source/common/common/non_copyable.h"
4
#include "source/common/quic/envoy_quic_alarm.h"
5

            
6
#include "quiche/quic/core/quic_alarm_factory.h"
7
#include "quiche/quic/core/quic_arena_scoped_ptr.h"
8
#include "quiche/quic/core/quic_one_block_arena.h"
9

            
10
namespace Envoy {
11
namespace Quic {
12

            
13
class EnvoyQuicAlarmFactory : public quic::QuicAlarmFactory, NonCopyable {
14
public:
15
  EnvoyQuicAlarmFactory(Event::Dispatcher& dispatcher, const quic::QuicClock& clock)
16
4511
      : dispatcher_(dispatcher), clock_(clock) {}
17

            
18
4511
  ~EnvoyQuicAlarmFactory() override = default;
19

            
20
  // QuicAlarmFactory
21
  quic::QuicAlarm* CreateAlarm(quic::QuicAlarm::Delegate* delegate) override;
22
  quic::QuicArenaScopedPtr<quic::QuicAlarm>
23
  CreateAlarm(quic::QuicArenaScopedPtr<quic::QuicAlarm::Delegate> delegate,
24
              quic::QuicConnectionArena* arena) override;
25

            
26
private:
27
  Event::Dispatcher& dispatcher_;
28
  const quic::QuicClock& clock_;
29
};
30

            
31
} // namespace Quic
32
} // namespace Envoy