21 # ifndef PASSIVETIMER_H_
22 # define PASSIVETIMER_H_
25 #include <condition_variable>
31 #include <Poco/Timespan.h>
37 typedef Poco::Timespan::TimeDiff timeout_t;
48 virtual bool checkTime()
const noexcept = 0;
49 virtual timeout_t
setTiming( timeout_t msec ) noexcept = 0;
50 virtual void reset() noexcept = 0;
52 virtual timeout_t
getCurrent()
const noexcept = 0;
55 timeout_t
getLeft( timeout_t timeout )
const noexcept;
60 virtual bool wait(timeout_t timeMS);
64 virtual void stop() noexcept;
69 static const timeout_t
WaitUpTime = std::numeric_limits<timeout_t>::max();
72 static const Poco::Timespan millisecToPoco( const timeout_t msec ) noexcept;
73 static const Poco::Timespan microsecToPoco( const timeout_t usec ) noexcept;
98 virtual bool checkTime()
const noexcept
override;
99 virtual timeout_t
setTiming( timeout_t msec ) noexcept
override;
100 virtual void reset() noexcept;
102 virtual timeout_t
getCurrent()
const noexcept
override;
107 virtual timeout_t
getInterval()
const noexcept
override;
112 timeout_t t_msec = { 0 };
119 std::chrono::high_resolution_clock::time_point
t_start;
143 virtual bool wait(timeout_t t_msec) noexcept
override;
144 virtual void terminate() noexcept
override;
149 std::atomic_bool terminated;
150 std::mutex m_working;
151 std::condition_variable cv_working;
156 # endif //PASSIVETIMER_H_