Esempi

Panoramica

Abbiamo preparato alcuni esempi per aiutarti a implementare la tua prima libreria API Sandboxed.

Per una spiegazione dettagliata, consulta la sezione //sandboxed_api/examples.

hello_sapi

Questo è un esempio molto semplice che illustra il funzionamento di SAPI. hello_lib.cc implementa una funzione, AddTwoIntegers(), che verrà limitata tramite sandbox e chiamata nel codice host.

Il secondo file Codice host, hello_transacted.cc, mostra un esempio di utilizzo delle transazioni SAPI.

Somma

Una libreria demo che implementa alcune funzioni C e una singola funzione C++. Utilizza i protobuf per lo scambio di dati tra il codice host e la libreria SAPI.

  • La definizione della sandbox è disponibile nel file sandbox.h.
  • Il file di annotazione delle funzioni (generato automaticamente) (un file che fornisce prototipi di funzioni con sandbox) è disponibile in bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h dopo una build Bazel.
  • La logica di esecuzione effettiva (nota anche come Host Code) che utilizza le procedure sandbox esportate è disponibile in main_sum.cc.

zlib

Si tratta di un'implementazione demo (funzionale, ma attualmente non utilizzata in produzione) per la libreria zlib, che esporta alcune delle sue funzioni e le rende disponibili nell'Host Code.

La funzionalità dimostrata dell'host Code consiste nel decodificare i flussi zlib da stdin a stdout.

Questa libreria SAPI non utilizza il file sandbox.h, in quanto usa il criterio Sandbox2 predefinito e una libreria SAPI incorporata, quindi non è necessario fornire il metodo sapi::Sandbox::GetLibPath() o sapi::Sandbox::GetPolicy().

La SAPI zlib è disponibile in //sapi_sandbox/examples/zlib, insieme al relativo codice host.

Stringop

Questo esempio mostra l'uso di protobuf per fornire una stringa reverse e una funzione duplication. La libreria contiene anche un file sandbox.h dedicato per fornire un criterio sandbox più rigido.

Il codice host non rappresenta un programma "normale", ma dimostra la funzionalità della libreria SAPI utilizzando i test delle unità.

In questo esempio, sono incluse anche funzioni non basate su protobuf per fornire un confronto tra i due approcci.