4#include <QWaitCondition>
49 bool CheckRun(
const QDateTime& now);
54 bool CheckImmediate(
void);
55 bool CheckStartup(
void);
57 QString
GetTag(
void) {
return m_dbTag; }
61 QDateTime QueryLastRun(
void);
62 QDateTime QueryLastSuccess(
void);
65 virtual QDateTime UpdateLastRun(
const QDateTime& last,
bool successful=
true);
66 virtual void SetLastRun(
const QDateTime& last,
bool successful=
true);
68 virtual bool DoCheckRun(
const QDateTime& ) {
return false; }
69 virtual bool DoRun(
void) {
return false; }
76 bool m_finished {
false};
78 bool m_confirm {
false};
81 bool m_running {
false};
94 bool DoCheckRun(
const QDateTime& now)
override;
95 virtual bool InWindow(
const QDateTime& now);
96 virtual bool PastWindow(
const QDateTime& now);
97 QDateTime UpdateLastRun(
const QDateTime& last,
bool successful=
true)
override;
98 void SetLastRun(
const QDateTime& last,
bool successful=
true)
override;
99 virtual void SetWindow(
float min,
float max);
102 virtual void CalculateWindow(
void);
108 double m_currentProb { 1.0 };
118 std::chrono::hours minhour, std::chrono::hours maxhour,
121 virtual void SetHourWindow(std::chrono::hours min, std::chrono::hours max);
122 bool InWindow(
const QDateTime& now)
override;
125 void CalculateWindow(
void)
override;
137 void run(
void)
override;
161 void UnregisterTask(
const QString& tag);
163 void StartThread(
void);
166 void customEvent(QEvent *e)
override;
172 QTimer *m_timer {
nullptr };
Modified PeriodicHouseKeeperTask for tasks to be run once daily.
QPair< std::chrono::hours, std::chrono::hours > m_windowHour
Definition for a single task to be run by the HouseKeeper.
HouseKeeperScope GetScope(void)
bool IsRunning(void) const
~HouseKeeperTask() override=default
virtual void Terminate(void)
QDateTime GetLastRun(void)
QDateTime UpdateLastRun(bool successful=true)
virtual bool DoCheckRun(const QDateTime &)
bool IsFinished(void) const
HouseKeeperStartup m_startup
QDateTime GetLastSuccess(void)
bool ConfirmRun(void) const
void SetFinished(bool fini)
Manages registered HouseKeeperTasks and queues tasks for operation.
QMap< QString, HouseKeeperTask * > m_taskMap
QQueue< HouseKeeperTask * > m_taskQueue
QList< HouseKeepingThread * > m_threadList
Thread used to perform queued HouseKeeper tasks.
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
HouseKeepingThread(HouseKeeper *p)
~HouseKeepingThread() override=default
QWaitCondition m_waitCondition
This is a wrapper around QThread that does several additional things.
Modified HouseKeeperTask for tasks to be run at a regular interval.
QPair< float, float > m_windowPercent
std::chrono::seconds m_retry
std::chrono::seconds m_period
QPair< std::chrono::seconds, std::chrono::seconds > m_windowElapsed
General purpose reference counter.
@ kHKGlobal
task should only run once per cluster e.g.
@ kHKInst
task should run on every process e.g.
@ kHKLocal
task should only run once per machine e.g.
@ kHKRunImmediateOnStartup
task is run during HouseKeeper startup
@ kHKRunOnStartup
task is queued when HouseKeeper is started
@ kHKNormal
task is checked normally
QDateTime current(bool stripped)
Returns current Date and Time in UTC.