19 , ReqTimer_ (new QTimer (this))
22 ReqTimer_->setSingleShot (
true);
29 void QueueManager::Schedule (std::function<
void ()>
f, QObject *dep,
QueuePriority prio)
31 const auto& now = QDateTime::currentDateTime ();
33 if (prio == QueuePriority::High)
34 Queue_.prepend ({
f, dep ? OptionalTracker_t { dep } : OptionalTracker_t () });
36 Queue_.append ({
f, dep ? OptionalTracker_t { dep } : OptionalTracker_t () });
38 const auto diff = LastRequest_.msecsTo (now);
41 else if (Queue_.size () == 1)
42 ReqTimer_->start (Timeout_ - diff);
45 void QueueManager::Clear ()
50 void QueueManager::Pause ()
56 bool QueueManager::IsPaused ()
const
61 void QueueManager::Resume ()
64 ReqTimer_->start (Timeout_);
67 void QueueManager::exec ()
69 if (Queue_.isEmpty ())
75 const auto& pair = Queue_.takeFirst ();
76 if (pair.second && !*pair.second)
83 LastRequest_ = QDateTime::currentDateTime ();
85 if (!Queue_.isEmpty ())
86 ReqTimer_->start (Timeout_);