#pragma once #include #include #include #include #include #include #include namespace fs = std::filesystem; class FileMonitor { public: using FileCallback = std::function; FileMonitor(const std::string& root_path, FileCallback callback); ~FileMonitor(); void start(); void stop(); private: void monitor_thread(); void scan_directory(const fs::path& dir); std::string read_file_content(const fs::path& path); std::string root_path_; FileCallback callback_; std::thread monitor_thread_; std::atomic running_{false}; std::unordered_map file_times_; };