xref: /openbmc/telemetry/src/utils/detached_timer.hpp (revision 5ade2b1d0ccb71a3de23396dea77c375bedc0362)
1 #pragma once
2 
3 #include <boost/asio/io_context.hpp>
4 #include <boost/asio/steady_timer.hpp>
5 
6 #include <chrono>
7 
8 namespace utils
9 {
10 
11 template <class F>
12 void makeDetachedTimer(boost::asio::io_context& ioc,
13                        std::chrono::milliseconds delay, F&& fun)
14 {
15     auto timer = std::make_unique<boost::asio::steady_timer>(ioc);
16     timer->expires_after(delay);
17     timer->async_wait([timer = std::move(timer),
18                        fun = std::move(fun)](boost::system::error_code ec) {
19         if (ec)
20         {
21             return;
22         }
23         fun();
24     });
25 }
26 
27 } // namespace utils
28