Présentation
Nous avons préparé quelques exemples pour vous aider à implémenter votre première bibliothèque d'API dans un bac à sable.
Vous les trouverez dans //sandboxed_api/examples. Pour en savoir plus, consultez les explications détaillées ci-dessous.
hello_sapi
Il s'agit d'un exemple très simple qui illustre le fonctionnement de SAPI. hello_lib.cc implémente une fonction, AddTwoIntegers()
, qui sera mise en bac à sable et appelée dans le code hôte.
Le deuxième fichier de code hôte, hello_transacted.cc, illustre un exemple d'utilisation des transactions SAPI.
Somme
Bibliothèque de démonstration implémentant quelques fonctions C et une seule fonction C++. Il utilise des fichiers .proto pour échanger des données entre le code hôte et la bibliothèque SAPI.
- La définition du bac à sable se trouve dans le fichier sandbox.h.
- Le fichier d'annotation de fonction (généré automatiquement), qui fournit des prototypes de fonctions en bac à sable, se trouve dans
bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h
après une compilation Bazel. - La logique d'exécution réelle (c'est-à-dire le code hôte) qui utilise les procédures de bac à sable exportées se trouve dans main_sum.cc.
zlib
Il s'agit d'une implémentation de démonstration (fonctionnelle, mais actuellement non utilisée en production) pour la bibliothèque zlib, qui exporte certaines de ses fonctions et les met à la disposition du code hôte.
La fonctionnalité démontrée du code hôte est le décodage des flux zlib de stdin à stdout.
Cette bibliothèque SAPI n'utilise pas le fichier sandbox.h
, car elle utilise la stratégie Sandbox2 par défaut et une bibliothèque SAPI intégrée. Il n'est donc pas nécessaire de fournir la méthode sapi::Sandbox::GetLibPath()
ni la méthode sapi::Sandbox::GetPolicy()
.
Le SAPI zlib se trouve dans //sapi_sandbox/examples/zlib, ainsi que son code hôte.
stringop
Cet exemple montre comment utiliser les protobufs pour fournir une fonction de chaîne reverse
et duplication
. La bibliothèque contient également un sandbox.h dédié pour fournir un règlement Sandbox plus strict.
Le code hôte ne représente pas un programme "normal". Il illustre plutôt la fonctionnalité de la bibliothèque SAPI à l'aide de tests unitaires.
Dans cet exemple, les fonctions non basées sur protobuf sont également incluses pour permettre une comparaison entre les deux approches.