diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-12-05 14:40:17 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-12-05 18:45:15 +0000 |
commit | 0a208d8a839f14164cd1561e38cb21a270c64380 (patch) | |
tree | 43b5185e77c237d322349edbee03cee30867e6a6 /fastos/src | |
parent | e4b328f4ee05b55131420df7f6b5a3685d5dffa5 (diff) |
Replace UTCTimeStamp with std::chrono::system_clock::time_point
Diffstat (limited to 'fastos/src')
-rw-r--r-- | fastos/src/vespa/fastos/timestamp.cpp | 30 | ||||
-rw-r--r-- | fastos/src/vespa/fastos/timestamp.h | 50 |
2 files changed, 17 insertions, 63 deletions
diff --git a/fastos/src/vespa/fastos/timestamp.cpp b/fastos/src/vespa/fastos/timestamp.cpp index 977af69049c..bd08eced395 100644 --- a/fastos/src/vespa/fastos/timestamp.cpp +++ b/fastos/src/vespa/fastos/timestamp.cpp @@ -4,7 +4,10 @@ #include <thread> #include <sys/time.h> -using namespace std::chrono; +using std::chrono::system_clock; +using std::chrono::steady_clock; +using std::chrono::nanoseconds; +using std::chrono::duration_cast; namespace fastos { @@ -16,6 +19,8 @@ const TimeStamp::TimeT TimeStamp::MS; const TimeStamp::TimeT TimeStamp::SEC; const TimeStamp::TimeT TimeStamp::MINUTE; +using seconds = std::chrono::duration<double>; + std::string TimeStamp::asString(double timeInSeconds) { @@ -32,15 +37,9 @@ TimeStamp::asString(double timeInSeconds) return std::string(retval); } -UTCTimeStamp -ClockSystem::now() -{ - struct timeval timeNow; - gettimeofday(&timeNow, nullptr); - int64_t ns = timeNow.tv_sec; - ns *= TimeStamp::NANO; - ns += timeNow.tv_usec*1000; - return UTCTimeStamp(ns); +std::string +TimeStamp::asString(std::chrono::system_clock::time_point ns) { + return asString(seconds(ns.time_since_epoch()).count()); } time_t @@ -58,8 +57,8 @@ steady_now() { } std::ostream & -operator << (std::ostream & os, UTCTimeStamp ts) { - return os << ts.toString(); +operator << (std::ostream & os, system_clock::time_point ts) { + return os << TimeStamp::asString(seconds(ts.time_since_epoch()).count()); } std::ostream & @@ -75,13 +74,12 @@ ClockSteady::now() const SteadyTimeStamp SteadyTimeStamp::ZERO; const SteadyTimeStamp SteadyTimeStamp::FUTURE(TimeStamp::FUTURE); -const UTCTimeStamp UTCTimeStamp::ZERO; -UTCTimeStamp +system_clock::time_point SteadyTimeStamp::toUTC() const { - UTCTimeStamp nowUtc = ClockSystem::now(); + system_clock::time_point nowUtc = system_clock::now(); SteadyTimeStamp nowSteady = ClockSteady::now(); - return nowUtc - (nowSteady - *this); + return system_clock::time_point (std::chrono::nanoseconds(nowUtc.time_since_epoch().count() - (nowSteady - *this).ns())); } StopWatch::StopWatch() diff --git a/fastos/src/vespa/fastos/timestamp.h b/fastos/src/vespa/fastos/timestamp.h index f1a40272938..842a71edfbe 100644 --- a/fastos/src/vespa/fastos/timestamp.h +++ b/fastos/src/vespa/fastos/timestamp.h @@ -48,6 +48,7 @@ public: double sec() const { return val()/1000000000.0; } std::string toString() const { return asString(sec()); } static std::string asString(double timeInSeconds); + static std::string asString(std::chrono::system_clock::time_point duration); static TimeStamp fromSec(double sec) { return Seconds(sec); } private: TimeT _time; @@ -58,45 +59,6 @@ inline TimeStamp operator -(TimeStamp a, TimeStamp b) { return TimeStamp(a.val() inline TimeStamp operator *(long a, TimeStamp b) { return TimeStamp(a * b.val()); } inline TimeStamp operator *(double a, TimeStamp b) { return TimeStamp(static_cast<int64_t>(a * b.val())); } -class UTCTimeStamp { -public: - static const UTCTimeStamp ZERO; - UTCTimeStamp() : _timeStamp() { } - explicit UTCTimeStamp(TimeStamp timeStamp) : _timeStamp(timeStamp) { } - - friend TimeStamp operator -(UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp - b._timeStamp; - } - friend UTCTimeStamp operator -(UTCTimeStamp a, TimeStamp b) { - return UTCTimeStamp(a._timeStamp - b); - } - friend UTCTimeStamp operator +(UTCTimeStamp a, TimeStamp b) { - return UTCTimeStamp(a._timeStamp + b); - } - friend bool operator != (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp != b._timeStamp; - } - friend bool operator == (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp == b._timeStamp; - } - friend bool operator < (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp < b._timeStamp; - } - friend bool operator <= (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp <= b._timeStamp; - } - friend bool operator > (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp > b._timeStamp; - } - friend bool operator >= (UTCTimeStamp a, UTCTimeStamp b) { - return a._timeStamp >= b._timeStamp; - } - TimeStamp time_since_epoch() const { return _timeStamp - ZERO._timeStamp; } - std::string toString() const { return _timeStamp.toString(); }; -private: - TimeStamp _timeStamp; -}; - class SteadyTimeStamp { public: static const SteadyTimeStamp ZERO; @@ -125,21 +87,15 @@ public: friend bool operator > (SteadyTimeStamp a, SteadyTimeStamp b) { return a._timeStamp > b._timeStamp; } - UTCTimeStamp toUTC() const; + std::chrono::system_clock::time_point toUTC() const; std::string toString() const { return _timeStamp.toString(); }; private: TimeStamp _timeStamp; }; -std::ostream & operator << (std::ostream & os, UTCTimeStamp ts); +std::ostream & operator << (std::ostream & os, std::chrono::system_clock::time_point ts); std::ostream & operator << (std::ostream & os, SteadyTimeStamp ts); -class ClockSystem -{ -public: - static UTCTimeStamp now(); -}; - class ClockSteady { public: |