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); }