Files
scylladb/gc_clock.hh
2015-04-17 15:08:06 +02:00

30 lines
757 B
C++

/*
* Copyright 2015 Cloudius Systems
*/
#pragma once
#include <chrono>
#include <experimental/optional>
// FIXME: wraps around in 2038
class gc_clock {
public:
using base = std::chrono::system_clock;
using rep = int32_t;
using period = std::ratio<1, 1>; // seconds
using duration = std::chrono::duration<rep, period>;
using time_point = std::chrono::time_point<gc_clock, duration>;
static time_point now() {
return time_point(std::chrono::duration_cast<duration>(base::now().time_since_epoch()));
}
};
using ttl_opt = std::experimental::optional<gc_clock::time_point>;
// 20 years in seconds
static constexpr gc_clock::time_point max_ttl = gc_clock::time_point{
gc_clock::duration{20 * 365 * 24 * 60 * 60}};