SDK da proteção de informações da Microsoft: conceitos de observador
O SDK da PIM foi projetado para ser quase totalmente assíncrono. Por exemplo, uma operação que resulte em E/S de rede ou arquivo é executada de forma assíncrona. Para manipular as notificações de evento para esses eventos assíncronos, o SDK usa o padrão de observador.
Visão geral da implementação
Quando é criado um objeto que vai executar uma operação assíncrona, deve ser implementada uma classe Observer
. Os observadores receberão os eventos de notificação relacionados às várias operações assíncronas no SDK da PIM e fornecerão o resultado ao chamador.
As funções em cada classe Observer
são virtuais e são substituídas pelo padrão assíncrono preferencial. O SDK implementa o padrão de observador de notificação de evento por meio de std::promise
e std::future
.
Cada observador específico da classe contém um conjunto de funções de êxito e de erro/falha para o resultado final de uma operação assíncrona. As funções de êxito retornam o objeto associado à operação. As funções de erro/falha retornam uma exceção que contém detalhes sobre o motivo da operação não ter sido bem-sucedida.
Como exemplo, FileProfile
é compatível com as duas operações a seguir:
- Ele pode adicionar um novo mecanismo ao perfil por meio de
FileProfile::AddEngineAsync
. - Ele pode descarregar um mecanismo do perfil por meio de
FileProfile::UnloadEngineAsync
.
Como duas Observer
funções são implementadas por operação assíncrona, pode-se supor que há quatro Observer
métodos associados a FileProfile
:
FileProfileObserver::OnAddEngineSuccess()
FileProfileObserver::OnAddEngineError()
FileProfileObserver::OnUnloadEngineSuccess
FileProfileObserver::OnUnloadEngineError()
.
Classes de observador do SDK da PIM
O SDK do arquivo da PIM contém dois observadores:
mip::FileProfile::Observer
mip::FileHandler::Observer
O SDK da política da PIM tem um único observador:
mip::Profile::Observer
O SDK da proteção da PIM tem três observadores:
mip::ProtectionProfile::Observer
mip::ProtectionEngine::Observer
mip::ProtectionHandler::Observer
Próximas etapas
Saiba mais sobre como os observadores são implementados e usados pelos vários SDKs: