MIP SDK 幾乎完全是非同步的。 例如,SDK 會非同步執行任何導致網路或檔案 I/O 的操作。 為了處理這些非同步事件的事件通知,SDK 採用 觀察者模式。
實作概觀
當你建構一個執行非同步操作的物件時,實作一個 Observer 類別。 觀察者會接收與 MIP SDK 中各種非同步操作相關的通知事件,並將結果提供給呼叫者。
你可以在每個 Observer 類別中覆寫虛擬函數,以選擇偏好的非同步模式。 SDK 透過使用 std::promise 和 std::future實作事件通知觀察者模式。
每個類別專屬的觀察器都包含一組針對非同步作業結果的成功函式以及錯誤/失敗函式。 成功 函式會傳回與作業相關聯的物件。 錯誤/失敗 函式會傳回例外狀況,其中包含作業失敗原因的詳細數據。
例如,FileProfile 支援以下兩種操作:
- 它可以使用
FileProfile::AddEngineAsync將新的引擎新增至設定檔。 - 它可以使用
FileProfile::UnloadEngineAsync從設定檔中卸載引擎。
由於 SDK 會針對每個非同步作業實作兩個 Observer 函式,因此你可以假設有 四個Observer 方法與 FileProfile 相關聯:
FileProfileObserver::OnAddEngineSuccess()FileProfileObserver::OnAddEngineError()FileProfileObserver::OnUnloadEngineSuccessFileProfileObserver::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 如何實作及使用觀察者: