1 #include <systemd/sd-event.h> 2 3 #include <sdeventplus/event.hpp> 4 5 namespace utils 6 { runEventLoopForSeconds(sdeventplus::Event & event,uint64_t sec)7void runEventLoopForSeconds(sdeventplus::Event& event, uint64_t sec) 8 { 9 uint64_t t0 = 0; 10 uint64_t t1 = 0; 11 uint64_t usec = sec * 1000000; 12 uint64_t elapsed = 0; 13 sd_event_now(event.get(), CLOCK_MONOTONIC, &t0); 14 do 15 { 16 if (!sd_event_run(event.get(), usec - elapsed)) 17 { 18 break; 19 } 20 sd_event_now(event.get(), CLOCK_MONOTONIC, &t1); 21 elapsed = t1 - t0; 22 } while (elapsed < usec); 23 } 24 } // namespace utils 25