ภาพรวม
เราได้เตรียมตัวอย่างบางส่วนไว้เพื่อช่วยคุณติดตั้งใช้งานไลบรารี 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 แบบ