| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/openscreen/src/platform/api/time.h" |
| |
| #include "base/compiler_specific.h" |
| #include "base/logging.h" |
| #include "base/time/time.h" |
| |
| using std::chrono::microseconds; |
| using std::chrono::seconds; |
| |
| namespace openscreen { |
| |
| Clock::time_point Clock::now() noexcept { |
| // Open Screen requires at least 10,000 ticks per second, according to the |
| // docs. If IsHighResolution is false, the supplied resolution is much worse |
| // than that (potentially up to ~15.6ms). |
| if (UNLIKELY(!base::TimeTicks::IsHighResolution())) { |
| static bool need_to_log_once = true; |
| LOG_IF(ERROR, need_to_log_once) |
| << "Open Screen requires a high resolution clock to work properly."; |
| need_to_log_once = false; |
| } |
| |
| return Clock::time_point( |
| microseconds(base::TimeTicks::Now().since_origin().InMicroseconds())); |
| } |
| |
| std::chrono::seconds GetWallTimeSinceUnixEpoch() noexcept { |
| const auto delta = base::Time::Now() - base::Time::UnixEpoch(); |
| return seconds(delta.InSeconds()); |
| } |
| |
| } // namespace openscreen |