Ejemplos

Descripción general

Preparamos algunos ejemplos para ayudarte a implementar tu primera biblioteca de APIs de Sandboxed.

Puedes encontrarlos en //sandboxed_api/examples. Consulta las explicaciones detalladas a continuación.

hello_sapi

Este es un ejemplo muy básico que ilustra cómo funciona la SAPI. El archivo hello_lib.cc implementa una función, AddTwoIntegers(), que se ejecutará en un entorno de pruebas y se llamará en el código del host.

El segundo archivo de código del host, hello_transacted.cc, muestra un ejemplo de uso de las transacciones de la SAPI.

Suma

Biblioteca de demostración que implementa algunas funciones en C y una sola función en C++. Usa protobufs para intercambiar datos entre el código del host y la biblioteca de la SAPI.

  • La definición del entorno aislado se puede encontrar en el archivo sandbox.h.
  • El archivo de anotación de funciones (generado automáticamente), que proporciona prototipos de funciones en zona de pruebas, se puede encontrar en bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h después de una compilación de Bazel.
  • La lógica de ejecución real (también conocida como código del host) que usa los procedimientos exportados de la zona de pruebas se encuentra en main_sum.cc.

zlib

Esta es una implementación de demostración (funcional, pero actualmente no se usa en producción) para la biblioteca zlib, que exporta algunas de sus funciones y las pone a disposición del código host.

La funcionalidad demostrada del código de host es la decodificación de transmisiones zlib de stdin a stdout.

Esta biblioteca de la SAPI no usa el archivo sandbox.h, ya que usa la política predeterminada de Sandbox2 y una biblioteca de la SAPI integrada, por lo que no es necesario proporcionar el método sapi::Sandbox::GetLibPath() ni el sapi::Sandbox::GetPolicy().

La SAPI de zlib se puede encontrar en //sapi_sandbox/examples/zlib, junto con su código de host.

stringop

En este ejemplo, se muestra el uso de protobufs para proporcionar una cadena reverse y una función duplication. La biblioteca también contiene un sandbox.h dedicado para proporcionar una política de Sandbox más estricta.

El código host no representa un programa "normal", sino que demuestra la funcionalidad de la biblioteca de la SAPI con pruebas de unidades.

En este ejemplo, también se incluyen las funciones que no se basan en protobuf para proporcionar una comparación entre los dos enfoques.