Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İlke SDK'sı bir gözlemci sınıfı içerir. Eşzamansız işlemler için geri çağrıları işlemek üzere sanal gözlemci üyelerini geçersiz kılın.
Zaman uyumsuz bir işlem tamamlandığında SDK, sonuca karşılık gelen üye işlevini çağırır OnXxx() .
OnLoadSuccess() için örnekler OnLoadFailure(), OnAddEngineSuccess() ve mip::PolicyProfile::Observer'dir.
Aşağıdaki örneklerde promise/future deseni gösterilmektedir. SDK örnekleri de bu deseni kullanır ve istediğiniz geri çağırma davranışını uygulamak için genişletebilirsiniz.
Profil gözlemcisi uygulaması
Aşağıdaki örnek, mip::PolicyProfile::Observer'den türeyen ProfileObserver sınıfını oluşturur. Üye işlevleri, örneklerde kullanılan future/promise desenini kullanmak için temel sınıfı geçersiz kılar.
Note
Aşağıdaki örnekler gözlemci sınıfının yalnızca bir bölümünü uygular ve ilgili gözlemciler için mip::PolicyEngine geçersiz kılmalar içermez.
profile_observer.h
Başlık, ProfileObserver öğesini tanımlar, bunu mip::PolicyProfile::Observer öğesinden türetir ve ardından üye işlevlerin her birini geçersiz kılar.
class ProfileObserver final : public mip::PolicyProfile::Observer {
public:
ProfileObserver() { }
void OnLoadSuccess(const std::shared_ptr<mip::PolicyProfile>& profile, const std::shared_ptr<void>& context) override;
void OnLoadFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) override;
//TODO: Implement remaining members
};
profile_observer.cpp
Uygulama, her gözlemci üye işlevi için gerçekleştirecek bir eylemi tanımlar.
Her üye iki parametre kabul eder. birincisi, işlevin işlediği sınıfın paylaşılan bir işaretçisidir.
ProfileObserver::OnLoadSuccess bir mip::PolicyProfile almayı bekler.
ProfileObserver::OnAddEngineSuccess, mip::PolicyEngine bekliyor.
İkincisi, bağlama ilişkin paylaşılan bir işaretçidir. Bu uygulamada bağlam, std::promise olarak geçirilen bir shared_ptr<void> referansıdır. İşlevin ilk satırı bu değeri öğesine std::promiseatar ve adlı bir nesnede promisedepolar.
Son olarak, kod promise->set_value() ayarlayıp mip::PolicyProfile nesnesini aktararak geleceğe hazır hâle gelir.
#include "profile_observer.h"
#include <future>
//Called when Profile is successfully loaded
void ProfileObserver::OnLoadSuccess(const std::shared_ptr<mip::PolicyProfile>& profile, const std::shared_ptr<void>& context) {
//cast context to promise
auto promise = std::static_pointer_cast<std::promise<std::shared_ptr<mip::PolicyProfile>>>(context);
//set promise value to profile
promise->set_value(profile);
}
//Called when Profile fails to load
void ProfileObserver::OnLoadFailure(const std::exception_ptr& error, const std::shared_ptr<void>& context) {
auto promise = std::static_pointer_cast<std::promise<std::shared_ptr<mip::PolicyProfile>>>(context);
promise->set_exception(error);
}
//TODO: Implement remaining observer members
Herhangi bir eşzamansız işlem gerçekleştirdiğinizde, observer uygulamasını ayar oluşturucusuna veya eşzamansız işlevin kendisine iletin.
Sonraki Adımlar
- GitHub'de MIP İlkesi SDK'sı C++ örneğini keşfedin.