MIP SDK 的設計上幾乎完全是非同步的。 例如,任何導致網路或檔案IO的作業都是以異步方式執行。 為了處理這些異步事件的事件通知,SDK 會使用 觀察者模式。
實作概觀
在建構將執行異步操作的物件時,必須實作 Observer 類別。 觀察者會收到與 MIP SDK 中各種異步操作相關的通知事件,並將結果提供給呼叫端。
每個 Observer 類別中的方法都是虛擬的,而且會覆寫首選的異步模式。 SDK 會透過 std::promise 和 std::future實作事件通知觀察者模式。
每個類別特定的觀察者都包含一組成功和錯誤/失敗函式,以取得異步操作的結果。 成功 函式會傳回與作業相關聯的物件。 錯誤/失敗 函式會傳回例外狀況,其中包含作業失敗原因的詳細數據。
例如, FileProfile 支援下列兩項作業:
- 它可以透過
FileProfile::AddEngineAsync將新的引擎新增至配置檔。 - 它可以透過
FileProfile::UnloadEngineAsync從配置檔卸除引擎。
由於每個異步操作會實作兩Observer個函式,因此可以假設有四Observer個與 FileProfile相關聯的方法:
FileProfileObserver::OnAddEngineSuccess()FileProfileObserver::OnAddEngineError()FileProfileObserver::OnUnloadEngineSuccess-
FileProfileObserver::OnUnloadEngineError().
MIP SDK 觀察者類別
MIP 檔案 SDK 包含兩個觀察者:
mip::FileProfile::Observermip::FileHandler::Observer
MIP 原則 SDK 只有單一觀察者:
mip::Profile::Observer
MIP 保護 SDK 有三個監聽器:
mip::ProtectionProfile::Observermip::ProtectionEngine::Observermip::ProtectionHandler::Observer
後續步驟
深入了解觀察者如何由各種 SDK 實作及使用: