Présentation
Nous avons préparé quelques exemples pour vous aider à implémenter votre première bibliothèque d'API en bac à sable.
Vous les trouverez dans //sandboxed_api/examples. Reportez-vous aux explications détaillées ci-dessous.
hello_sapi
Il s'agit d'un exemple très basique illustrant 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 second fichier de code d'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++. Elle utilise des tampons de protocole pour échanger des données entre le code hôte et la bibliothèque SAPI.
- La définition du bac à sable est disponible dans le fichier sandbox.h.
- Le fichier d'annotation des fonctions (générés automatiquement) (un fichier fournissant 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 (également appelée "code hôte") qui utilise les procédures exportées en bac à sable 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. Certaines de ses fonctions sont exportées et mises à la disposition du code hôte.
La fonctionnalité démontrée du code hôte consiste à décoder les flux zlib de stdin à stdout.
Cette bibliothèque SAPI n'utilise pas le fichier sandbox.h
, car elle utilise la règle 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()
ou sapi::Sandbox::GetPolicy()
.
L'API SAPI zlib se trouve dans //sapi_sandbox/examples/zlib, avec son code hôte.
Stringop
Cet exemple montre comment utiliser des tampons de protocole pour fournir une chaîne reverse
et les fonctions duplication
. La bibliothèque contient également un fichier sandbox.h dédié pour fournir une règle de bac à sable plus stricte.
Le code hôte ne représente pas un programme "normal", mais montre le fonctionnement de la bibliothèque SAPI à l'aide de tests unitaires.
Dans cet exemple, les fonctions non basées sur des tampons de protocole sont également incluses pour permettre une comparaison entre les deux approches.