xref: /aosp_15_r20/external/cronet/net/quic/platform/impl/quic_chromium_clock.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2012 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NET_QUIC_PLATFORM_IMPL_QUIC_CHROMIUM_CLOCK_H_
6 #define NET_QUIC_PLATFORM_IMPL_QUIC_CHROMIUM_CLOCK_H_
7 
8 #include "base/time/time.h"
9 #include "net/base/net_export.h"
10 #include "net/third_party/quiche/src/quiche/quic/core/quic_clock.h"
11 
12 namespace quic {
13 
14 // Clock to efficiently retrieve an approximately accurate time from an
15 // net::EpollServer.
16 class NET_EXPORT_PRIVATE QuicChromiumClock : public QuicClock {
17  public:
18   static QuicChromiumClock* GetInstance();
19 
20   QuicChromiumClock();
21 
22   QuicChromiumClock(const QuicChromiumClock&) = delete;
23   QuicChromiumClock& operator=(const QuicChromiumClock&) = delete;
24 
25   ~QuicChromiumClock() override;
26 
27   // QuicClock implementation:
28   QuicTime ApproximateNow() const override;
29   QuicTime Now() const override;
30   QuicWallTime WallNow() const override;
31 
32   // Converts a QuicTime returned by QuicChromiumClock to base::TimeTicks.
33   // Helper functions to safely convert between QuicTime and TimeTicks.
34   static base::TimeTicks QuicTimeToTimeTicks(QuicTime quic_time);
35 };
36 
37 }  // namespace quic
38 
39 #endif  // NET_QUIC_PLATFORM_IMPL_QUIC_CHROMIUM_CLOCK_H_
40