示例

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

概览

我们准备了一些示例,帮助您实现您的第一个沙盒 API 库。

您可以在 //sandboxed_api/examples 中找到它们,请参阅以下详细说明。

你好 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 到 stdout 的 zlib 流解码。

此 SAPI 库不使用 sandbox.h 文件,因为它使用默认的沙盒 2 政策和嵌入式 SAPI 库,因此无需提供 sapi::Sandbox::GetLibPath()sapi::Sandbox::GetPolicy() 方法。

您可以在 //sapi_sandbox/examples/zlib 中找到 zlib SAPI 及其主机代码

弦乐

此示例演示了如何使用 protobuf 来提供字符串 reverseduplication 函数。该还包含一个专用的 sandbox.h,用于提供更严格的沙盒政策。

主机代码不是“常规”程序,而是使用单元测试来演示 SAPI 库的功能。

此示例中还包含基于 protobuf 的函数,以对比这两种方法。