ตัวอย่าง

ภาพรวม

เราได้เตรียมตัวอย่างบางส่วนเพื่อช่วยคุณในการใช้งานไลบรารี API ที่แซนด์บ็อกซ์เป็นครั้งแรก

หาคำอธิบายได้ใน //sandboxed_api/examples ดูคำอธิบายโดยละเอียดด้านล่าง

hello_sapi

นี่คือตัวอย่างพื้นฐานที่แสดงให้เห็นวิธีการทำงานของ SAPI hello_lib.cc ใช้ฟังก์ชัน AddTwoIntegers() ซึ่งระบบจะแซนด์บ็อกซ์และเรียกในโค้ดโฮสต์

ไฟล์โค้ดโฮสต์ไฟล์ที่สองคือ hello_transacted.cc จะแสดงตัวอย่างการใช้ธุรกรรม SAPI

ผลรวม

ไลบรารีสาธิตที่ใช้ฟังก์ชัน C บางรายการและฟังก์ชัน C++ รายการเดียว โดยใช้ protobuf เพื่อแลกเปลี่ยนข้อมูลระหว่างโค้ดโฮสต์และไลบรารี SAPI

  • ดูคำจำกัดความของแซนด์บ็อกซ์ได้ในไฟล์ sandbox.h
  • ไฟล์คำอธิบายประกอบฟังก์ชัน (สร้างโดยอัตโนมัติ) (ไฟล์ที่มีต้นแบบของฟังก์ชันแซนด์บ็อกซ์) อยู่ใน bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h หลังบิลด์ของ Bazel
  • ดูตรรกะการดำเนินการจริง (หรือที่เรียกอีกชื่อหนึ่งว่า โค้ดของโฮสต์) ซึ่งใช้กระบวนการที่แซนด์บ็อกซ์ที่ส่งออกใน main_sum.cc

zlib

นี่คือการใช้งานเดโม (ใช้งานได้ แต่ขณะนี้ไม่ได้ใช้งานในเวอร์ชันที่ใช้งานจริง) สำหรับไลบรารี zlib ซึ่งเป็นการส่งออกฟังก์ชันบางอย่างของฟังก์ชันดังกล่าวและทำให้พร้อมใช้งานในโค้ดโฮสต์

ฟังก์ชันการทำงานของโค้ดโฮสต์ที่สาธิตคือการถอดรหัสสตรีม zlib จาก stdin ไปยัง Stdout

ไลบรารี SAPI นี้ไม่ได้ใช้ไฟล์ sandbox.h เนื่องจากใช้นโยบาย Sandbox2 เริ่มต้นและไลบรารี SAPI ที่ฝัง ดังนั้นจึงไม่จําเป็นต้องระบุเมธอด sapi::Sandbox::GetLibPath() หรือ sapi::Sandbox::GetPolicy()

คุณดู zlib SAPI ได้ที่ //sapi_sandbox/examples/zlib พร้อมโค้ดโฮสต์

stringop

ตัวอย่างนี้สาธิตการใช้ protobuf เพื่อระบุฟังก์ชันสตริง reverse และ duplication ไลบรารียังมี sandbox.h โดยเฉพาะเพื่อมอบนโยบาย Sandbox ที่เข้มงวดยิ่งขึ้น

โค้ดโฮสต์ไม่ได้แสดงถึงโปรแกรม “ปกติ” แต่จะแสดงฟังก์ชันการทำงานของไลบรารี SAPI โดยใช้การทดสอบหน่วย

ในตัวอย่างนี้ มีฟังก์ชันที่ไม่ใช่ protobuf ด้วยเพื่อใช้เปรียบเทียบระหว่าง 2 แนวทาง