mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 08:16:09 +03:00
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
// Copyright 2015 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 "base/task/sequence_manager/real_time_domain.h"
|
|
|
|
#include "base/task/sequence_manager/sequence_manager.h"
|
|
|
|
namespace base {
|
|
namespace sequence_manager {
|
|
namespace internal {
|
|
|
|
RealTimeDomain::RealTimeDomain() {}
|
|
|
|
RealTimeDomain::~RealTimeDomain() = default;
|
|
|
|
LazyNow RealTimeDomain::CreateLazyNow() const {
|
|
return LazyNow(sequence_manager()->GetTickClock());
|
|
}
|
|
|
|
TimeTicks RealTimeDomain::Now() const {
|
|
return sequence_manager()->NowTicks();
|
|
}
|
|
|
|
Optional<TimeDelta> RealTimeDomain::DelayTillNextTask(LazyNow* lazy_now) {
|
|
Optional<TimeTicks> next_run_time = NextScheduledRunTime();
|
|
if (!next_run_time)
|
|
return nullopt;
|
|
|
|
TimeTicks now = lazy_now->Now();
|
|
if (now >= next_run_time) {
|
|
// Overdue work needs to be run immediately.
|
|
return TimeDelta();
|
|
}
|
|
|
|
TimeDelta delay = *next_run_time - now;
|
|
TRACE_EVENT1("sequence_manager", "RealTimeDomain::DelayTillNextTask",
|
|
"delay_ms", delay.InMillisecondsF());
|
|
return delay;
|
|
}
|
|
|
|
const char* RealTimeDomain::GetName() const {
|
|
return "RealTimeDomain";
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace sequence_manager
|
|
} // namespace base
|