Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Muitas vezes, é conveniente reagir a mudanças de estado. Todos os retornos de chamada estão sujeitos a Orleansgarantias baseadas em turnos, veja também a seção sobre Garantias de Simultaneidade.
Estado confirmado da pista
Para ser notificado de quaisquer alterações no estado confirmado, JournaledGrain
as subclasses podem substituir este método:
protected override void OnStateChanged()
{
// read state and/or event log and take appropriate action
}
OnStateChanged
é invocado sempre que o estado confirmado é atualizado, ou seja, o número da versão aumenta. Este problema pode ocorrer quando:
- Uma versão mais recente do estado foi carregada a partir do armazenamento.
- Um evento gerado por esta instância foi gravado com êxito no armazenamento.
- Uma mensagem de notificação foi recebida de alguma outra instância.
Observe que, como todos os grãos inicialmente têm a versão zero, OnStateChanged
é chamado sempre que a carga inicial do armazenamento é concluída com uma versão maior que zero.
Rastrear estado provisório
Para ser notificado de quaisquer alterações no estado provisório, JournaledGrain
as subclasses podem substituir este método:
protected override void OnTentativeStateChanged()
{
// read state and/or events and take appropriate action
}
OnTentativeStateChanged
é chamado sempre que o estado provisório muda, ou seja, se a sequência combinada (ConfirmedEvents
+ UnconfirmedEvents
) muda. Em especial, um retorno de chamada para OnTentativeStateChanged()
sempre acontece durante RaiseEvent.