Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
StorageManager.h
Go to the documentation of this file.
1
16#pragma once
17
18#include <string>
19#include <vector>
20#include <functional>
21#include <cstdint>
22#include <nlohmann/json.hpp>
24
29{
30 std::string name;
33 size_t size;
34};
35
36inline void to_json(nlohmann::json &j, const FileInfo &f) {
37 j = nlohmann::json{
38 {"name", f.name},
39 {"size", f.size},
40 {"isDir", f.isDirectory}
41 };
42}
43
48{
49public:
50 virtual ~StorageManager() = default;
51
53 virtual bool mount() = 0;
54
56 virtual bool unmount() = 0;
57
59 virtual bool isMounted() const = 0;
60
62 virtual bool exists(const std::string &path) = 0;
63
65 virtual bool remove(const std::string &path) = 0;
66
68 virtual bool rename(const std::string &from, const std::string &to) = 0;
69
71 virtual bool readFile(const std::string &path, std::vector<uint8_t> &buffer) = 0;
72
74 virtual bool readFileString(const std::string &path, uint32_t startPosition, uint32_t length, std::string &buffer) = 0;
75
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;
80
81
83 virtual bool streamFile(const std::string &path, std::function<void(const uint8_t *, size_t)> chunkCallback) = 0;
84
86 virtual bool listDirectory(const std::string &path, std::vector<FileInfo> &out) = 0;
87
89 virtual bool createDirectory(const std::string &path) = 0;
90
92 virtual bool removeDirectory(const std::string &path) = 0;
93
95 virtual size_t getFileSize(const std::string &path) = 0;
96
98 virtual bool appendToFile(const std::string &path, const uint8_t *data, size_t size) = 0;
99
101 virtual bool formatStorage() = 0;
102
108 virtual std::unique_ptr<StorageFileReader> openReader(const std::string& path) = 0;
109};
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.