Aos alunos são fornecidos os esqueletos das quatro camadas a desenvolver, bem como as classes (ServerApplRRPC e ClientApplRRPC) que definem as camadas utilizadas pelo cliente e servidor. É na classe ServerApplRRPC que se pode alterar o protocolo de ordem total a utilizar.
Cada camada contém informação sobre o tipo de eventos que aceita, necessita e fornece. Se forem criados novos tipos de eventos então estes devem ser adicionados às camadas respectivas.
Classe que encapsula a parte do código referente à aplicação cliente. Sendo código especifico da aplicação deve concretizar a interface com o utilizador (caso exista) e a (des)serialização de argumentos (entrada e saída) usados na invocação remota de procedimentos.
Esta classe concretiza a funcionalidade de RPC replicado do lado do cliente. A camada deve funcionar de uma forma independente da camada da aplicação e deve fornecer entre outros serviços:
Este evento deve ser enviado ao Gossip Server para obter informação sobre a filiação no grupo de servidores. Para utilizar esta funcionalidade deve-se construir um evento deste tipo com o identificador do grupo que se quer consultar e propagá-lo no sentido descendente. Como resposta recebe-se um evento do mesmo tipo, no sentido ascendente, contendo os endereços dos servidores.
As mensagens destinadas ou com origem no grupo devem ser do tipo GroupSendableEvent ou descendentes desta classe.
As mensagens ponto-a-ponto devem serdo tipo SendableEvent ou descendentes.
A camada vai ter como função:
Esta camada tem o código de coordenação genérico do lado do servidor e deve funcionar de uma maneira independente da camada da aplicação.
A camada deve preocupar-se com:
Este evento é recebido quando a vista (filiação) vai ser alterada, tanto por perda de elementos como a entrada de novos elementos.
Este evento depois de ser recebido deve voltar a ser enviado no sentido descendente. A partir deste momento a camada não deve enviar mais eventos até receber uma nova vista.
Este tipo de evento contém informação de uma nova vista e é recebido depois de ter sido enviado um BlockOk.
Só depois de receber esta vista é possivel voltar a enviar mensagens.
A sincronia virtual garante que se uma mensagem é entregue numa vista então todas os membros do grupo (que sobrevivem até à próxima vista) entregam a mensagem nessa mesma vista.
Pedro Vicente