module dast.async.timer.epoll; version (linux) : import dast.async.core, dast.async.timer.common, core.sys.posix.unistd, core.sys.linux.timerfd; class TimerBase : Timer { this() { handle = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); } int handle; } package bool setTimer(int fd) { itimerspec its; ulong sec = time / 1000, nsec = time % 1000 * 1_000_000; its.it_value.tv_sec = cast(typeof(its.it_value.tv_sec))sec; its.it_value.tv_nsec = cast(typeof(its.it_value.tv_nsec))nsec; its.it_interval.tv_sec = its.it_value.tv_sec; its.it_interval.tv_nsec = its.it_value.tv_nsec; const err = timerfd_settime(fd, 0, &its, null); return err != -1; }