範例

總覽

我們準備了一些範例,協助您實作第一個 Sandboxed API 程式庫。

您可以在 //sandboxed_api/examples 中找到這些範例,詳情請參閱下文。

hello_sapi

這個基本範例說明 SAPI 的運作方式。hello_lib.cc 實作一個函式 AddTwoIntegers(),該函式會經過沙箱處理,並在主機程式碼中呼叫。

第二個主機程式碼檔案 hello_transacted.cc 示範如何使用 SAPI 交易

總和

實作幾個 C 函式和單一 C++ 函式的示範程式庫。並使用 protobuf 在主機程式碼和 SAPI 程式庫之間交換資料。

  • 沙箱定義位於 sandbox.h 檔案中。
  • (自動產生的) 函式註解檔案 (提供沙箱函式原型的檔案) 會在 Bazel 建構後,位於 bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h 中。
  • 實際的執行邏輯 (又稱主機程式碼) 會使用匯出的沙箱程序,詳情請參閱 main_sum.cc

zlib

這是 zlib 程式庫的示範實作 (功能正常,但目前未用於正式版),會匯出部分函式並提供給主機程式碼

主機程式碼的示範功能是將 stdin 的 zlib 串流解碼至 stdout。

這個 SAPI 程式庫使用預設的 Sandbox2 政策和內嵌的 SAPI 程式庫,因此不會使用 sandbox.h 檔案,也不需要提供 sapi::Sandbox::GetLibPath()sapi::Sandbox::GetPolicy() 方法。

zlib SAPI 位於 //sapi_sandbox/examples/zlib,以及 Host Code

stringop

這個範例會示範如何使用 protobuf 提供字串 reverseduplication 函式。這個程式庫也包含專用的 sandbox.h,可提供更嚴格的 Sandbox 政策。

主機程式碼並非「一般」程式,而是使用單元測試展示 SAPI 程式庫的功能。

在這個範例中,也包含非 protobuf 型函式,方便比較這兩種方法。