| #include <systemd/sd-event.h> | |
| #include <sdeventplus/event.hpp> | |
| namespace utils | |
| { | |
| void runEventLoopForSeconds(sdeventplus::Event& event, uint64_t sec) | |
| { | |
| uint64_t t0 = 0; | |
| uint64_t t1 = 0; | |
| uint64_t usec = sec * 1000000; | |
| uint64_t elapsed = 0; | |
| sd_event_now(event.get(), CLOCK_MONOTONIC, &t0); | |
| do | |
| { | |
| if (!sd_event_run(event.get(), usec - elapsed)) | |
| { | |
| break; | |
| } | |
| sd_event_now(event.get(), CLOCK_MONOTONIC, &t1); | |
| elapsed = t1 - t0; | |
| } while (elapsed < usec); | |
| } | |
| } // namespace utils |