/* */ #ifndef D_TIMER_A2_H #define D_TIMER_A2_H #include "common.h" #include "a2time.h" namespace aria2 { class Timer { private: timeval tv_; time_t difference(const struct timeval& tv) const; int64_t differenceInMillis(const struct timeval& tv) const; public: // The time value is initialized so that it represents the time at which // this object was created. Timer(); Timer(const Timer& time); Timer(time_t sec); Timer(const struct timeval& tv); Timer& operator=(const Timer& timer); bool operator<(const Timer& timer) const; bool operator<=(const Timer& timer) const; bool operator>(const Timer& timer) const; void reset(); void reset(time_t sec); bool elapsed(time_t sec) const; bool elapsedInMillis(int64_t millis) const; time_t difference() const; time_t difference(const Timer& timer) const { return difference(timer.tv_); } int64_t differenceInMillis() const; int64_t differenceInMillis(const Timer& timer) const { return differenceInMillis(timer.tv_); } // Returns true if this object's time value is zero. bool isZero() const; void advance(time_t sec); // Returns this object's time value in seconds. time_t getTime() const; int64_t getTimeInMicros() const; int64_t getTimeInMillis() const; // Returns true if this Timer is not affected by system time change. // Otherwise return false. static bool monotonicClock(); }; } // namespace aria2 #endif // D_TIMER_A2_H