From 4465d2f9677a641a38d2f7d2e1b01caae875aced Mon Sep 17 00:00:00 2001 From: David Hampton Date: Thu, 17 Dec 2020 22:03:51 -0500 Subject: [PATCH] Update housekeeper to std::chrono 2. --- mythtv/libs/libmythbase/housekeeper.cpp | 28 ++++++++++++------------- mythtv/libs/libmythbase/housekeeper.h | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/mythtv/libs/libmythbase/housekeeper.cpp b/mythtv/libs/libmythbase/housekeeper.cpp index 9f31058088d..436cd8c967f 100644 --- a/mythtv/libs/libmythbase/housekeeper.cpp +++ b/mythtv/libs/libmythbase/housekeeper.cpp @@ -342,8 +342,8 @@ void PeriodicHouseKeeperTask::CalculateWindow(void) period = m_retry; } - m_windowElapsed.first = (uint32_t)((float)period.count() * m_windowPercent.first); - m_windowElapsed.second = (uint32_t)((float)period.count() * m_windowPercent.second); + m_windowElapsed.first = chronomult(period, m_windowPercent.first); + m_windowElapsed.second = chronomult(period, m_windowPercent.second); } void PeriodicHouseKeeperTask::SetWindow(float min, float max) @@ -371,9 +371,9 @@ void PeriodicHouseKeeperTask::SetLastRun(const QDateTime& last, bool successful) bool PeriodicHouseKeeperTask::DoCheckRun(const QDateTime& now) { - int elapsed = GetLastRun().secsTo(now); + auto elapsed = std::chrono::seconds(GetLastRun().secsTo(now)); - if (elapsed < 0) + if (elapsed < 0s) // something bad has happened. let's just move along return false; @@ -386,8 +386,8 @@ bool PeriodicHouseKeeperTask::DoCheckRun(const QDateTime& now) // calculate probability that task should not have yet run // it's backwards, but it makes the math simplier - float prob = 1.0F - ((float)(elapsed - m_windowElapsed.first) / - (float)(m_windowElapsed.second - m_windowElapsed.first)); + float prob = 1.0F - (duration_cast(elapsed - m_windowElapsed.first) / + duration_cast(m_windowElapsed.second - m_windowElapsed.first)); if (m_currentProb < prob) // more bad stuff return false; @@ -415,9 +415,9 @@ bool PeriodicHouseKeeperTask::DoCheckRun(const QDateTime& now) bool PeriodicHouseKeeperTask::InWindow(const QDateTime& now) { - int elapsed = GetLastRun().secsTo(now); + auto elapsed = std::chrono::seconds(GetLastRun().secsTo(now)); - if (elapsed < 0) + if (elapsed < 0s) // something bad has happened. let's just move along return false; @@ -427,7 +427,7 @@ bool PeriodicHouseKeeperTask::InWindow(const QDateTime& now) bool PeriodicHouseKeeperTask::PastWindow(const QDateTime &now) { - return GetLastRun().secsTo(now) > m_windowElapsed.second; + return std::chrono::seconds(GetLastRun().secsTo(now)) > m_windowElapsed.second; } /** \class DailyHouseKeeperTask @@ -466,17 +466,17 @@ void DailyHouseKeeperTask::CalculateWindow(void) QDate date = GetLastRun().addDays(1).date(); QDateTime tmp = QDateTime(date, QTime(m_windowHour.first.count(), 0)); - if (GetLastRun().addSecs(m_windowElapsed.first) < tmp) - m_windowElapsed.first = GetLastRun().secsTo(tmp); + if (GetLastRun().addSecs(m_windowElapsed.first.count()) < tmp) + m_windowElapsed.first = std::chrono::seconds(GetLastRun().secsTo(tmp)); tmp = QDateTime(date, QTime(m_windowHour.second.count(), 30)); // we want to make sure this gets run before the end of the day // so add a 30 minute buffer prior to the end of the window - if (GetLastRun().addSecs(m_windowElapsed.second) > tmp) - m_windowElapsed.second = GetLastRun().secsTo(tmp); + if (GetLastRun().addSecs(m_windowElapsed.second.count()) > tmp) + m_windowElapsed.second = std::chrono::seconds(GetLastRun().secsTo(tmp)); LOG(VB_GENERAL, LOG_DEBUG, QString("%1 Run window between %2 - %3.") - .arg(GetTag()).arg(m_windowElapsed.first).arg(m_windowElapsed.second)); + .arg(GetTag()).arg(m_windowElapsed.first.count()).arg(m_windowElapsed.second.count())); } void DailyHouseKeeperTask::SetHourWindow(std::chrono::hours min, std::chrono::hours max) diff --git a/mythtv/libs/libmythbase/housekeeper.h b/mythtv/libs/libmythbase/housekeeper.h index d8c4c08d53a..2f5ee6d48bb 100644 --- a/mythtv/libs/libmythbase/housekeeper.h +++ b/mythtv/libs/libmythbase/housekeeper.h @@ -101,7 +101,7 @@ class MBASE_PUBLIC PeriodicHouseKeeperTask : public HouseKeeperTask std::chrono::seconds m_period; std::chrono::seconds m_retry; QPair m_windowPercent; - QPair m_windowElapsed; + QPair m_windowElapsed; float m_currentProb; };