LibQuicR
clock.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) 2026 Cisco Systems
2 // SPDX-License-Identifier: BSD-2-Clause
3 
4 #pragma once
5 
6 #include <chrono>
7 #include <cstdint>
8 #include <memory>
9 
10 namespace quicr {
11 
13  class Clock
14  {
15  public:
21  static std::shared_ptr<Clock> Create(std::uint64_t sleep_delay_us = 333);
22 
24  virtual ~Clock() = default;
25 
27  virtual std::chrono::microseconds Get() const = 0;
28 
34  template<typename D>
35  D Get() const
36  {
37  return std::chrono::duration_cast<D>(Get());
38  }
39  };
40 
41 }
Monotonic microsecond clock abstraction.
Definition: clock.h:14
D Get() const
Definition: clock.h:35
virtual ~Clock()=default
Destroys the clock.
static std::shared_ptr< Clock > Create(std::uint64_t sleep_delay_us=333)
virtual std::chrono::microseconds Get() const =0
Definition: attributes.h:13