Übersicht
Wir haben einige Beispiele vorbereitet, die Ihnen bei der Implementierung Ihrer ersten Sandboxed API-Bibliothek helfen sollen.
Sie finden sie unter //sandboxed_api/examples. Unten finden Sie detaillierte Erklärungen.
hello_sapi
Dies ist ein sehr einfaches Beispiel, das die Funktionsweise von SAPI veranschaulicht. In hello_lib.cc wird die Funktion AddTwoIntegers()
implementiert, die in einer Sandbox ausgeführt und im Hostcode aufgerufen wird.
Die zweite Hostcode-Datei, hello_transacted.cc, enthält ein Beispiel für die Verwendung von SAPI-Transaktionen.
Summe
Eine Demobibliothek, die einige C-Funktionen und eine einzelne C++-Funktion implementiert. Dabei werden Protobufs verwendet, um Daten zwischen dem Host-Code und der SAPI-Bibliothek auszutauschen.
- Die Sandbox-Definition finden Sie in der Datei sandbox.h.
- Die (automatisch generierte) Datei mit Funktionsanmerkungen (eine Datei mit Prototypen von Sandboxed-Funktionen) finden Sie nach einem Bazel-Build unter
bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h
. - Die tatsächliche Ausführungslogik (auch als Hostcode bezeichnet), die die exportierten Sandbox-Prozeduren verwendet, finden Sie in main_sum.cc.
zlib
Dies ist eine Demoimplementierung (funktional, wird aber derzeit nicht in der Produktion verwendet) für die zlib-Bibliothek, die einige ihrer Funktionen exportiert und für den Hostcode verfügbar macht.
Die demonstrierte Funktionalität des Hostcodes ist die Decodierung von zlib-Streams von stdin nach stdout.
Diese SAPI-Bibliothek verwendet nicht die Datei sandbox.h
, da sie die standardmäßige Sandbox2-Richtlinie und eine eingebettete SAPI-Bibliothek verwendet. Daher ist es nicht erforderlich, die Methode sapi::Sandbox::GetLibPath()
oder sapi::Sandbox::GetPolicy()
bereitzustellen.
Die zlib-SAPI finden Sie unter //sapi_sandbox/examples/zlib, zusammen mit dem Hostcode.
stringop
In diesem Beispiel wird die Verwendung von Protobufs zum Bereitstellen einer String-Funktion reverse
und duplication
veranschaulicht. Die Bibliothek enthält auch eine spezielle sandbox.h, um eine strengere Sandbox-Richtlinie zu ermöglichen.
Der Host-Code ist kein „normales“ Programm, sondern demonstriert die Funktionalität der SAPI-Bibliothek anhand von Unit-Tests.
In diesem Beispiel sind auch die nicht auf Protobuf basierenden Funktionen enthalten, um einen Vergleich zwischen den beiden Ansätzen zu ermöglichen.