36 lines
592 B
C++
36 lines
592 B
C++
#include <psemek/util/event_loop.hpp>
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
}
|