27#include <condition_variable>
53 inline operator bool()
const {
54 return static_cast<bool>(
fn);
73 return static_cast<bool>(
fn);
87 Task(std::function<
void()>&& fn,
const char* filename,
uint32_t linum)
88 : job_(
std::
move(fn), filename, linum)
91#pragma GCC diagnostic push
92#pragma GCC diagnostic ignored "-Wunused-parameter"
125 : job_(
std::
move(fn), filename, linum)
128#pragma GCC diagnostic push
129#pragma GCC diagnostic ignored "-Wunused-parameter"
133 std::lock_guard
l(lock_);
135 if (
not cancel_.load()
and job_.
fn) {
153 return static_cast<bool>(job_);
162 std::lock_guard
l(lock_);
173 mutable std::mutex lock_;
174 std::atomic_bool cancel_ {
false};
181 using clock = std::chrono::steady_clock;
191 void run(std::function<
void()>&& job,
230 std::shared_ptr<std::atomic<bool>> running_;
231 std::map<time_point, std::vector<Job>> jobs_ {};
232 std::mutex jobLock_ {};
233 std::condition_variable cv_ {};
A RepeatedJob that can be disposed.
bool run(const char *executor_name)
RepeatedTask(std::function< bool()> &&fn, const char *filename, uint32_t linum)
std::shared_ptr< Task > scheduleIn(std::function< void()> &&job, duration dt, const char *filename=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
Schedule job to be run after delay dt.
clock::time_point time_point
void stop()
Stop the scheduler, it is unable to be reversed.
std::shared_ptr< RepeatedTask > scheduleAtFixedRate(std::function< bool()> &&job, duration dt, const char *filename=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
Schedule job to be run every dt, starting now.
std::shared_ptr< Task > schedule(std::function< void()> &&job, time_point t, const char *filename=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
Schedule job to be run at time t.
std::chrono::steady_clock clock
void run(std::function< void()> &&job, const char *filename=CURRENT_FILENAME(), uint32_t linum=CURRENT_LINE())
Schedule job to be run ASAP.
A Job that can be disposed.
void run(const char *executor_name)
Task(std::function< void()> &&fn, const char *filename, uint32_t linum)
void emitSignal(Args... args)
std::atomic< uint64_t > task_cookie
Simple macro to hide class' copy constructor and assignment operator.
#define NON_COPYABLE(ClassName)
Job(std::function< void()> &&f, const char *file, uint32_t l)
std::function< void()> fn
RepeatedJob(std::function< bool()> &&f, const char *file, uint32_t l)
std::function< bool()> fn
#define jami_tracepoint(...)