Ce référentiel contient
Le cadre des applications C ++ robustes est appelée Robust Services Core (RSC). RSC mettra votre projet sur le bon chemin et le relancera si vous développez ou réingéniez un système dont les exigences peuvent être caractérisées comme
Les modèles de conception utilisés dans RSC rendent les développeurs plus productifs. Ils ont été prouvés dans les produits de télécommunications phares, y compris (à partir de l'expérience de l'auteur en tant qu'architecte logiciel principal) le serveur de réseau central qui gère tous les appels dans le réseau cellulaire d'AT&T. Un langage de modèle qui résume les modèles apparaît dans le deuxième chapitre du logiciel de communication robuste . L' aperçu du logiciel RSC du document décrit lesquels d'entre eux sont actuellement disponibles dans ce référentiel et pointe vers les fichiers de code principaux qui les implémentent, et ce tutoriel fournit plus d'informations sur certains d'entre eux.
Le développement de RSC a été quelque peu détourné par le développement d'outils d'analyse statique C ++. Ces outils détectent les violations de diverses directives de conception C ++, telles que celles trouvées dans le C ++ efficace de Scott Meyers. Ils analysent également les directives #include pour déterminer lesquelles ajouter ou supprimer. Leur éditeur vous permet ensuite de réparer facilement et de manière interactive de nombreux avertissements que l'outil génère. Même si vous ne développez pas d'applications avec RSC, vous pouvez trouver ces outils utiles. Un aperçu d'eux est fourni ici.
L'inclusion d'une application avec un cadre sert à le tester et illustrer son utilisation. Ce référentiel comprend donc une application POTS (Plain Ordinary Telephone Service). POTS a été choisi pour plusieurs raisons. D'une part, l'auteur avait une vaste expérience avec des applications similaires tout en travaillant dans l'industrie des télécommunications. Mais plus important encore, POTS est une application non triviale, mais tout le monde a une compréhension raisonnable de ce qu'elle fait. Vous devriez donc être en mesure de comprendre ce que fait le code POSS sans lire une grande spécification. Un aperçu de l'application POTS est fourni ici.
En 2002, un groupe au Royaume-Uni a commencé à concevoir un protocole qui permet aux robots logiciels de jouer à la diplomatie du jeu de société. Leur site Web a divers liens et téléchargements utiles, parmi lesquels est l'exécutable pour un serveur de diplomatie. Les bots se connectent à ce serveur, qui leur envoie l'état du jeu, leur permet de communiquer entre eux en utilisant le protocole et juge les mouvements qu'ils soumettent. Leur site Web fournit également un logiciel pour le développement de bots. J'ai décidé de refacter ce logiciel, de le découpler à partir de Windows et de le rapporter plus conformément à C ++ 11. Cela a aidé RSC à évoluer pour mieux prendre en charge les clients autonomes qui utilisent IP (TCP, dans ce cas). Le logiciel résultant est disponible dans le répertoire DIP et est décrit plus en détail ici.
Cette page donne un aperçu de RSC. Une autre page répertorie les documents qui approfondissent beaucoup plus de profondeur sur de nombreux sujets.
Téléchargez l'une des versions. Le code commis depuis la dernière version est en cours et peut être instable ou incomplet, donc le téléchargement à partir du menu déroulant Code▾ sur la page principale n'est pas recommandé.
Avertissement
Pour un bon fonctionnement, RSC doit être lancé à partir d'un répertoire en dessous de son répertoire SRC . Voir le guide d'installation.
RSC
Si vous ne souhaitez pas construire RSC, débogage et libération des exécutables sont fournis à chaque version.
Les répertoires qui contiennent le code source de RSC et les dépendances entre eux sont répertoriés dans les commentaires qui précèdent la mise en œuvre de main . Chacun de ces répertoires est construit comme une bibliothèque statique distincte, avec main résidant dans son propre répertoire.
RSC est développé à l'aide de Visual Studio 2022 et construit à l'aide de CMake, comme décrit ici. Les options de construction Windows pour RSC sont décrites ici. Les fichiers .vcxproj de Visual Studio ne sont plus utilisés pendant les builds, ils ont donc été supprimés du référentiel.
Pendant l'initialisation, RSC affiche chaque module lorsqu'il est initialisé. (Un module équivaut à une bibliothèque statique.) Une fois tous les modules initialisés, l'invite CLI nb> semble indiquer que les commandes CLI dans le répertoire NB sont disponibles. Ce qui est écrit sur la console pendant le démarrage est indiqué ici, et une liste de toutes les commandes CLI est fournie ici.
Si vous entrez >read saveinit comme première commande CLI, une trace de fonction de l'initialisation, qui démarre avant même l'invocation de main , est générée. Cette trace ressemblera beaucoup à ceci. Chaque fonction qui apparaît dans une telle trace invoquée Debug::ft , qui enregistre ce qui suit:
Toute la sortie apparaît dans le répertoire ../<dir> /exclud/output, où <dir> est le répertoire immédiatement au-dessus du répertoire SRC . En plus de toute sortie spécifique que vous demandez, comme la trace d'initialisation, chaque session CLI produit
La chaîne numérique yymmdd-hhmmss est annexée aux noms de ces fichiers pour enregistrer le moment où le système initialisé (pour le fichier de console et le fichier journal initial) ou l'heure du redémarrage le plus récent (pour un fichier journal ultérieur).
La façon la plus simple d'utiliser RSC comme cadre est de créer une bibliothèque statique sous le répertoire SRC de RSC. Le répertoire de l'APP est fourni à cet effet. Utilisez simplement le sous-ensemble de RSC dont votre application a besoin. Cela inclura toujours la NodeBase d'espace de noms (le répertoire NB ). Il peut également inclure NetworkBase (le répertoire NW ) et SessionBase (le répertoire SB ). L'utilisation d'un nouvel espace de noms pour votre application est recommandée.
Si vous mettez votre code ailleurs, RSC ne sera pas en mesure de trouver des répertoires importants lorsque vous le lancez, comme décrit dans le guide d'installation. Vous devrez alors modifier l' Element::RscPath afin qu'il puisse trouver le répertoire qui contient le répertoire d'entrée . Vous devez également ajouter le répertoire d'aide de RSC à ce répertoire.
Pour initialiser votre application, tirez du Module . Pour un exemple, voir NbModule , qui initialise NodeBase . Changez CreateModules afin qu'il instancie également votre module, ainsi que les autres modules dont vous avez besoin dans votre version.
Pour interagir avec votre application, dérivez de CliIncrement . Pour un exemple, voir NbIncrement , l'incrément pour NodeBase . Instanciez votre incrément CLI dans la fonction Startup de votre module. Lorsque vous lancez RSC, vous pouvez ensuite accéder aux commandes de votre incrément via la CLI en entrant >incr , où incr est l'abréviation que le constructeur de votre incrément a transmis au constructeur de CliIncrement .
La plupart des fichiers du répertoire d'entrée sont des scripts de test. Le document qui décrit l'application POTS discute également de ses tests, qui exercent une partie considérable du logiciel de RSC. Certains autres tests sont de nature plus tactique:
Un ensemble de scripts teste la capacité du filet de sécurité de la classe Thread . Une page dédiée décrit ces tests et l'état actuel de chacun.
Entrant >nt dans la CLI accède à l' incrément "NT" (un ensemble de commandes CLI). Il fournit des commandes pour tester les fonctions dans les interfaces BuddyHeap , SlabHeap , LeakyBucketCounter , Q1Way , Q2Way et Registry .
RSC est disponible gratuitement en vertu des termes de la licence publique générale GNU, version 3, qui dit essentiellement que vous devez également publier votre propre logiciel, ainsi que vos modifications à RSC. Si vous développez un logiciel commercial que vous souhaitez garder propriétaire, la licence GPLV3 permet également à RSC d'être sous licence en vertu des termes d'une autre licence approuvée par la Free Software Foundation. Certaines de ces licences permettent à votre logiciel de rester propriétaire. Cependant, la compensation serait nécessaire et toutes les modifications que vous apportez à RSC elle-même (corrections de bogues et améliorations) devraient encore être publiées.
Comment contribuer à RSC est décrit ici.
GitHub vous permet maintenant de parrainer des projets. Un bouton "sponsor" est situé en haut de cette page.