Örnekler

Genel Bakış

İlk Sandboxed API kitaplığınızı uygulamanıza yardımcı olacak bazı örnekler hazırladık.

Bu dosyaları //sandboxed_api/examples dizininde bulabilirsiniz. Ayrıntılı açıklamalar için aşağıya bakın.

GitHub'dan indirilebilir.

hello_sapi

Bu, SAPI'nin işleyiş şeklini gösteren çok temel bir örnektir. hello_lib.cc, korumalı alana alınacak ve Host Code'da çağrılacak olan AddTwoIntegers() işlevini uygular.

İkinci ana makine kodu dosyası olan hello_transacted.cc, SAPI Transactions'ın örnek kullanımını gösterir.

Toplam

Birkaç C işlevini ve tek bir C++ işlevini uygulayan bir demo kitaplık. Ana makine kodu ile SAPI kitaplığı arasında veri alışverişi yapmak için protobuf'ları kullanır.

  • Korumalı alan tanımını sandbox.h dosyasında bulabilirsiniz.
  • (Otomatik olarak oluşturulan) işlev notu dosyası (sandbox'a alınmış işlevlerin prototiplerini sağlayan bir dosya), Bazel derlemesinden sonra bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h içinde bulunabilir.
  • Dışa aktarılan korumalı alan prosedürlerinden yararlanan asıl yürütme mantığı (diğer adıyla ana makine kodu), main_sum.cc dosyasında bulunabilir.

zlib

Bu, zlib kitaplığı için bir demo uygulamadır (işlevseldir ancak şu anda üretimde kullanılmamaktadır). Kitaplığın bazı işlevlerini dışa aktarır ve Host Code'da kullanılabilir hale getirir.

Ana makine kodunun gösterilen işlevi, stdin'den stdout'a zlib akışlarının kodunu çözmektir.

Bu SAPI kitaplığı, varsayılan Sandbox2 politikasını ve yerleştirilmiş bir SAPI kitaplığını kullandığından sandbox.h dosyasını kullanmaz. Bu nedenle, sapi::Sandbox::GetLibPath() veya sapi::Sandbox::GetPolicy() yöntemini sağlamanıza gerek yoktur.

zlib SAPI'yi //sapi_sandbox/examples/zlib adresinde ve Host Code ile birlikte bulabilirsiniz.

stringop

Bu örnekte, reverse dizesi ve duplication işlevi sağlamak için protobuf'ların kullanımı gösterilmektedir. Kitaplık, daha katı bir Özel Korumalı Alan Politikası sağlamak için özel bir sandbox.h dosyası da içerir.

Host Code "normal" bir programı temsil etmez. Bunun yerine, birim testlerini kullanarak SAPI kitaplığının işlevselliğini gösterir.

Bu örnekte, iki yaklaşım arasında karşılaştırma yapmak için protobuf tabanlı olmayan işlevler de yer almaktadır.