diff options
Diffstat (limited to 'zencore/compactbinary.cpp')
| -rw-r--r-- | zencore/compactbinary.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/zencore/compactbinary.cpp b/zencore/compactbinary.cpp index cb628af4b..ffc1da10c 100644 --- a/zencore/compactbinary.cpp +++ b/zencore/compactbinary.cpp @@ -60,22 +60,27 @@ GetPlatformToDateTimeBiasInSeconds() return uint64_t(double(PlatformEpochYear - DateTimeEpochYear) * 365.2425) * 86400; } -DateTime -DateTime::Now() +uint64_t +DateTime::NowTicks() { - static const uint64_t EpochBias = GetPlatformToDateTimeBiasInSeconds(); - static const uint64_t SecsTo100nsTicks = int64_t(10e9 / 100); + static constexpr uint64_t EpochBias = GetPlatformToDateTimeBiasInSeconds(); #if ZEN_PLATFORM_WINDOWS FILETIME SysTime; - GetSystemTimeAsFileTime(&SysTime); - return DateTime{(EpochBias * SecsTo100nsTicks) + (uint64_t(SysTime.dwHighDateTime) << 32) | SysTime.dwLowDateTime}; + GetSystemTimePreciseAsFileTime(&SysTime); + return (EpochBias * TimeSpan::TicksPerSecond) + ((uint64_t(SysTime.dwHighDateTime) << 32) | SysTime.dwLowDateTime); #else int64_t SecondsSinceUnixEpoch = time(nullptr); - return DateTime{(EpochBias + SecondsSinceUnixEpoch) * SecsTo100nsTicks}; + return (EpochBias + SecondsSinceUnixEpoch) * TimeSpan::TicksPerSecond; #endif } +DateTime +DateTime::Now() +{ + return DateTime{NowTicks()}; +} + void DateTime::Set(int Year, int Month, int Day, int Hour, int Minute, int Second, int MilliSecond) { @@ -1392,7 +1397,7 @@ LoadCompactBinaryObject(IoBuffer&& Payload) } CbObject -LoadCompactBinaryObject(IoBuffer& Payload) +LoadCompactBinaryObject(const IoBuffer& Payload) { return CbObject{SharedBuffer(Payload)}; } @@ -1404,7 +1409,7 @@ LoadCompactBinaryObject(CompressedBuffer&& Payload) } CbObject -LoadCompactBinaryObject(CompressedBuffer& Payload) +LoadCompactBinaryObject(const CompressedBuffer& Payload) { return CbObject{SharedBuffer(Payload.DecompressToComposite().Flatten())}; } |