#ifndef FORTUNA_SEED_FILE_MANAGER_H #define FORTUNA_SEED_FILE_MANAGER_H #include "accumulator.h" #include "do_task.h" #include #include namespace fortuna { class SeedFileManager { public: struct conf { // std::chrono::minutes write_interval{10}; // 10 minutes (as the standard recommends) is a lot, go with 120s std::chrono::seconds write_interval{120}; std::string seed_f_path{"./.fortuna.seed"}; std::size_t seed_f_length{64}; conf(){}; }; static auto is_job_running() -> bool; auto do_stuff() -> void; explicit SeedFileManager( const fortuna::accumulator::Accumulator& accumulator) noexcept; ~SeedFileManager() noexcept; protected: static auto set_job_running(bool) -> void; private: const conf config; static constinit bool RUNNING; DoTask do_task; fortuna::accumulator::Accumulator accumulator; auto seed_file_exists() const -> bool; auto write_seed_file() -> void; auto update_seed_file() -> void; }; // class SeedFileManager } // namespace fortuna #endif // FORTUNA_SEED_FILE_MANAGER_H