From 743e66a3469af27819bcd0e3e1694d2a4c523c6b Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sat, 5 Mar 2016 23:44:31 +0100 Subject: Use std::chrono in ClockTAI --- src/ClockTAI.cpp | 23 ++++------------------- src/ClockTAI.h | 7 ++++--- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/ClockTAI.cpp b/src/ClockTAI.cpp index c7b045b..5334bbd 100644 --- a/src/ClockTAI.cpp +++ b/src/ClockTAI.cpp @@ -52,22 +52,14 @@ ClockTAI::ClockTAI() { m_offset = 0; - m_bulletin_download_time.tv_nsec = 0; - m_bulletin_download_time.tv_sec = 0; } int ClockTAI::get_offset() { -#if ENABLE_OUTPUT_EDI - struct timespec time_now; + auto time_now = std::chrono::system_clock::now(); - int err = clock_gettime(CLOCK_REALTIME, &time_now); - if (err) { - throw std::runtime_error("ClockTAI::get_offset() clock_gettime failed"); - } - - if (time_now.tv_sec - m_bulletin_download_time.tv_sec > - 3600 * 24 * 31) { + if (time_now - m_bulletin_download_time > + std::chrono::seconds(3600 * 24 * 31)) { // Refresh if it's older than one month. Leap seconds are // announced several months in advance @@ -84,7 +76,6 @@ int ClockTAI::get_offset() etiLog.level(info) << "Updated TAI-UTC offset to " << m_offset << "s."; } -#endif // ENABLE_OUTPUT_EDI return m_offset; } @@ -183,11 +174,7 @@ int ClockTAI::download_tai_utc_bulletin(const char* url) } else { // Save the download time of the bulletin - int err = clock_gettime(CLOCK_REALTIME, &m_bulletin_download_time); - if (err) { - perror("REALTIME clock_gettime failed"); - r = 1; - } + m_bulletin_download_time = std::chrono::system_clock::now(); } /* always cleanup */ @@ -230,5 +217,3 @@ void debug_tai_clk() } #endif - - diff --git a/src/ClockTAI.h b/src/ClockTAI.h index 027e6db..499fa56 100644 --- a/src/ClockTAI.h +++ b/src/ClockTAI.h @@ -37,9 +37,10 @@ #include #include #include -#include +#include -// EDI needs to know UTC-TAI, but doesn't need the CLOCK_TAI to be set +// EDI needs to know UTC-TAI, but doesn't need the CLOCK_TAI to be set. +// We can keep this code, maybe for future use #define SUPPORT_SETTING_CLOCK_TAI 0 /* Loads, parses and represents TAI-UTC offset information from the USNO bulletin */ @@ -65,7 +66,7 @@ class ClockTAI { int m_offset; std::stringstream m_bulletin; - struct timespec m_bulletin_download_time; + std::chrono::system_clock::time_point m_bulletin_download_time; // Load bulletin into m_bulletin, return 0 on success int download_tai_utc_bulletin(const char* url); -- cgit v1.2.3