Ejemplo n.º 1
0
void EventLoop::delay(
    const Duration& duration,
    const lambda::function<void(void)>& function)
{
    internal::Delay* delay = new internal::Delay();
    delay->timer = evtimer_new(base, &internal::handle_delay, delay);
    if (delay->timer == NULL) {
        LOG(FATAL) << "Failed to delay, evtimer_new";
    }

    delay->function = function;

    timeval t{0, 0};
    if (duration > Seconds(0)) {
        t = duration.timeval();
    }

    evtimer_add(delay->timer, &t);
}