SDK de Proteção de Informações da Microsoft - Conceitos do Observer
O MIP SDK foi projetado para ser quase totalmente assíncrono. Por exemplo, qualquer operação que resulte em E/S de rede ou arquivo é executada de forma assíncrona. Para manipular as notificações de eventos para esses eventos assíncronos, o SDK usa o padrão de observador.
Visão geral da implementação
Ao construir um objeto que executará uma operação assíncrona, uma Observer
classe deve ser implementada. Os observadores receberão os eventos de notificação relacionados às várias operações assíncronas no MIP SDK e fornecerão o resultado ao chamador.
As funções em cada Observer
classe são virtuais e são substituídas pelo padrão assíncrono preferido. O SDK implementa o padrão de observador de notificação de eventos via std::promise
e std::future
.
Cada observador específico da classe contém um conjunto de funções de sucesso e erro/falha, para o resultado de uma operação assíncrona. As funções de êxito retornam o objeto associado à operação. As funções de falha de erro/retornam uma exceção que contém detalhes sobre por que a operação não foi bem-sucedida.
Como exemplo, FileProfile
suporta as duas operações a seguir:
- Ele pode adicionar um novo mecanismo ao perfil via
FileProfile::AddEngineAsync
. - Ele pode descarregar um motor do perfil via
FileProfile::UnloadEngineAsync
.
Uma vez que duas Observer
funções são implementadas por operação assíncrona, pode-se supor que existem quatro Observer
métodos associados a FileProfile
:
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
Classes de observador do MIP SDK
O MIP File SDK contém dois observadores:
mip::FileProfile::Observer
mip::FileHandler::Observer
O SDK de Política MIP tem apenas um único observador:
mip::Profile::Observer
O SDK de Proteção MIP tem três observadores:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Passos Seguintes
Saiba mais sobre como os observadores são implementados e usados pelos vários SDKs: