Örnekler

Genel bakış

İlk Korumalı Alana Sahip API kitaplığınızı uygulamanıza yardımcı olmak için bazı örnekler hazırladık.

Bunları //sandboxed_api/examples içinde bulabilirsiniz. Ayrıntılı açıklamalar için aşağıya bakın.

hello_sapi

Bu, SAPI'nin nasıl çalıştığını gösteren çok basit bir örnek. hello_lib.cc işlevi, korumalı alana alınacak ve Ana Makine Kodunda çağrılacak olan AddTwoIntegers() adlı bir işlev uygular.

İkinci Ana Makine Kodu dosyası (hello_transacted.cc), SAPI İşlemleri'nin örnek kullanımını gösterir.

Toplam

Birkaç C işlevi ve tek bir C++ işlevi uygulayan demo kitaplığı. Ana Makine Kodu ile SAPI Kitaplığı arasında veri alışverişi yapmak için protobuf'ları kullanır.

  • Korumalı alan tanımı, sandbox.h dosyasında bulunabilir.
  • (Otomatik olarak oluşturulan) işlev ek açıklama dosyası (korumalı alan kapsamındaki 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ı alana alınmış prosedürlerden yararlanan gerçek yürütme mantığı (Ana Makine Kodu olarak da bilinir) main_sum.cc içinde bulunabilir.

zlib

Bu, zlib kitaplığı için bir demo uygulamasıdır (ancak şu anda üretimde kullanılmamaktadır). İşlevlerinin bazılarını dışa aktarıp Ana Makine Kodunun kullanımına sunar.

Ana Makine Kodu'nun gösterilen işlevi, stdin'den stdout'a giden zlib akışlarının kodunun çözülmesidir.

Bu SAPI kitaplığı, varsayılan Sandbox2 politikasını ve yerleşik bir SAPI kitaplığını kullandığı için sandbox.h dosyasını kullanmaz. Bu nedenle, sapi::Sandbox::GetLibPath() veya sapi::Sandbox::GetPolicy() yönteminin sağlanmasına gerek yoktur.

zlib SAPI, Ana Makine Kodu ile birlikte //sapi_sandbox/examples/zlib adresinde bulunabilir.

Stringop

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

Ana Makine Kodu bir "normal" 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 yapabilmek için protobuf tabanlı olmayan işlevler de dahil edilmiştir.