MCPcopy Create free account
hub / github.com/davidmoreno/rtpmidid / poller_wait_until

Function poller_wait_until

tests/test_utils.cpp:171–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171void poller_wait_until(const std::function<bool(void)> &f,
172 std::chrono::milliseconds ms) {
173 using namespace std::chrono_literals;
174 using milliseconds = std::chrono::milliseconds;
175
176 auto pending = ms;
177 auto start = std::chrono::system_clock::now();
178 auto start0 = start;
179 bool fret = f();
180 std::chrono::milliseconds one_ms(1);
181
182 while (pending > 0s && !fret) {
183 DEBUG("WAIT {}ms or F", pending.count());
184 rtpmidid::poller.wait(std::max(pending / 4, one_ms));
185 auto now = std::chrono::system_clock::now();
186 auto elapsed = std::chrono::duration_cast<milliseconds>(now - start);
187 start = now;
188 pending -= elapsed;
189 fret = f();
190 };
191 auto now = std::chrono::system_clock::now();
192 auto elapsed = std::chrono::duration_cast<milliseconds>(now - start0);
193 DEBUG("Done in {}ms", elapsed.count());
194 if (elapsed > ms) {
195 ERROR("TEST TIMEOUT");
196 }
197}

Calls 2

countMethod · 0.80
waitMethod · 0.45

Tested by

no test coverage detected