#pragma once #include "devices.hpp" #include "card_reader.hpp" #include "oled_writer.hpp" #include "state.hpp" #include "loop.hpp" #include "reader_timer.hpp" #include "await_timer.hpp" #include "mysql_conn.hpp" #include "qr_encoder.hpp" #include "request_delegate.hpp" #include "access_controller.hpp" #include "request_timer.hpp" namespace acs { class factory { devices devices_; loop loop_; card_reader reader_; oled_writer writer_; state state_; reader_timer reader_timer_; await_timer await_timer_; mysql_conn mysql_conn_; qr_encoder qr_encoder_; request_delegate request_delegate_; access_controller access_controller_; request_timer request_timer_; static factory singleton_; explicit factory() = default; public: static factory* get() { return &singleton_; } devices* get_devices() { return &devices_; } loop* get_loop() { return &loop_; } card_reader* get_reader() { return &reader_; } oled_writer* get_writer() { return &writer_; } state* get_state() { return &state_; } reader_timer* get_reader_timer() { return &reader_timer_; } await_timer* get_await_timer() { return &await_timer_; } mysql_conn* get_mysql() { return &mysql_conn_; } qr_encoder* get_qr_encoder() { return &qr_encoder_; } request_delegate* get_request_delegate() { return &request_delegate_; } access_controller* get_controller() { return &access_controller_; } }; }