4 #include <mapbox/std/weak.hpp>
40 virtual void schedule(std::function<
void()>) = 0;
52 std::function<void()>
bindOnce(std::function<
void()>);
60 template <
typename TaskFn,
typename ReplyFn>
89 template <
typename TaskFn,
typename ReplyFn>
92 mapbox::base::WeakPtr<Scheduler> replyScheduler) {
93 auto scheduled = [replyScheduler = std::move(replyScheduler), task, reply] {
94 auto lock = replyScheduler.lock();
95 if (!replyScheduler)
return;
96 auto scheduledReply = [reply, result = task()] { reply(result); };
97 replyScheduler->schedule(std::move(scheduledReply));
virtual mapbox::base::WeakPtr< Scheduler > makeWeakPtr()=0
Makes a weak pointer to this Scheduler.
static Scheduler * GetCurrent()
Set/Get the current Scheduler for this thread.
std::function< void()> bindOnce(std::function< void()>)
virtual ~Scheduler()=default
void scheduleAndReplyValue(const TaskFn &task, const ReplyFn &reply)
virtual void schedule(std::function< void()>)=0
Enqueues a function for execution.
static void SetCurrent(Scheduler *)
static std::shared_ptr< Scheduler > GetSequenced()
static std::shared_ptr< Scheduler > GetBackground()
void scheduleAndReplyValue(const TaskFn &task, const ReplyFn &reply, mapbox::base::WeakPtr< Scheduler > replyScheduler)