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