#include namespace psemek::util { void event_loop::post(task t) { task_queue_.push_back(std::move(t)); } void event_loop::wait() { while (!task_queue_.empty()) { auto t = std::move(task_queue_.front()); task_queue_.pop_front(); t(); } } void event_loop::wait_for(clock::duration period) { wait_until(clock::now() + period); } void event_loop::wait_until(clock::time_point time) { while (!task_queue_.empty() && clock::now() < time) { auto t = std::move(task_queue_.front()); task_queue_.pop_front(); t(); } } }