aboutsummaryrefslogtreecommitdiffstats
path: root/fastos
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-12-05 14:40:17 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-12-05 18:45:15 +0000
commit0a208d8a839f14164cd1561e38cb21a270c64380 (patch)
tree43b5185e77c237d322349edbee03cee30867e6a6 /fastos
parente4b328f4ee05b55131420df7f6b5a3685d5dffa5 (diff)
Replace UTCTimeStamp with std::chrono::system_clock::time_point
Diffstat (limited to 'fastos')
-rw-r--r--fastos/src/vespa/fastos/timestamp.cpp30
-rw-r--r--fastos/src/vespa/fastos/timestamp.h50
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: