Mercurial > minori
view include/core/filesystem.h @ 382:0265e125f680 default tip
filesystem: implement filesystem watcher
I also ported the library code to use it as well. Once we implement
proper directory watching on Windows (and maybe others) this will
be fairly useful :)
| author | Paper <paper@tflc.us> |
|---|---|
| date | Thu, 06 Nov 2025 03:16:55 -0500 |
| parents | 5eaafed6c10b |
| children |
line wrap: on
line source
#ifndef MINORI_CORE_FILESYSTEM_H_ #define MINORI_CORE_FILESYSTEM_H_ #include <filesystem> #include <string> #include <functional> namespace Filesystem { void CreateDirectories(const std::filesystem::path &path); std::filesystem::path GetDotPath(); // %APPDATA%/minori/, ~/Library/Application Support/minori/, ~/.config/minori/... std::filesystem::path GetConfigPath(); // (dotpath)/config.json std::filesystem::path GetAnimeDBPath(); // (dotpath)/anime/db.json std::filesystem::path GetTorrentsPath(); // (dotpath)/torrents/... std::filesystem::path GetAnimePostersPath(); // (dotpath)/anime/posters/ /* ------------------------------------------------------------------------ */ /* Filesystem watcher interface. This is implemented differently on * different platforms :) */ struct IWatcher { enum Event { /* File/directory 'path' was created */ Created, /* File/directory 'path' was deleted */ Deleted, }; using EventHandler = std::function<void(void *opaque, const std::filesystem::path &path, Event event)>; virtual ~IWatcher() = default; virtual void Process() = 0; }; /* Constructor functions. Yes, I'm doing this the C way :) */ IWatcher *GetRecursiveFilesystemWatcher(void *opaque, const std::filesystem::path &path, IWatcher::EventHandler handler); IWatcher *GetFilesystemWatcher(void *opaque, const std::filesystem::path &path, IWatcher::EventHandler handler); } // namespace Filesystem #endif // MINORI_CORE_FILESYSTEM_H_
