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