Module Storage
Ce document détaille les modules storage
et appFile
utilisés dans le projet Paxos pour l’interaction avec le système de fichiers.
Ces modules fournissent une interface indépendante de la plateforme pour la manipulation de fichiers et de répertoires, ainsi que pour la lecture et l’écriture.
1. Module storage
Ce module fournit les fonctionnalités principales du système de fichiers.
1.1 Classe storage::Path
Représente un chemin de fichier ou de répertoire.
1.1.1 Constructeurs
Path()
: Crée un chemin vide.Path(const std::string& raw)
: Crée un chemin à partir d’une chaîne, en l’analysant et en la simplifiant.Path(const Path& other)
: Constructeur par copie.
1.1.2 Méthodes
join(const Path& other)
: Ajoute un autre chemin à ce chemin.join(const std::string& other)
: Ajoute une représentation de chemin sous forme de chaîne à ce chemin.operator/(const Path& other) const
: Retourne un nouveau chemin en joignant ce chemin avec un autre.operator/(const std::string& other) const
: Retourne un nouveau chemin en joignant ce chemin avec une représentation de chemin sous forme de chaîne.operator/=(const Path& other)
: Ajoute un autre chemin à ce chemin (en place).operator/=(const std::string& other)
: Ajoute une représentation de chemin sous forme de chaîne à ce chemin (en place).operator=(const Path& other)
: Opérateur d’affectation.operator=(const std::string& other)
: Affecte une représentation de chemin sous forme de chaîne à ce chemin.operator==(const Path& other) const
: Opérateur d’égalité.assign(const Path& other)
: Assigne un autre chemin à ce chemin.assign(const std::string& other)
: Assigne une représentation de chemin sous forme de chaîne à ce chemin.clear()
: Vide le chemin.str() const
: Retourne la représentation du chemin sous forme de chaîne.listdir(bool onlyDirs = false) const
: Retourne un vecteur de noms de fichiers dans le répertoire représenté par ce chemin. SionlyDirs
est vrai, seuls les répertoires sont retournés.exists() const
: Vérifie si le chemin existe.isfile() const
: Vérifie si le chemin représente un fichier.isdir() const
: Vérifie si le chemin représente un répertoire.newfile() const
: Crée un nouveau fichier vide au chemin spécifié.newdir() const
: Crée un nouveau répertoire au chemin spécifié.remove() const
: Supprime le fichier ou répertoire au chemin spécifié.rename(const Path& to)
: Renomme le fichier ou répertoire au chemin spécifié.
1.2 Classe storage::FileStream
Fournit une interface pour lire et écrire dans les fichiers.
1.2.1 Constructeurs
FileStream()
: Crée un flux de fichier vide.FileStream(const std::string& path, Mode mode)
: Crée un flux de fichier et ouvre le fichier spécifié avec le mode donné.
1.2.2 Méthodes
open(const std::string& path, Mode mode)
: Ouvre le fichier spécifié avec le mode donné.close()
: Ferme le fichier.read()
: Lit tout le contenu du fichier dans une chaîne.readline()
: Lit une seule ligne du fichier.readword()
: Lit un seul mot du fichier.readchar()
: Lit un seul caractère du fichier.write(const std::string& str)
: Écrit une chaîne dans le fichier.write(const char* str, std::size_t len)
: Écrit un tableau de caractères dans le fichier.write(const char c)
: Écrit un seul caractère dans le fichier.isopen() const
: Vérifie si le fichier est ouvert.size()
: Retourne la taille du fichier.
1.2.3 Opérateurs
operator<<(FileStream& stream, const std::string& text)
: Écrit une chaîne dans le flux de fichier.operator>>(FileStream& stream, std::string& buff)
: Lit un mot depuis le flux de fichier.
1.3 Fonction storage::init()
Initialise le module storage (spécifiquement pour la plateforme ESP32).
Retourne true
en cas de succès, false
sinon.
2. Module appFile
Fournit des opérations de fichiers de plus haut niveau, y compris l’analyse et la sauvegarde de JSON.
2.1 Fonctions
load(std::string filename)
: Charge le contenu d’un fichier dans une chaîne, en gérant les restrictions de chemin.parse(std::string str)
: Analyse une chaîne JSON dans un objetnlohmann::json
. RetourneNULL
en cas d’échec.save(std::string filename, json jsonObj)
: Sauvegarde un objetnlohmann::json
dans un fichier.
3. Notes
- La base de code est conçue pour être indépendante de la plateforme, supportant à la fois les systèmes de bureau (Linux, Windows, macOS) et embarqués (ESP32).
- La macro
PATH_LOCATION
définit le répertoire de base pour les opérations de fichiers. - La fonction
storage::init()
doit être appelée avant toute autre fonctionstorage
sur ESP32. - La gestion des erreurs est implémentée pour l’analyse JSON et l’initialisation de la carte SD. Les opérations sur fichiers reposent généralement sur la gestion d’erreurs du système sous-jacent.
- Le module
appFile
fournit un moyen pratique de travailler avec des fichiers JSON, basé sur les fonctionnalités du modulestorage
.
Cette documentation fournit une vue d’ensemble complète des modules storage
et appFile
, permettant aux développeurs de comprendre et d’utiliser efficacement leurs fonctionnalités dans le projet Paxos.