22#include <nlohmann/json.hpp>
62 virtual bool exists(
const std::string &path) = 0;
65 virtual bool remove(
const std::string &path) = 0;
68 virtual bool rename(
const std::string &from,
const std::string &to) = 0;
71 virtual bool readFile(
const std::string &path, std::vector<uint8_t> &buffer) = 0;
74 virtual bool readFileString(
const std::string &path, uint32_t startPosition, uint32_t length, std::string &buffer) = 0;
77 virtual bool writeFile(
const std::string &path,
const std::vector<uint8_t> &data) = 0;
79 virtual bool writeFile(
const std::string& path,
const unsigned char* data,
size_t size) = 0;
83 virtual bool streamFile(
const std::string &path, std::function<
void(
const uint8_t *,
size_t)> chunkCallback) = 0;
86 virtual bool listDirectory(
const std::string &path, std::vector<FileInfo> &out) = 0;
98 virtual bool appendToFile(
const std::string &path,
const uint8_t *data,
size_t size) = 0;
108 virtual std::unique_ptr<StorageFileReader>
openReader(
const std::string& path) = 0;
void to_json(nlohmann::json &j, const FileInfo &f)
Abstract base class for storage access and file operations.
virtual bool writeFile(const std::string &path, const std::vector< uint8_t > &data)=0
Write a memory buffer to a file.
virtual bool appendToFile(const std::string &path, const uint8_t *data, size_t size)=0
Append data to a file.
virtual bool isMounted() const =0
Check mounted.
virtual bool remove(const std::string &path)=0
Remove a file or directory.
virtual bool rename(const std::string &from, const std::string &to)=0
Rename a file or directory.
virtual bool readFile(const std::string &path, std::vector< uint8_t > &buffer)=0
Read a file into a memory buffer.
virtual ~StorageManager()=default
virtual bool unmount()=0
Unmount the storage.
virtual bool readFileString(const std::string &path, uint32_t startPosition, uint32_t length, std::string &buffer)=0
Read a file string into a memory buffer.
virtual bool writeFile(const std::string &path, const unsigned char *data, size_t size)=0
Write from a raw buffer.
virtual size_t getFileSize(const std::string &path)=0
Get the size of a file.
virtual bool createDirectory(const std::string &path)=0
Create a directory at the given path (recursive if needed).
virtual bool streamFile(const std::string &path, std::function< void(const uint8_t *, size_t)> chunkCallback)=0
Stream a file in chunks via callback.
virtual bool exists(const std::string &path)=0
Check whether a file or directory exists at the given path.
virtual bool formatStorage()=0
Format the storage (if applicable).
virtual bool mount()=0
Mount the underlying storage.
virtual bool removeDirectory(const std::string &path)=0
Remove a directory (must be empty, or recursively if supported).
virtual bool listDirectory(const std::string &path, std::vector< FileInfo > &out)=0
List all entries in the given directory.
virtual std::unique_ptr< StorageFileReader > openReader(const std::string &path)=0
Open a file for streaming read access.
Structure representing metadata for a file or directory.
bool isDirectory
True if item is a directory.
size_t size
Size in bytes.
bool isReadOnly
True if item is read-only.
std::string name
File or directory name.