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: