ตัวอย่าง

ภาพรวม

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

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

hello_sapi

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

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

ผลรวม

ไลบรารีตัวอย่างที่ใช้ฟังก์ชัน C 2-3 ฟังก์ชันและฟังก์ชัน C++ 1 ฟังก์ชัน โดยใช้ Protobufs เพื่อแลกเปลี่ยนข้อมูลระหว่างโค้ดโฮสต์กับไลบรารี 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 Policy เริ่มต้นและไลบรารี SAPI แบบฝัง จึงไม่จำเป็นต้องระบุวิธี sapi::Sandbox::GetLibPath() หรือ sapi::Sandbox::GetPolicy()

คุณจะพบ SAPI ของ zlib ได้ใน //sapi_sandbox/examples/zlib พร้อมกับHost Code

stringop

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

Host Code ไม่ได้แสดงถึงโปรแกรม "ปกติ" แต่แสดงให้เห็นถึงฟังก์ชันการทำงาน ของไลบรารี SAPI โดยใช้การทดสอบหน่วย

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