duration(时长)基类,实现了基础运算接口,duration=time1-time2。HivaDuration、WallDuration均继承BaseDuration,支持BaseTime的所有运算操作,SteadyTime也是使用WallDuration。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | namespace Hiva { /* Base class for Duration implementations. */ class BaseDuration { public: BaseDuration(); explicit BaseDuration(const double doubleSec); BaseDuration(const int32_t secVal, const int32_t nsecVal); virtual ~BaseDuration() = default; bool FromSec(const double doubleSec); bool FromNSec(const int64_t int64Nsec); double ToSec() const; int64_t ToNSec() const; bool IsZero() const; BaseDuration operator+(const BaseDuration &rhs) const; BaseDuration operator-(const BaseDuration &rhs) const; BaseDuration operator-() const; BaseDuration operator*(const double scale) const; BaseDuration &operator+=(const BaseDuration &rhs); BaseDuration &operator-=(const BaseDuration &rhs); BaseDuration &operator*=(const double scale); bool operator==(const BaseDuration &rhs) const; bool operator!=(const BaseDuration &rhs) const; bool operator>(const BaseDuration &rhs) const; bool operator<(const BaseDuration &rhs) const; bool operator>=(const BaseDuration &rhs) const; bool operator<=(const BaseDuration &rhs) const; int32_t sec; int32_t nsec; }; std::ostream &operator<<(std::ostream &outStream, const BaseDuration &rhs); } |
Hiva时长,继承BaseDuration,支持BaseDuration的所有运算操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 | namespace Hiva { /* Duration representation for use with the Time class. */ class HivaDuration : public BaseDuration { public: HivaDuration(); explicit HivaDuration(const double doubleSec); explicit HivaDuration(const BaseRate &rateVal); HivaDuration(const BaseDuration &durationVal); HivaDuration(const int32_t secVal, const int32_t nsecVal); ~HivaDuration() override = default; bool Sleep() const; }; } |
系统时长,继承BaseDuration,支持BaseDuration的所有运算操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 | namespace Hiva { /* Duration representation for use with the WallTime class. */ class WallDuration : public BaseDuration { public: WallDuration(); explicit WallDuration(const double doubleSec); explicit WallDuration(const BaseRate &rateVal); WallDuration(const BaseDuration &durationVal); WallDuration(const int32_t secVal, const int32_t nsecVal); ~WallDuration() override = default; bool Sleep() const; }; } |