/* */ #ifndef _D_TIME_H_ #define _D_TIME_H_ #include "common.h" #include #include #include "a2time.h" namespace aria2 { class Time { private: struct timeval tv; struct timeval getCurrentTime() const; public: // The time value is initialized so that it represents the time at which // this object was created. Time(); Time(const Time& time); Time(time_t sec); Time(const struct timeval& tv); ~Time(); Time& operator=(const Time& time); bool operator<(const Time& time) const; // Makes this object's time value up to date. void reset(); bool elapsed(time_t sec) const; bool elapsedInMillis(int64_t millis) const; time_t difference() const; time_t difference(const struct timeval& now) const; int64_t differenceInMillis() const; int64_t differenceInMillis(const struct timeval& now) const; // Returns true if this object's time value is zero. bool isZero() const; int64_t getTimeInMicros() const; int64_t getTimeInMillis() const; // Returns this object's time value in seconds. time_t getTime() const; void setTimeInSec(time_t sec); bool isNewer(const Time& time) const; bool good() const; // Currently timezone is assumed as GMT. static Time parse(const std::string& datetime, const std::string& format); // Currently timezone is assumed to GMT. static Time parseRFC1123(const std::string& datetime); // Currently timezone is assumed to GMT. static Time parseRFC850(const std::string& datetime); // Currently timezone is assumed to GMT. // Basically the format is RFC850, but year part is 4digit, eg 2008 static Time parseRFC850Ext(const std::string& datetime); // Try parseRFC1123, parseRFC850Ex, parseRFC850 in that order and returns // the first "good" Time object returned by these functions. static Time parseHTTPDate(const std::string& datetime); }; } // namespace aria2 #endif // _D_TIME_H_