31 virtual void post(std::function<
void()> fn) = 0;
34 virtual void post_delayed(std::chrono::milliseconds delay, std::function<
void()> fn) = 0;
41 std::function<
void()> fn)
override {
47 return ::aria::SchedulerCaps::Post
52 void schedule(std::function<
void()> fn)
override {
56 std::function<
void()> fn)
override {
79 void post(std::function<
void()> fn)
override;
80 void post_delayed(std::chrono::milliseconds delay, std::function<
void()> fn)
override;
85 std::
size_t pump(
std::chrono::milliseconds budget =
std::chrono::milliseconds{50});
97# pragma warning(disable: 4251)
99 std::shared_ptr<Impl> impl_;
Tiny interface — anything that can post a function to run after a delay.
Definition property_ops.hpp:62
Abstract main-thread dispatcher.
Definition dispatcher.hpp:26
::aria::SchedulerCaps caps() const noexcept override
Capability bitmask.
Definition dispatcher.hpp:46
void schedule(std::function< void()> fn) override
Submit fn for execution "soon". Defines Caps::Post.
Definition dispatcher.hpp:52
void post_after(std::chrono::milliseconds delay, std::function< void()> fn) override
IDelayedScheduler adapter — routes to post_delayed.
Definition dispatcher.hpp:40
virtual void post(std::function< void()> fn)=0
Schedule the callable to run on the main thread (asynchronously).
virtual void post_delayed(std::chrono::milliseconds delay, std::function< void()> fn)=0
Like post(), but with a delay.
~IDispatcher() override=default
void schedule_after(std::chrono::milliseconds delay, std::function< void()> fn) override
Submit fn for execution after delay.
Definition dispatcher.hpp:55
bool is_main_thread() const noexcept override=0
Returns true if currently executing on the main thread.
SimpleDispatcher & operator=(SimpleDispatcher &&)=delete
SimpleDispatcher & operator=(const SimpleDispatcher &)=delete
~SimpleDispatcher() override
void run_one()
Block on the creating thread until one callable is available, then run it.
void post_delayed(std::chrono::milliseconds delay, std::function< void()> fn) override
Like post(), but with a delay.
void post(std::function< void()> fn) override
Schedule the callable to run on the main thread (asynchronously).
bool is_main_thread() const noexcept override
Returns true if currently executing on the main thread.
SimpleDispatcher(const SimpleDispatcher &)=delete
SimpleDispatcher(SimpleDispatcher &&)=delete
std::size_t pump(std::chrono::milliseconds budget=std::chrono::milliseconds{50})
Pump pending callables on the creating thread.
#define ARIA_RUNTIME_API
Definition export.hpp:30
Definition container.hpp:11
void set_main_dispatcher(std::shared_ptr< IDispatcher > dispatcher)
std::shared_ptr< IDispatcher > main_dispatcher()
Obtain an owning snapshot of the main dispatcher.
SchedulerCaps
Definition scheduler.hpp:83
@ Pumpable
Posted work is held in a queue until a pump-style call drains it (e.g.
Definition scheduler.hpp:102
@ Delay
Can submit work after a wall-clock or virtual-time delay.
Definition scheduler.hpp:93
@ MainThread
Submitted work runs on a single, identifiable "main" thread that is consistent across calls.
Definition scheduler.hpp:97
Definition validation_key.hpp:110