أمثلة

نظرة عامة

لقد أعددنا بعض الأمثلة لمساعدتك في تنفيذ أول مكتبة لواجهة برمجة تطبيقات في Sandboxed.

ويمكنك العثور عليها في //sandboxed_api/examples، ويمكنك الاطّلاع أدناه على التوضيحات التفصيلية.

hello_sapi

هذا مثال أساسي للغاية يوضح كيفية عمل SAPI. ينفِّذ hello_lib.cc دالة واحدة، وهي AddTwoIntegers()، والتي سيتم وضعها في وضع الحماية واستدعاؤها في رمز المضيف.

يوضح ملف رمز المضيف الثاني، hello_transacted.cc، مثالاً لاستخدام معاملات SAPI.

المجموع

مكتبة عروض توضيحية تنفّذ بعض دوال C ودالة C++ واحدة. وهي تستخدم النماذج الأولية لتبادل البيانات بين كود المضيف ومكتبة 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_sandbox/examples/zlib، بالإضافة إلى رمز المضيف الخاص بها.

ستريب

يوضح هذا المثال استخدام النماذج الأولية لتقديم دالة سلسلة reverse وduplication. تحتوي المكتبة أيضًا على sandbox.h مخصّص لتوفير سياسة وضع حماية أكثر صرامة.

لا يمثل رمز المضيف برنامجًا "عاديًا"، بل يوضح وظائف مكتبة SAPI باستخدام اختبارات الوحدات.

في هذا المثال، يتم أيضًا تضمين الدوال غير المستندة إلى Protobuf لتقديم مقارنة بين النهجين.