उदाहरण

खास जानकारी

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

उन्हें //sandboxed_api/examples में देखा जा सकता है. पूरी जानकारी के लिए नीचे देखें.

hello_sapi

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

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

योग

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

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

zlib

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

होस्ट कोड की दिखाई गई फ़ंक्शन, zlib स्ट्रीम को stmin से stdout में डिकोड करना है.

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

zlib SAPI को उसके होस्ट कोड के साथ //sapi_sandbox/examples/zlib में मिल सकता है.

स्ट्रिंगॉप

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

होस्ट कोड “सामान्य” प्रोग्राम को नहीं दिखाता है. इसके बजाय, यह यूनिट टेस्ट का इस्तेमाल करके, SAPI लाइब्रेरी के फ़ंक्शन के बारे में बताता है.

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