Ví dụ

Tổng quan

Chúng tôi đã chuẩn bị một số ví dụ để giúp bạn triển khai thư viện API Hộp cát đầu tiên của mình.

Bạn có thể tìm thấy các kết quả này trong //sandboxed_api/examples, xem nội dung giải thích chi tiết bên dưới.

hello_sapi

Đây là một ví dụ rất cơ bản minh hoạ cách hoạt động của SAPI. hello_lib.cc triển khai một hàm AddTwoIntegers(). Hàm này sẽ được tạo hộp cát và gọi trong Mã máy chủ.

Tệp Mã máy chủ thứ hai, hello_transacted.cc, minh hoạ một ví dụ về việc sử dụng Giao dịch SAPI.

Tổng

Thư viện minh hoạ triển khai một vài hàm C và một hàm C++ duy nhất. Mô-đun này sử dụng các protobuf để trao đổi dữ liệu giữa Mã máy chủ và Thư viện SAPI.

  • Bạn có thể tìm thấy định nghĩa hộp cát trong tệp sandbox.h.
  • Bạn có thể tìm thấy tệp chú thích hàm (được tạo tự động) (tệp cung cấp nguyên mẫu các hàm trong hộp cát) trong bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h sau bản dựng Bazel.
  • Bạn có thể tìm thấy logic thực thi thực tế (còn gọi là Mã máy chủ) tận dụng các quy trình trong hộp cát đã xuất trong main_sum.cc.

zlib

Đây là cách triển khai minh hoạ (hoạt động, nhưng hiện không được dùng trong phiên bản chính thức) cho thư viện zlib, xuất một số hàm của thư viện này và cung cấp các hàm đó cho Mã máy chủ.

Chức năng được minh hoạ của Mã máy chủ là giải mã luồng zlib từ stdin sang stdout.

Thư viện SAPI này không dùng tệp sandbox.h vì sử dụng chính sách Sandbox2 mặc định và một thư viện SAPI được nhúng, do đó, bạn không cần phải cung cấp phương thức sapi::Sandbox::GetLibPath() hoặc sapi::Sandbox::GetPolicy().

Bạn có thể tìm thấy SAPI zlib trong //sapi_sandbox/examples/zlib cùng với Mã máy chủ.

chuỗi

Ví dụ này minh hoạ việc sử dụng protobuf để cung cấp một chuỗi reverse và hàm duplication. Thư viện cũng có một sandbox.h chuyên biệt để cung cấp một Chính sách Hộp cát nghiêm ngặt hơn.

Mã máy chủ không đại diện cho một chương trình "bình thường" mà thể hiện chức năng của thư viện SAPI bằng các kiểm thử đơn vị.

Trong ví dụ này, các hàm không dựa trên protobuf cũng được đưa vào để so sánh giữa hai phương pháp.