Ejemplos

Descripción general

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

Puedes encontrarlos en //sandboxed_api/examples; lee a continuación para obtener explicaciones detalladas.

hello_sapi

Este es un ejemplo muy básico que ilustra cómo funciona SAPI. hello_lib.cc implementa una función, AddTwoIntegers(), que se someterá a una zona de pruebas y se llamará en el código de host.

El segundo archivo de código de host, hello_transacted.cc, muestra un ejemplo de uso de Transacciones de la API.

ponderada

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

  • La definición de la zona de pruebas se puede encontrar en el archivo sandbox.h.
  • El archivo de anotación de función (generado automáticamente) (un archivo que proporciona prototipos de funciones de 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 de host) que utiliza los procedimientos exportados de la zona de pruebas se puede encontrar en main_sum.cc.

zlib

Esta es una implementación de demostración (funcional, pero que 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 de host.

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

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

Puedes encontrar el SAPI de zlib en //sapi_sandbox/examples/zlib, junto con su código de host.

cadena

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

El Host Code no representa un programa “normal”, sino que demuestra la funcionalidad de la biblioteca SAPI mediante pruebas de unidades.

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