From 5e6108d3961cbc96e3cc8c515d57b2536ce53c0e Mon Sep 17 00:00:00 2001 From: Latent Prion Date: Sun, 12 Jul 2026 05:22:11 -0400 Subject: [PATCH] Migrate test timer awaiters from deadline_timer to steady_timer. Boost 1.90 marks deadline_timer deprecated; keep historical type aliases so existing spinscale tests need no renames. Co-authored-by: Cursor --- tests/support/timerAwaiters.h | 37 ++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/tests/support/timerAwaiters.h b/tests/support/timerAwaiters.h index 9b57b7f..8d167f5 100644 --- a/tests/support/timerAwaiters.h +++ b/tests/support/timerAwaiters.h @@ -1,6 +1,9 @@ #ifndef SPINSCALE_TEST_SUPPORT_TIMER_AWAITERS_H #define SPINSCALE_TEST_SUPPORT_TIMER_AWAITERS_H +#include + +#include #include #include #include @@ -9,15 +12,17 @@ #include #include -#include #include #include -#include +#include #include namespace sscl::tests { -using SharedDeadlineTimer = std::shared_ptr; +using SharedSteadyTimer = std::shared_ptr; + +/* Keep historical names as aliases so existing spinscale tests stay readable. */ +using SharedDeadlineTimer = SharedSteadyTimer; class CancelableDeadlineTimerRegistry { @@ -30,7 +35,7 @@ public: void registerTimer( int labelMilliseconds, - const SharedDeadlineTimer &timer) + const SharedSteadyTimer &timer) { std::lock_guard guard(mutex); timersByLabel[labelMilliseconds] = timer; @@ -43,15 +48,15 @@ public: if (iterator == timersByLabel.end()) { throw std::runtime_error( - "No cancelable deadline_timer registered for label " + "No cancelable steady_timer registered for label " + std::to_string(labelMilliseconds)); } - const SharedDeadlineTimer timer = iterator->second.lock(); + const SharedSteadyTimer timer = iterator->second.lock(); if (!timer) { throw std::runtime_error( - "Cancelable deadline_timer expired before cancel for label " + "Cancelable steady_timer expired before cancel for label " + std::to_string(labelMilliseconds)); } @@ -60,7 +65,7 @@ public: private: std::mutex mutex; - std::unordered_map> + std::unordered_map> timersByLabel; }; @@ -69,13 +74,13 @@ struct DeadlineTimerAwaiter DeadlineTimerAwaiter( boost::asio::io_context &ioContext, int delayMilliseconds) - : timer(std::make_shared(ioContext)) + : timer(std::make_shared(ioContext)) { start(delayMilliseconds); } DeadlineTimerAwaiter( - SharedDeadlineTimer sharedTimer, + SharedSteadyTimer sharedTimer, int delayMilliseconds) : timer(std::move(sharedTimer)) { @@ -97,8 +102,8 @@ struct DeadlineTimerAwaiter private: void start(int delayMilliseconds) { - timer->expires_from_now( - boost::posix_time::milliseconds(delayMilliseconds)); + timer->expires_after( + std::chrono::milliseconds(delayMilliseconds)); timer->async_wait( [this](const boost::system::error_code &errorCode) { @@ -110,7 +115,7 @@ private: }); } - SharedDeadlineTimer timer; + SharedSteadyTimer timer; boost::system::error_code completionErrorCode; bool waitCompleted = false; std::coroutine_handle<> resumeHandle; @@ -123,7 +128,7 @@ struct RegisteredDeadlineTimerAwaiter int delayMilliseconds, int registrationLabelMilliseconds, CancelableDeadlineTimerRegistry ®istry) - : timer(std::make_shared(ioContext)) + : timer(std::make_shared(ioContext)) { registry.registerTimer(registrationLabelMilliseconds, timer); waiter.emplace(timer, delayMilliseconds); @@ -138,7 +143,7 @@ struct RegisteredDeadlineTimerAwaiter boost::system::error_code await_resume() const noexcept { return waiter->await_resume(); } - SharedDeadlineTimer timer; + SharedSteadyTimer timer; std::optional waiter; }; @@ -147,7 +152,7 @@ inline void throwIfTimerWaitFailed( { if (waitError) { throw std::runtime_error( - "deadline_timer wait failed: " + waitError.message()); + "steady_timer wait failed: " + waitError.message()); } }