#include "reader_timer.hpp" #include "factory.hpp" #include #include namespace acs { void reader_timer::callback_handler(const boost::system::error_code& ec) { if (ec) exit(1); auto factory = factory::get(); auto state = factory->get_state(); if (state->get_status() == state::idle) { auto reader = factory->get_reader(); auto uid = reader->find_card(); if (uid) { std::cout << "UID: " << uid << std::endl; auto stu_num = reader->get_student_number(); if (conn_->get_stunum(uid) == stu_num) { controller_->authorized(); } else { controller_->forbidden(); } } } defer(); } void reader_timer::defer() { timer_.expires_from_now(boost::posix_time::millisec(200)); timer_.async_wait(boost::bind( &reader_timer::callback_handler, this, boost::asio::placeholders::error)); } reader_timer::reader_timer() : loop_( factory::get()->get_loop()), timer_( *loop_->get_io_service()), controller_( factory::get()->get_controller()), conn_(factory::get()->get_mysql()) { defer(); } }