Exemples

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.