À propos du projet
StormByte-Buffer est une bibliothèque C++26 qui fournit des primitives de mise en tampon et de streaming pour la suite C++ StormByte. Elle dépend de StormByte-String 1.0.0 ou version ultérieure (qui intègre StormByte Base 2.0.0 et StormByte-System 2.0.0) et éventuellement de StormByte-Logger 2.0.0 pour les pipes de pipeline. Les en-têtes publics se trouvent sous StormByte/buffer/. Les autres modules de la suite tels que Base, Config, Crypto, Database, Logger, Multimedia, Network, String et System sont des dépôts séparés et ne sont pas implémentés ici.
Le module couvre plusieurs blocs de construction. FIFO est un tampon d'octets à croissance à la demande qui n'est pas thread-safe ; Read et Peek conservent les données tandis qu'Extract les consomme. SharedFIFO est un FIFO thread-safe dont Read et Extract bloquent jusqu'à l'arrivée de données ou l'appel à Close/SetError. Ring est un anneau concurrent plusieurs-à-plusieurs. Producer et Consumer sont des handles en écriture seule et en lecture seule sur un Ring partagé. Hopper est une file typée SPSC avec capacité bornée optionnelle, et Sink associe des clés entières à des compartiments Hopper. Pipeline transforme les tampons de flux via des feuilles Pipe définies par l'utilisateur, avec des modes d'exécution Sync, Async et Parallel. Bridge effectue un transfert manuel d'octets entre des extrémités ReadOnly/WriteOnly ou des feuilles IO, et Pumper possède un Bridge et exécute un worker jusqu'à la fin de fichier ou l'annulation. IO fournit les bases BufferedReader et BufferedWriter ainsi que les feuilles de fichier BufferedFileReader et BufferedFileWriter avec des Parameters imbriqués tels que ReadAhead et MaxMemory.
La télémétrie est exposée sous forme de handles partagés ReadTelemetry et WriteTelemetry sur les offices IO et les Bridges. MeanRate mesure les opérations utilisateur demandées, y compris les succès de cache, et n'est pas un benchmark disque. Les méthodes de cycle de vie incluent Close, SetError, EoF, IsReadable et IsWritable. Sous Windows, une feuille IO conserve le handle d'origine jusqu'à sa destruction, de sorte qu'un chemin reste verrouillé jusqu'à ce que le Bridge ou le Pumper le libère.
L'installation nécessite un compilateur C++26 et CMake 3.28 ou version ultérieure. Un clone récursif suivi d'une configuration et d'une compilation CMake produit la bibliothèque ; BUILD_SHARED_LIBS contrôle la sortie partagée ou statique. Le projet est sous double licence LGPL v3 ou ultérieure, ou une licence commerciale du détenteur des droits. La documentation comprend ce README et une référence de classes Doxygen, et les contributions suivent Conventional Commits avec Doxygen sur les en-têtes publics.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.