Add support for injecting Clock to RepeatingTaskHandle.
This will improve support for tests that use Clock as well as offer a way to remove use of Sleep() in the tests. Bug: none Change-Id: I25fd0c6fc1b52ec0c917e56fae6807b136213d8d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175566 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Sebastian Jansson <srte@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31305}
This commit is contained in:
@ -17,11 +17,13 @@
|
||||
|
||||
namespace webrtc {
|
||||
namespace webrtc_repeating_task_impl {
|
||||
|
||||
RepeatingTaskBase::RepeatingTaskBase(TaskQueueBase* task_queue,
|
||||
TimeDelta first_delay)
|
||||
TimeDelta first_delay,
|
||||
Clock* clock)
|
||||
: task_queue_(task_queue),
|
||||
next_run_time_(Timestamp::Micros(rtc::TimeMicros()) + first_delay) {
|
||||
}
|
||||
clock_(clock),
|
||||
next_run_time_(clock_->CurrentTime() + first_delay) {}
|
||||
|
||||
RepeatingTaskBase::~RepeatingTaskBase() = default;
|
||||
|
||||
@ -39,7 +41,7 @@ bool RepeatingTaskBase::Run() {
|
||||
return true;
|
||||
|
||||
RTC_DCHECK(delay.IsFinite());
|
||||
TimeDelta lost_time = Timestamp::Micros(rtc::TimeMicros()) - next_run_time_;
|
||||
TimeDelta lost_time = clock_->CurrentTime() - next_run_time_;
|
||||
next_run_time_ += delay;
|
||||
delay -= lost_time;
|
||||
delay = std::max(delay, TimeDelta::Zero());
|
||||
|
||||
Reference in New Issue
Block a user