Hiva::Rate
- Hiva::BaseRate
The rate (period) base class is usually used for sleep in a loop so that a task is executed at a fixed period (the task execution duration is subtracted during the sleep time).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
namespace Hiva { /* Class to help run loops at a desired frequency */ class BaseRate { public: BaseRate(const double frequency); explicit BaseRate(const BaseDuration &durationVal); virtual ~BaseRate() = default; virtual bool Sleep() = 0; virtual void Reset() = 0; BaseDuration CycleTime() const; BaseDuration ExpectedCycleTime() const; protected: BaseDuration expectedCycleTime_; BaseDuration actualCycleTime_; }; }
- Hiva::HivaRate
It inherits BaseRate and performs sleep wait based on HivaTime.
1 2 3 4 5 6 7 8 9 10 11 12 13
namespace Hiva { /* Class to help run loops at a desired frequency */ class HivaRate : public BaseRate { public: HivaRate(const double frequency); explicit HivaRate(const BaseDuration &durationVal); ~HivaRate() override = default; bool Sleep() override; void Reset() override; private: HivaTime start_; }; }
- Hiva::WallRate
It inherits BaseRate and performs sleep wait based on WallTime.
1 2 3 4 5 6 7 8 9 10 11 12 13
namespace Hiva { /* Class to help run loops at a desired frequency */ class WallRate : public BaseRate { public: WallRate(const double frequency); explicit WallRate(const BaseDuration &durationVal); ~WallRate() override = default; bool Sleep() override; void Reset() override; private: WallTime start_; }; }
Parent topic: OpenHiva FAQs