[ox/fs] Improve const-correctness of FileSystem

This commit is contained in:
Gary Talent 2022-01-26 01:27:31 -06:00
parent 9ee7cd5d53
commit f687134943
5 changed files with 39 additions and 39 deletions

View File

@ -110,20 +110,20 @@ class FileStoreTemplate {
FsSize_t readSize, T *data,
FsSize_t *size) const;
Result<StatInfo> stat(InodeId_t id);
Result<StatInfo> stat(InodeId_t id) const;
Error resize();
Error resize(std::size_t size, void *newBuff = nullptr);
[[nodiscard]]
InodeId_t spaceNeeded(FsSize_t size);
InodeId_t spaceNeeded(FsSize_t size) const;
[[nodiscard]]
InodeId_t size() const;
[[nodiscard]]
InodeId_t available();
InodeId_t available() const;
[[nodiscard]]
char *buff();
@ -414,7 +414,7 @@ Error FileStoreTemplate<size_t>::resize(std::size_t size, void *newBuff) {
}
template<typename size_t>
Result<StatInfo> FileStoreTemplate<size_t>::stat(InodeId_t id) {
Result<StatInfo> FileStoreTemplate<size_t>::stat(InodeId_t id) const {
oxRequire(inode, find(id).validate());
return StatInfo {
id,
@ -425,7 +425,7 @@ Result<StatInfo> FileStoreTemplate<size_t>::stat(InodeId_t id) {
}
template<typename size_t>
typename FileStoreTemplate<size_t>::InodeId_t FileStoreTemplate<size_t>::spaceNeeded(FsSize_t size) {
typename FileStoreTemplate<size_t>::InodeId_t FileStoreTemplate<size_t>::spaceNeeded(FsSize_t size) const {
return m_buffer->spaceNeeded(size);
}
@ -435,7 +435,7 @@ typename FileStoreTemplate<size_t>::InodeId_t FileStoreTemplate<size_t>::size()
}
template<typename size_t>
typename FileStoreTemplate<size_t>::InodeId_t FileStoreTemplate<size_t>::available() {
typename FileStoreTemplate<size_t>::InodeId_t FileStoreTemplate<size_t>::available() const {
return m_buffer->available();
}

View File

@ -56,7 +56,7 @@ Error FileSystem::read(const FileAddress &addr, std::size_t readStart, std::size
}
}
Result<Vector<String>> FileSystem::ls(const String &dir) noexcept {
Result<Vector<String>> FileSystem::ls(const String &dir) const noexcept {
return ls(dir.c_str());
}
@ -84,7 +84,7 @@ Error FileSystem::write(const FileAddress &addr, const void *buffer, uint64_t si
}
}
Result<FileStat> FileSystem::stat(const FileAddress &addr) noexcept {
Result<FileStat> FileSystem::stat(const FileAddress &addr) const noexcept {
switch (addr.type()) {
case FileAddressType::Inode:
return stat(addr.getInode().value);

View File

@ -51,9 +51,9 @@ class FileSystem {
[[maybe_unused]]
Result<const char*> directAccess(const FileAddress &addr) noexcept;
Result<Vector<String>> ls(const String &dir) noexcept;
Result<Vector<String>> ls(const String &dir) const noexcept;
virtual Result<Vector<String>> ls(const char *dir) noexcept = 0;
virtual Result<Vector<String>> ls(const char *dir) const noexcept = 0;
virtual Error remove(const char *path, bool recursive) noexcept = 0;
@ -67,16 +67,16 @@ class FileSystem {
Error write(const FileAddress &addr, const void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept;
virtual Result<FileStat> stat(uint64_t inode) noexcept = 0;
virtual Result<FileStat> stat(uint64_t inode) const noexcept = 0;
virtual Result<FileStat> stat(const char *path) noexcept = 0;
virtual Result<FileStat> stat(const char *path) const noexcept = 0;
Result<FileStat> stat(const FileAddress &addr) noexcept;
Result<FileStat> stat(const FileAddress &addr) const noexcept;
[[nodiscard]]
virtual uint64_t spaceNeeded(uint64_t size) noexcept = 0;
virtual uint64_t spaceNeeded(uint64_t size) const noexcept = 0;
virtual Result<uint64_t> available() noexcept = 0;
virtual Result<uint64_t> available() const noexcept = 0;
virtual Result<uint64_t> size() const noexcept = 0;
@ -133,10 +133,10 @@ class FileSystemTemplate: public FileSystem {
Result<const char*> directAccess(uint64_t) noexcept override;
Result<Vector<String>> ls(const char *path) noexcept override;
Result<Vector<String>> ls(const char *path) const noexcept override;
template<typename F>
Error ls(const char *path, F cb);
Error ls(const char *path, F cb) const;
Error remove(const char *path, bool recursive) noexcept override;
@ -151,13 +151,13 @@ class FileSystemTemplate: public FileSystem {
Error write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType) noexcept override;
Result<FileStat> stat(uint64_t inode) noexcept override;
Result<FileStat> stat(uint64_t inode) const noexcept override;
Result<FileStat> stat(const char *path) noexcept override;
Result<FileStat> stat(const char *path) const noexcept override;
uint64_t spaceNeeded(uint64_t size) noexcept override;
uint64_t spaceNeeded(uint64_t size) const noexcept override;
Result<uint64_t> available() noexcept override;
Result<uint64_t> available() const noexcept override;
Result<uint64_t> size() const noexcept override;
@ -273,7 +273,7 @@ Result<const char*> FileSystemTemplate<FileStore, Directory>::directAccess(uint6
}
template<typename FileStore, typename Directory>
Result<Vector<String>> FileSystemTemplate<FileStore, Directory>::ls(const char *path) noexcept {
Result<Vector<String>> FileSystemTemplate<FileStore, Directory>::ls(const char *path) const noexcept {
Vector<String> out;
oxReturnError(ls(path, [&out](const char *name, typename FileStore::InodeId_t) {
out.emplace_back(name);
@ -284,7 +284,7 @@ Result<Vector<String>> FileSystemTemplate<FileStore, Directory>::ls(const char *
template<typename FileStore, typename Directory>
template<typename F>
Error FileSystemTemplate<FileStore, Directory>::ls(const char *path, F cb) {
Error FileSystemTemplate<FileStore, Directory>::ls(const char *path, F cb) const {
oxTracef("ox::fs::FileSystemTemplate::ls", "path: {}", path);
oxRequire(s, stat(path));
Directory dir(m_fs, s.inode);
@ -340,7 +340,7 @@ Error FileSystemTemplate<FileStore, Directory>::write(uint64_t inode, const void
}
template<typename FileStore, typename Directory>
Result<FileStat> FileSystemTemplate<FileStore, Directory>::stat(uint64_t inode) noexcept {
Result<FileStat> FileSystemTemplate<FileStore, Directory>::stat(uint64_t inode) const noexcept {
oxRequire(s, m_fs.stat(inode));
FileStat out;
out.inode = s.inode;
@ -351,18 +351,18 @@ Result<FileStat> FileSystemTemplate<FileStore, Directory>::stat(uint64_t inode)
}
template<typename FileStore, typename Directory>
Result<FileStat> FileSystemTemplate<FileStore, Directory>::stat(const char *path) noexcept {
Result<FileStat> FileSystemTemplate<FileStore, Directory>::stat(const char *path) const noexcept {
oxRequire(inode, find(path));
return stat(inode);
}
template<typename FileStore, typename Directory>
uint64_t FileSystemTemplate<FileStore, Directory>::spaceNeeded(uint64_t size) noexcept {
uint64_t FileSystemTemplate<FileStore, Directory>::spaceNeeded(uint64_t size) const noexcept {
return m_fs.spaceNeeded(size);
}
template<typename FileStore, typename Directory>
Result<uint64_t> FileSystemTemplate<FileStore, Directory>::available() noexcept {
Result<uint64_t> FileSystemTemplate<FileStore, Directory>::available() const noexcept {
return m_fs.available();
}

View File

@ -94,7 +94,7 @@ Result<const char*> PassThroughFS::directAccess(uint64_t) noexcept {
return OxError(1, "PassThroughFS::directAccess not supported");
}
Result<Vector<String>> PassThroughFS::ls(const char *dir) noexcept {
Result<Vector<String>> PassThroughFS::ls(const char *dir) const noexcept {
Vector<String> out;
std::error_code ec;
const auto di = std::filesystem::directory_iterator(m_path / stripSlash(dir), ec);
@ -136,12 +136,12 @@ Error PassThroughFS::write(uint64_t, const void*, uint64_t, FileType) noexcept {
return OxError(1, "write(uint64_t, void*, uint64_t, uint8_t) is not supported by PassThroughFS");
}
Result<FileStat> PassThroughFS::stat(uint64_t) noexcept {
Result<FileStat> PassThroughFS::stat(uint64_t) const noexcept {
// unsupported
return OxError(1, "stat(uint64_t) is not supported by PassThroughFS");
}
Result<FileStat> PassThroughFS::stat(const char *path) noexcept {
Result<FileStat> PassThroughFS::stat(const char *path) const noexcept {
std::error_code ec;
const auto p = m_path / stripSlash(path);
const FileType type = std::filesystem::is_directory(p, ec) ?
@ -154,11 +154,11 @@ Result<FileStat> PassThroughFS::stat(const char *path) noexcept {
return FileStat{0, 0, size, type};
}
uint64_t PassThroughFS::spaceNeeded(uint64_t size) noexcept {
uint64_t PassThroughFS::spaceNeeded(uint64_t size) const noexcept {
return size;
}
Result<uint64_t> PassThroughFS::available() noexcept {
Result<uint64_t> PassThroughFS::available() const noexcept {
std::error_code ec;
const auto s = std::filesystem::space(m_path, ec);
oxReturnError(OxError(ec.value(), "PassThroughFS: could not get FS size"));

View File

@ -51,10 +51,10 @@ class PassThroughFS: public FileSystem {
Result<const char*> directAccess(uint64_t) noexcept override;
Result<Vector<String>> ls(const char *dir) noexcept override;
Result<Vector<String>> ls(const char *dir) const noexcept override;
template<typename F>
Error ls(const char *dir, F cb) noexcept;
Error ls(const char *dir, F cb) const noexcept;
Error remove(const char *path, bool recursive = false) noexcept override;
@ -64,13 +64,13 @@ class PassThroughFS: public FileSystem {
Error write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept override;
Result<FileStat> stat(uint64_t inode) noexcept override;
Result<FileStat> stat(uint64_t inode) const noexcept override;
Result<FileStat> stat(const char *path) noexcept override;
Result<FileStat> stat(const char *path) const noexcept override;
uint64_t spaceNeeded(uint64_t size) noexcept override;
uint64_t spaceNeeded(uint64_t size) const noexcept override;
Result<uint64_t> available() noexcept override;
Result<uint64_t> available() const noexcept override;
Result<uint64_t> size() const noexcept override;
@ -90,7 +90,7 @@ class PassThroughFS: public FileSystem {
};
template<typename F>
Error PassThroughFS::ls(const char *dir, F cb) noexcept {
Error PassThroughFS::ls(const char *dir, F cb) const noexcept {
std::error_code ec;
const auto di = std::filesystem::directory_iterator(m_path / stripSlash(dir), ec);
oxReturnError(OxError(ec.value(), "PassThroughFS: ls failed"));