1 #include "test-time-source.hpp"
5 TestTimeSource::TestTimeSource(uint64_t base
, TimeUnit unit
, bool reliable
) :
6 time(time_to_ns(base
, unit
)), reliable(reliable
)
10 uint64_t TestTimeSource::now(TimeUnit unit
)
12 return ns_to_time(this->time
, unit
);
17 void TestTimeSource::arm(Timer
*timer
)
19 std::list
<Timer
*>::iterator i
;
21 for (i
= this->events
.begin(); i
!= this->events
.end(); ++i
) {
22 if (timer
->get_deadline() < (*i
)->get_deadline()) {
27 this->events
.insert(i
, timer
);
30 void TestTimeSource::cancel(Timer
*timer
)
32 std::list
<Timer
*>::iterator i
;
34 for (i
= this->events
.begin(); i
!= this->events
.end(); ++i
) {
36 this->events
.erase(i
);
42 void TestTimeSource::advance(uint64_t by
, TimeUnit unit
)
44 std::list
<Timer
*>::iterator i
;
47 target
= time_to_ns(ns_to_time(this->time
, unit
) + by
, unit
);
49 if (!this->reliable
) {
53 i
= this->events
.begin();
54 while (i
!= this->events
.end() &&
55 (*i
)->get_deadline() <= target
) {
57 this->events
.pop_front();
59 if (this->time
< timer
->get_deadline()) {
60 this->time
= timer
->get_deadline();
64 i
= this->events
.begin();