15 static const uint64_t ntpFracPerSecond = 4294967296;
19 NtpTime(uint64_t ms) : ms_(ms) {}
21 NtpTime(uint32_t seconds, uint32_t fractions) {
22 const double fracMs = fractions * 1000.0 /
static_cast<double>(ntpFracPerSecond);
23 ms_ =
static_cast<uint64_t
>(seconds) * 1000 +
static_cast<uint64_t
>(0.5 + fracMs);
26 operator uint64_t()
const {
return ms_; }
42 bool Valid()
const {
return ms_ != 0; }
50 return static_cast<uint32_t
>(ms_ / 1000);
59 return static_cast<uint32_t
>((ms_ % 1000) *
static_cast<double>(ntpFracPerSecond) / 1000.0);
78 inline bool operator==(
const NtpTime& n1,
const NtpTime& n2) {
79 return static_cast<uint64_t
>(n1) ==
static_cast<uint64_t
>(n2);
82 inline bool operator!=(
const NtpTime& n1,
const NtpTime& n2) {
return !(n1 == n2); }