From b8c9c6e3ff00fd66ff36883c9d094d6805c237e2 Mon Sep 17 00:00:00 2001 From: David Goffredo Date: Tue, 6 Dec 2022 12:43:14 -0500 Subject: [PATCH 1/2] duration<...>.count() can be various types --- src/datadog/span_data.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/datadog/span_data.cpp b/src/datadog/span_data.cpp index 52456cfa..bf83cc32 100644 --- a/src/datadog/span_data.cpp +++ b/src/datadog/span_data.cpp @@ -89,16 +89,16 @@ Expected msgpack_encode(std::string& destination, const SpanData& span) { }, "start", [&](auto& destination) { msgpack::pack_integer( - destination, std::chrono::duration_cast( + destination, std::uint64_t(std::chrono::duration_cast( span.start.wall.time_since_epoch()) - .count()); + .count())); return Expected{}; }, "duration", [&](auto& destination) { msgpack::pack_integer( destination, - std::chrono::duration_cast(span.duration) - .count()); + std::uint64_t(std::chrono::duration_cast(span.duration) + .count())); return Expected{}; }, "error", [&](auto& destination) { From 2e9841b0c923acd13d667f0beba397dfb96fefb1 Mon Sep 17 00:00:00 2001 From: David Goffredo Date: Tue, 6 Dec 2022 12:54:00 -0500 Subject: [PATCH 2/2] system_clock::duration and steady_clock::duration can be different types --- src/datadog/clock.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/datadog/clock.h b/src/datadog/clock.h index a2758a47..84ef44f2 100644 --- a/src/datadog/clock.h +++ b/src/datadog/clock.h @@ -39,11 +39,15 @@ inline Duration operator-(const TimePoint& after, const TimePoint& before) { } inline TimePoint operator-(const TimePoint& origin, Duration offset) { - return {origin.wall - offset, origin.tick - offset}; + return {origin.wall - + std::chrono::duration_cast( + offset), + origin.tick - offset}; } inline TimePoint& operator+=(TimePoint& self, Duration offset) { - self.wall += offset; + self.wall += + std::chrono::duration_cast(offset); self.tick += offset; return self; }