Contoh

Ringkasan

Kami telah menyiapkan beberapa contoh untuk membantu Anda menerapkan library API dengan sandbox pertama Anda.

Anda dapat menemukannya di //sandboxed_api/examples. lihat di bawah untuk penjelasan mendetail.

hello_sapi

Ini adalah contoh yang sangat mendasar yang menggambarkan cara kerja SAPI. hello_lib.cc menerapkan satu fungsi, AddTwoIntegers(), yang akan di-sandbox dan dipanggil dalam Kode Host.

File Kode Host kedua, hello_transacted.cc, menunjukkan contoh penggunaan Transaksi SAPI.

Total

Library demo yang menerapkan beberapa fungsi C dan satu fungsi C++. Protokol ini menggunakan protobuf untuk bertukar data antara Kode Host dan Library SAPI.

  • Definisi sandbox dapat ditemukan di file sandbox.h.
  • File anotasi fungsi (dibuat secara otomatis) (file yang menyediakan prototipe fungsi dengan sandbox) dapat ditemukan di bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h setelah mem-build Bazel.
  • Logika eksekusi sebenarnya (alias Kode Host) yang menggunakan prosedur dalam sandbox yang diekspor dapat ditemukan di main_sum.cc.

zlib

Ini adalah implementasi demo (berfungsi, tetapi saat ini tidak digunakan dalam produksi) untuk library zlib, mengekspor beberapa fungsinya dan menyediakannya untuk Kode Host.

Fungsi Kode Host yang ditunjukkan adalah decoding stream zlib dari stdin ke stdout.

Library SAPI ini tidak menggunakan file sandbox.h karena menggunakan kebijakan Sandbox2 default, dan library SAPI tersemat, sehingga tidak perlu menyediakan metode sapi::Sandbox::GetLibPath() atau sapi::Sandbox::GetPolicy().

SAPI zlib dapat ditemukan di //sapi_sandbox/examples/zlib, beserta Kode Host.

Stringop

Contoh ini menunjukkan penggunaan protobuf untuk menyediakan fungsi string reverse dan duplication. Library juga berisi sandbox.h khusus untuk memberikan Kebijakan Sandbox yang lebih ketat.

Kode Host tidak mewakili program “normal”, tetapi menunjukkan fungsi library SAPI menggunakan pengujian unit.

Dalam contoh ini, fungsi berbasis non-protobuf juga disertakan untuk memberikan perbandingan antara kedua pendekatan tersebut.