74 {
75 Time expected_end = start_ + expected_cycle_time_;
76
78
79
80 if (actual_end < start_) {
81 AWARN <<
"Detect backward jumps in time";
82 expected_end = actual_end + expected_cycle_time_;
83 }
84
85
86 Duration sleep_time = expected_end - actual_end;
87
88
89 actual_cycle_time_ = actual_end - start_;
90
91
92 start_ = expected_end;
93
94
96 AWARN <<
"Detect forward jumps in time";
97
98
99 if (actual_end > expected_end + expected_cycle_time_) {
100 start_ = actual_end;
101 }
102
103 return;
104 }
105
107}
Cyber has builtin time type Time.
static void SleepUntil(const Time &time)
Sleep Until time.
std::chrono::microseconds Duration