Esempi

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Panoramica

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

Puoi trovarli in //sandboxed_api/examples, di seguito per spiegazioni dettagliate.

ciao_sapi

Questo è un esempio molto semplice che mostra come funziona SAPI. hello_lib.cc implementa una funzione, AddTwoIntegers(), che viene sandbox e chiamata nel codice host.

Il secondo file Host Code, hello_transacted.cc, mostra un esempio di utilizzo di Transazioni API.

Somma

Una libreria demo che implementa alcune funzioni C e una singola funzione C++. Utilizza protobufs per lo scambio di dati tra Host Code 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) può essere trovato in bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h dopo una build Bazel.
  • La logica di esecuzione effettiva (ovvero il codice host) che utilizza le procedure con sandbox esportate si trova 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 nel codice host.

La funzionalità comprovata del codice host è la decodifica degli stream zlib da stdin a stdout.

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

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

stringa

Questo esempio mostra l'uso dei protobuf per fornire una funzione reverse e 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 le funzioni non basate sul protobuf per fornire un confronto tra i due approcci.