उदाहरण

खास जानकारी

हमने कुछ उदाहरण तैयार किए हैं, ताकि आपको अपनी पहली Sandboxed API लाइब्रेरी लागू करने में मदद मिल सके.

ये आपको //sandboxed_api/examples में मिल सकते हैं. इनके बारे में ज़्यादा जानकारी के लिए, यहां दिया गया लेख पढ़ें.

hello_sapi

यह एक बहुत ही बुनियादी उदाहरण है. इससे पता चलता है कि SAPI कैसे काम करता है. hello_lib.cc में एक फ़ंक्शन, AddTwoIntegers() लागू किया गया है. इसे सैंडबॉक्स किया जाएगा और होस्ट कोड में कॉल किया जाएगा.

दूसरी होस्ट कोड फ़ाइल, hello_transacted.cc, SAPI Transactions के इस्तेमाल का उदाहरण दिखाती है.

योग

एक डेमो लाइब्रेरी, जिसमें कुछ C फ़ंक्शन और एक C++ फ़ंक्शन लागू किया गया है. यह Host Code और SAPI Library के बीच डेटा ट्रांसफ़र करने के लिए, protobufs का इस्तेमाल करता है.

  • सैंडबॉक्स की परिभाषा, sandbox.h फ़ाइल में देखी जा सकती है.
  • फ़ंक्शन एनोटेशन फ़ाइल (अपने-आप जनरेट होने वाली) bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h में मिल सकती है. यह फ़ाइल, सैंडबॉक्स किए गए फ़ंक्शन के प्रोटोटाइप उपलब्ध कराती है. यह फ़ाइल, Bazel बिल्ड के बाद मिलती है.
  • सैंडबॉक्स की गई एक्सपोर्ट की गई प्रक्रियाओं का इस्तेमाल करने वाले, एक्ज़ीक्यूशन लॉजिक (इसे होस्ट कोड भी कहा जाता है) को main_sum.cc में देखा जा सकता है.

zlib

यह zlib लाइब्रेरी के लिए डेमो है. यह काम करती है, लेकिन फ़िलहाल इसका इस्तेमाल प्रोडक्शन में नहीं किया जाता. यह लाइब्रेरी, अपने कुछ फ़ंक्शन एक्सपोर्ट करती है और उन्हें होस्ट कोड के लिए उपलब्ध कराती है.

इस उदाहरण में, होस्ट कोड का काम stdin से stdout तक zlib स्ट्रीम को डिकोड करना है.

यह SAPI लाइब्रेरी, sandbox.h फ़ाइल का इस्तेमाल नहीं करती, क्योंकि यह डिफ़ॉल्ट Sandbox2 नीति और एम्बेड की गई SAPI लाइब्रेरी का इस्तेमाल करती है. इसलिए, sapi::Sandbox::GetLibPath() या sapi::Sandbox::GetPolicy() तरीका इस्तेमाल करने की ज़रूरत नहीं है.

zlib SAPI, //sapi_sandbox/examples/zlib में मौजूद है. साथ ही, इसका होस्ट कोड भी इसी फ़ोल्डर में मौजूद है.

stringop

इस उदाहरण में, स्ट्रिंग reverse और duplication फ़ंक्शन देने के लिए, प्रोटोबफ़ के इस्तेमाल के बारे में बताया गया है. लाइब्रेरी में एक खास sandbox.h भी शामिल है, ताकि सैंडबॉक्स से जुड़ी नीति को ज़्यादा सख्ती से लागू किया जा सके.

Host Code, “सामान्य” प्रोग्राम को नहीं दिखाता. इसके बजाय, यह यूनिट टेस्ट का इस्तेमाल करके, SAPI लाइब्रेरी की सुविधाओं के बारे में बताता है.

इस उदाहरण में, प्रोटोबफ़ पर आधारित नहीं होने वाले फ़ंक्शन भी शामिल किए गए हैं, ताकि दोनों तरीकों की तुलना की जा सके.