From 1dfd65595979ceb53bb9629111eb758a49478f39 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Tue, 1 Oct 2013 14:01:43 -0700 Subject: [PATCH] Use RelativeTime from startup in DeadlineTimer --- modules/beast_core/thread/DeadlineTimer.cpp | 20 +++++++++----------- modules/beast_core/thread/DeadlineTimer.h | 12 +----------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/modules/beast_core/thread/DeadlineTimer.cpp b/modules/beast_core/thread/DeadlineTimer.cpp index 309fc476b..88bbc9e82 100644 --- a/modules/beast_core/thread/DeadlineTimer.cpp +++ b/modules/beast_core/thread/DeadlineTimer.cpp @@ -42,7 +42,8 @@ public: // Okay to call on an active timer. // However, an extra notification may still happen due to concurrency. // - void activate (DeadlineTimer& timer, double secondsRecurring, Time const& when) + void activate (DeadlineTimer& timer, + double secondsRecurring, RelativeTime const& when) { bassert (secondsRecurring >= 0); @@ -85,7 +86,8 @@ public: { while (! threadShouldExit ()) { - Time const currentTime = Time::getCurrentTime (); + RelativeTime const currentTime ( + RelativeTime::fromStartup ()); double seconds (0); DeadlineTimer* timer (nullptr); @@ -110,7 +112,7 @@ public: { // Yes so set the timer again. timer->m_notificationTime = - currentTime + RelativeTime (timer->m_secondsRecurring); + currentTime + timer->m_secondsRecurring; // Put it back into the list as active insertSorted (*timer); @@ -224,7 +226,8 @@ void DeadlineTimer::setExpiration (double secondsUntilDeadline) { bassert (secondsUntilDeadline != 0); - Time const when = Time::getCurrentTime () + RelativeTime (secondsUntilDeadline); + RelativeTime const when ( + RelativeTime::fromStartup() + secondsUntilDeadline); m_manager->activate (*this, 0, when); } @@ -233,13 +236,8 @@ void DeadlineTimer::setRecurringExpiration (double secondsUntilDeadline) { bassert (secondsUntilDeadline != 0); - Time const when = Time::getCurrentTime () + RelativeTime (secondsUntilDeadline); + RelativeTime const when ( + RelativeTime::fromStartup() + secondsUntilDeadline); m_manager->activate (*this, secondsUntilDeadline, when); } - -void DeadlineTimer::setExpirationTime (Time const& when) -{ - m_manager->activate (*this, 0, when); -} - diff --git a/modules/beast_core/thread/DeadlineTimer.h b/modules/beast_core/thread/DeadlineTimer.h index b5404c8fa..d87f0e4c9 100644 --- a/modules/beast_core/thread/DeadlineTimer.h +++ b/modules/beast_core/thread/DeadlineTimer.h @@ -52,7 +52,6 @@ public: */ void cancel (); - /** Set the timer to go off once in the future. If the timer is already active, this will reset it. @note If the timer is already active, the old one might go off @@ -73,15 +72,6 @@ public: */ void setRecurringExpiration (double secondsUntilDeadline); - /** Set the timer to go off at a specific time. - If the timer is already active, this will reset it. - @note If the timer is already active, the old one might go off - before this function returns. - @note If the time is in the past, the timer will go off - immediately. - */ - void setExpirationTime (Time const& when); - /** Equality comparison. Timers are equal if they have the same address. */ @@ -102,7 +92,7 @@ private: Listener* const m_listener; SharedPtr > m_manager; bool m_isActive; - Time m_notificationTime; + RelativeTime m_notificationTime; double m_secondsRecurring; // non zero if recurring };