範例

總覽

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

如需這些範例,請參閱 //sandboxed_api/examples。如需詳細說明,請參閱下文。

hello_sapi

這個非常基本的範例已經說明 SAPI 的運作方式。hello_lib.cc 會實作 AddTwoIntegers() 函式,該函式將採用沙箱機制,並在「主機程式碼」中呼叫。

第二個主機程式碼檔案 hello_transacted.cc 則示範 SAPI 交易的使用範例。

總和

示範程式庫,瞭解如何實作幾個 C 函式和單一 C++ 函式。它會使用通訊協定緩衝區,在主機程式碼與 SAPI 程式庫之間交換資料。

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

zlib

這是 zlib 程式庫的實作示範 (具備功能,但目前尚未用於實際工作環境),匯出部分函式,並提供給「主機程式碼」

「主機程式碼」的示範功能是將 zlib 串流從 stdin 解碼為 stdout。

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

您可以在//sapi_sandbox/examples/zlib 中找到 zlib SAPI 及其主機程式碼

弦樂

這個範例說明如何使用 protobufs 提供字串 reverseduplication 函式。程式庫也包含專用的 sandbox.h,可提供較嚴格的沙箱政策。

「主機程式碼」不代表「一般」程式,而是示範使用單元測試使用 SAPI 程式庫的功能。

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