filesystem support More...
Namespaces | |
| namespace | blocking |
| blocking function and classes to work with filesystem | |
Classes | |
| struct | FileInfoWithData |
| Struct file with load data. More... | |
| class | FsCacheClient |
Class client for storing files in memory Usually retrieved from components::FsCache More... | |
| class | TempFile |
A unique temporary file. The file is deleted when the TempFile object is destroyed. More... | |
Typedefs | |
| using | FileInfoWithDataConstPtr = std::shared_ptr< const FileInfoWithData > |
| using | FileInfoWithDataMap = std::unordered_map< std::string, FileInfoWithDataConstPtr > |
Enumerations | |
| enum class | SettingsReadFile { kNone = 0 , kSkipHidden = 1 << 0 } |
Functions | |
| std::string | GetLexicallyRelative (std::string_view path, std::string_view dir) |
| Returns relative path from full path. | |
| FileInfoWithDataMap | ReadRecursiveFilesInfoWithData (engine::TaskProcessor &async_tp, const std::string &path, utils::Flags< SettingsReadFile > flags={SettingsReadFile::kSkipHidden}) |
| Returns files from recursively traversed directory. | |
| std::string | ReadFileContents (engine::TaskProcessor &async_tp, const std::string &path) |
| Reads file contents asynchronously. | |
| bool | FileExists (engine::TaskProcessor &async_tp, const std::string &path) |
| Checks whether the file exists asynchronosly. | |
| void | RewriteFileContents (engine::TaskProcessor &async_tp, const std::string &path, std::string_view contents) |
Rewrite file contents asynchronously It doesn't provide strict atomic guarantees. If you need them, use fs::RewriteFileContentsAtomically. | |
| void | Rename (engine::TaskProcessor &async_tp, const std::string &source, const std::string &destination) |
| Renames existing file. | |
| void | RewriteFileContentsAtomically (engine::TaskProcessor &async_tp, const std::string &path, std::string_view contents, boost::filesystem::perms perms) |
| Rewrite file contents atomically Write contents to temporary file in the same directory, then atomically replaces the destination file with the temporary file. Effectively does open()+write()+sync()+close()+rename()+sync(directory). It does both sync(2) for file and on the directory, so after successful return the file must persist on the filesystem. | |
| void | Chmod (engine::TaskProcessor &async_tp, const std::string &path, boost::filesystem::perms perms) |
| Change file mode. | |
| bool | RemoveSingleFile (engine::TaskProcessor &async_tp, const std::string &path) |
| Remove existing file. | |
| void | CreateDirectories (engine::TaskProcessor &async_tp, std::string_view path, boost::filesystem::perms perms) |
| Create directory and all necessary parent elements. Condition when path already exists and is a directory treated as "success" and no exception is thrown. | |
| void | CreateDirectories (engine::TaskProcessor &async_tp, std::string_view path) |
filesystem support
| using fs::FileInfoWithDataConstPtr = typedef std::shared_ptr<const FileInfoWithData> |
| using fs::FileInfoWithDataMap = typedef std::unordered_map<std::string, FileInfoWithDataConstPtr> |
|
strong |
| void fs::Chmod | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path, | ||
| boost::filesystem::perms | perms | ||
| ) |
Change file mode.
| async_tp | TaskProcessor for synchronous waiting |
| path | file path to chmod |
| perms | new file permissions |
| std::runtime_error |
| void fs::CreateDirectories | ( | engine::TaskProcessor & | async_tp, |
| std::string_view | path, | ||
| boost::filesystem::perms | perms | ||
| ) |
Create directory and all necessary parent elements. Condition when path already exists and is a directory treated as "success" and no exception is thrown.
| async_tp | TaskProcessor for synchronous waiting |
| path | directory to create |
| std::runtime_error | if there was an error while creating directories |
| bool fs::FileExists | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path | ||
| ) |
Checks whether the file exists asynchronosly.
| async_tp | TaskProcessor for synchronous waiting |
| path | file path to check |
| std::runtime_error | if something goes wrong (e.g. out of file descriptors) |
| std::string fs::GetLexicallyRelative | ( | std::string_view | path, |
| std::string_view | dir | ||
| ) |
Returns relative path from full path.
| path | full path, must start with dir |
| dir | directory path to get relative path |
| std::string fs::ReadFileContents | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path | ||
| ) |
Reads file contents asynchronously.
| async_tp | TaskProcessor for synchronous waiting |
| path | file to open |
| std::runtime_error | if read fails for any reason (e.g. no such file, read error, etc.), |
| FileInfoWithDataMap fs::ReadRecursiveFilesInfoWithData | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path, | ||
| utils::Flags< SettingsReadFile > | flags = {SettingsReadFile::kSkipHidden} |
||
| ) |
Returns files from recursively traversed directory.
| async_tp | TaskProcessor for synchronous waiting |
| path | to directory to traverse recursively |
| flags | settings read files |
path filepaths and file info | std::runtime_error | if read fails for any reason (e.g. no such file, read error, etc.), |
| bool fs::RemoveSingleFile | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path | ||
| ) |
Remove existing file.
| async_tp | TaskProcessor for synchronous waiting |
| path | file path to chmod |
| std::runtime_error |
| void fs::Rename | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | source, | ||
| const std::string & | destination | ||
| ) |
Renames existing file.
| async_tp | TaskProcessor for synchronous waiting |
| source | path to move from |
| destination | path to move to |
| std::runtime_error |
| void fs::RewriteFileContents | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path, | ||
| std::string_view | contents | ||
| ) |
Rewrite file contents asynchronously It doesn't provide strict atomic guarantees. If you need them, use fs::RewriteFileContentsAtomically.
| async_tp | TaskProcessor for synchronous waiting |
| path | file to rewrite |
| contents | new file contents |
| std::runtime_error | if failed to overwrite |
| void fs::RewriteFileContentsAtomically | ( | engine::TaskProcessor & | async_tp, |
| const std::string & | path, | ||
| std::string_view | contents, | ||
| boost::filesystem::perms | perms | ||
| ) |
Rewrite file contents atomically Write contents to temporary file in the same directory, then atomically replaces the destination file with the temporary file. Effectively does open()+write()+sync()+close()+rename()+sync(directory). It does both sync(2) for file and on the directory, so after successful return the file must persist on the filesystem.
| async_tp | TaskProcessor for synchronous waiting |
| path | file path to rewrite |
| contents | new file contents |
| perms | new file permissions |
| std::runtime_error |