diff options
Diffstat (limited to 'lib/timestamp.cpp')
-rw-r--r-- | lib/timestamp.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/timestamp.cpp b/lib/timestamp.cpp index 112a7d1d..33e01823 100644 --- a/lib/timestamp.cpp +++ b/lib/timestamp.cpp @@ -6,9 +6,49 @@ double amb::currentTime() { + return Timestamp::instance()->currentTime(); +} + +amb::Timestamp* amb::Timestamp::mInstance = nullptr; + +amb::Timestamp::Timestamp() +{ + auto tm = std::chrono::system_clock::now(); + auto tm2 = std::chrono::steady_clock::now(); + + double eTime = (std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00); + double sTime = (std::chrono::duration_cast<std::chrono::milliseconds>(tm2.time_since_epoch()).count() / 1000.00); + + startTimeEpoch = eTime - sTime; +} + +double amb::Timestamp::currentTime() +{ auto tm = std::chrono::steady_clock::now(); double time = std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00; return time; } + +double amb::Timestamp::epochTime(double time) +{ + return startTimeEpoch + time; +} + +double amb::Timestamp::epochTime() +{ + auto tm = std::chrono::system_clock::now(); + + double time = std::chrono::duration_cast<std::chrono::milliseconds>(tm.time_since_epoch()).count() / 1000.00; + + return time; +} + +amb::Timestamp* amb::Timestamp::instance() +{ + if(!mInstance) + mInstance = new Timestamp(); + + return mInstance; +} |