aboutsummaryrefslogtreecommitdiff
path: root/src/atomic_time_point.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/atomic_time_point.cc')
-rw-r--r--src/atomic_time_point.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/atomic_time_point.cc b/src/atomic_time_point.cc
new file mode 100644
index 0000000..4aaef7f
--- /dev/null
+++ b/src/atomic_time_point.cc
@@ -0,0 +1,27 @@
+#include "atomic_time_point.hh"
+
+#include <cassert>
+
+namespace low_latency {
+
+AtomicTimePoint::AtomicTimePoint() {}
+
+AtomicTimePoint::~AtomicTimePoint() {}
+
+bool AtomicTimePoint::has_value() const {
+ return this->count.load(std::memory_order_relaxed);
+}
+
+std::chrono::steady_clock::time_point AtomicTimePoint::get() const {
+ const auto result = this->count.load(std::memory_order_relaxed);
+ assert(result);
+ using namespace std::chrono;
+ return steady_clock::time_point{steady_clock::duration{result}};
+}
+
+void AtomicTimePoint::set(const std::chrono::steady_clock::time_point target) {
+ this->count.store(target.time_since_epoch().count(),
+ std::memory_order_relaxed);
+}
+
+} // namespace low_latency \ No newline at end of file