QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QtRuntimeScheduler Class Referencefinal

Qt event-loop implementation; no callback runs inside schedule(). More...

#include <QtRuntimeScheduler.h>

+ Inheritance diagram for QtRuntimeScheduler:
+ Collaboration diagram for QtRuntimeScheduler:

Public Member Functions

 QtRuntimeScheduler (QObject *parent=nullptr)
 
 ~QtRuntimeScheduler () override
 
quint64 nowUs () const override
 
TaskId schedule (QObject *context, std::chrono::microseconds delay, Callback callback) override
 
void cancel (TaskId task) override
 Cancellation from another thread is ignored. All other access and destruction must occur on the owner thread.
 
- Public Member Functions inherited from RuntimeScheduler
 RuntimeScheduler (QObject *parent=nullptr)
 
 ~RuntimeScheduler () override
 
qint64 nowMs () const
 

Protected Member Functions

void timerEvent (QTimerEvent *event) override
 
- Protected Member Functions inherited from RuntimeScheduler
bool _canSchedule (QObject *context, std::chrono::microseconds delay, const Callback &callback) const
 
bool _isCurrentThread () const
 

Additional Inherited Members

- Public Types inherited from RuntimeScheduler
using TaskId = quint64
 
using Callback = std::function< void()>
 
- Static Public Member Functions inherited from RuntimeScheduler
static RuntimeScheduler * orDefault (RuntimeScheduler *scheduler, QObject *owner)
 scheduler, or a QtRuntimeScheduler owned by owner when it is null.
 
- Static Public Attributes inherited from RuntimeScheduler
static constexpr auto MAX_DELAY
 

Detailed Description

Qt event-loop implementation; no callback runs inside schedule().

Definition at line 9 of file QtRuntimeScheduler.h.

Constructor & Destructor Documentation

◆ QtRuntimeScheduler()

QtRuntimeScheduler::QtRuntimeScheduler ( QObject *  parent = nullptr)
explicit

Definition at line 13 of file QtRuntimeScheduler.cc.

◆ ~QtRuntimeScheduler()

QtRuntimeScheduler::~QtRuntimeScheduler ( )
override

Definition at line 18 of file QtRuntimeScheduler.cc.

Member Function Documentation

◆ cancel()

void QtRuntimeScheduler::cancel ( TaskId  task)
overridevirtual

Cancellation from another thread is ignored. All other access and destruction must occur on the owner thread.

Implements RuntimeScheduler.

Definition at line 45 of file QtRuntimeScheduler.cc.

References RuntimeScheduler::_isCurrentThread().

Referenced by schedule().

◆ nowUs()

quint64 QtRuntimeScheduler::nowUs ( ) const
overridevirtual

Implements RuntimeScheduler.

Definition at line 23 of file QtRuntimeScheduler.cc.

References MonotonicClock::nowUs().

◆ schedule()

RuntimeScheduler::TaskId QtRuntimeScheduler::schedule ( QObject *  context,
std::chrono::microseconds  delay,
Callback  callback 
)
overridevirtual

Nonpositive delays defer until the next dispatch. Context must share this object's thread. Calls from other threads and delays above MAX_DELAY are rejected with task ID zero. Destroying context suppresses its callback. No ordering is promised for equal deadlines.

Implements RuntimeScheduler.

Definition at line 28 of file QtRuntimeScheduler.cc.

References RuntimeScheduler::_canSchedule(), and cancel().

◆ timerEvent()

void QtRuntimeScheduler::timerEvent ( QTimerEvent *  event)
overrideprotected

Definition at line 59 of file QtRuntimeScheduler.cc.


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