morph 0.1.0
Asynchronous bridge between GUI thread and business models
Loading...
Searching...
No Matches
morph::qt_quick::QtScheduler Class Referencefinal

reactive::Scheduler on QTimers, for a runtime whose owner is the Qt event loop's thread. More...

#include <scheduler.hpp>

Inheritance diagram for morph::qt_quick::QtScheduler:
morph::reactive::Scheduler

Public Member Functions

 QtScheduler (exec::IExecutor &owner, QObject *context=nullptr)
 A scheduler whose timers belong to context.
 ~QtScheduler () override
 Stops every timer; a handle cancelled later does nothing.
 QtScheduler (QtScheduler const &)=delete
QtScheduler & operator= (QtScheduler const &)=delete
 QtScheduler (QtScheduler &&)=delete
QtScheduler & operator= (QtScheduler &&)=delete
reactive::TimerHandle after (std::chrono::milliseconds delay, std::function< void()> fn) override
 Runs fn once, delay from now.
reactive::TimerHandle every (std::chrono::milliseconds period, std::function< void()> fn) override
 Runs fn every period, starting one period from now.
std::size_t pendingTimers () const noexcept
 How many timers are armed.
Public Member Functions inherited from morph::reactive::Scheduler
 Scheduler (Scheduler const &)=delete
Scheduler & operator= (Scheduler const &)=delete
 Scheduler (Scheduler &&)=delete
Scheduler & operator= (Scheduler &&)=delete

Detailed Description

reactive::Scheduler on QTimers, for a runtime whose owner is the Qt event loop's thread.

Each callback runs on that thread with owner as the current executor, so it may write the reactive state the owner's runtime holds. It keeps every guarantee of the Scheduler contract: a cancelled timer never fires; a handle may be cancelled from inside its own callback and may outlive the scheduler; a periodic timer that the loop could not serve for several periods fires once. Neither copyable nor movable; used on its thread only.

Definition at line 28 of file scheduler.hpp.

Constructor & Destructor Documentation

◆ QtScheduler()

morph::qt_quick::QtScheduler::QtScheduler ( exec::IExecutor & owner,
QObject * context = nullptr )
explicit

A scheduler whose timers belong to context.

Parameters
ownerThe executor the callbacks run under. Borrowed: it outlives the scheduler.
contextThe object the timers are children of; null makes them children of an object the scheduler owns.

Member Function Documentation

◆ after()

reactive::TimerHandle morph::qt_quick::QtScheduler::after ( std::chrono::milliseconds delay,
std::function< void()> fn )
nodiscardoverridevirtual

Runs fn once, delay from now.

Parameters
delayHow long to wait; a non-positive delay means as soon as possible.
fnThe callback.
Returns
The handle; destroying it before the deadline cancels the call.

Implements morph::reactive::Scheduler.

◆ every()

reactive::TimerHandle morph::qt_quick::QtScheduler::every ( std::chrono::milliseconds period,
std::function< void()> fn )
nodiscardoverridevirtual

Runs fn every period, starting one period from now.

Parameters
periodThe interval; must be positive.
fnThe callback.
Returns
The handle; destroying it stops the repetition.
Exceptions
std::invalid_argumentwhen period is not positive.

Implements morph::reactive::Scheduler.

◆ pendingTimers()

std::size_t morph::qt_quick::QtScheduler::pendingTimers ( ) const
nodiscardnoexcept

How many timers are armed.

Returns
Their number.

The documentation for this class was generated from the following file: