1*554fad0bSBrandon Kim #include <boost/asio.hpp>
2*554fad0bSBrandon Kim 
3*554fad0bSBrandon Kim #include <chrono>
4*554fad0bSBrandon Kim #include <functional>
5*554fad0bSBrandon Kim 
6*554fad0bSBrandon Kim namespace
7*554fad0bSBrandon Kim {
8*554fad0bSBrandon Kim // Set the read loop interval to be 1 second for now
9*554fad0bSBrandon Kim // TODO: Make this a configuration option
10*554fad0bSBrandon Kim static constexpr std::chrono::seconds readIntervalSec(1);
11*554fad0bSBrandon Kim } // namespace
12*554fad0bSBrandon Kim 
13*554fad0bSBrandon Kim // boost::async_wait requires `const boost::system::error_code&` parameter
14*554fad0bSBrandon Kim void readLoop(boost::asio::steady_timer* t, const boost::system::error_code&)
15*554fad0bSBrandon Kim {
16*554fad0bSBrandon Kim     /* This will run every readIntervalSec second for now */
17*554fad0bSBrandon Kim     t->expires_from_now(readIntervalSec);
18*554fad0bSBrandon Kim     t->async_wait(std::bind_front(readLoop, t));
19*554fad0bSBrandon Kim }
20*554fad0bSBrandon Kim 
21*554fad0bSBrandon Kim int main()
22*554fad0bSBrandon Kim {
23*554fad0bSBrandon Kim     boost::asio::io_context io;
24*554fad0bSBrandon Kim     boost::asio::steady_timer t(io, readIntervalSec);
25*554fad0bSBrandon Kim 
26*554fad0bSBrandon Kim     t.async_wait(std::bind_front(readLoop, &t));
27*554fad0bSBrandon Kim 
28*554fad0bSBrandon Kim     io.run();
29*554fad0bSBrandon Kim 
30*554fad0bSBrandon Kim     return 0;
31*554fad0bSBrandon Kim }
32