22 #include <condition_variable> 44 start(millis, callback);
56 void start(
unsigned int millis, T callback) {
57 std::unique_lock<std::mutex> lock(m_stopConditionMutex);
60 m_callback = callback;
61 m_timeout = std::chrono::milliseconds(millis);
62 m_lastRefreshTime = std::chrono::system_clock::now();
63 if (m_thread.joinable()) m_thread.join();
65 m_thread = std::thread(&WatchDog::watch,
this);
74 std::unique_lock<std::mutex> lock(m_stopConditionMutex);
77 m_stopConditionVariable.notify_all();
80 if (m_thread.joinable())
88 std::unique_lock<std::mutex> lock(m_stopConditionMutex);
89 m_lastRefreshTime = std::chrono::system_clock::now();
96 std::unique_lock<std::mutex> lock(m_stopConditionMutex);
97 while (m_running && ((std::chrono::system_clock::now() - m_lastRefreshTime)) < m_timeout)
98 m_stopConditionVariable.wait_for(lock, m_timeout);
101 std::unique_lock<std::mutex> lock(m_stopConditionMutex);
109 bool m_running =
false;
110 std::thread m_thread;
112 std::mutex m_stopConditionMutex;
113 std::condition_variable m_stopConditionVariable;
114 std::chrono::system_clock::time_point m_lastRefreshTime;
115 std::chrono::milliseconds m_timeout;
WatchDog()
Definition: WatchDog.h:35
void stop()
Stop watching thread.
Definition: WatchDog.h:72
void pet()
Pet watch dog.
Definition: WatchDog.h:87
WatchDog(unsigned int millis, T callback)
parametric constructor
Definition: WatchDog.h:43
virtual ~WatchDog()
Definition: WatchDog.h:47
Provides watch dog feature.
Definition: WatchDog.h:32
void start(unsigned int millis, T callback)
Start watching thread.
Definition: WatchDog.h:56