next up previous contents
Next: Referências Bibliográficas Up: Arquitetura Previous: Transferência de Arquivos   Sumário

Procedimento de conexão à rede

Para entrar no sistema, o usuário precisa obter pelo menos uma referência de outro usuário que já esteja conectado no sistema. A obtenção dessa referência inicial se dá através do Serviço de Nomes CORBA. Também é possível obtê-la através da leitura de arquivos. Uma vez obtida essa referência, isto é, uma vez obtido o endereço de um amigo, uma mensagem chamada ping é transmitida para este amigo. O amigo, por sua vez, retransmite o ping para todos os seus amigos. E assim repeditamente.

oneway ping (in Servente NovoNó, 
             in Servente Remetente,
             in long id_da_mensagem, 
             in long tempo_de_vida,
             in long tempo_de_vida_reverso);

NovoNó é o nó que originou o ping, e Remetente é o nó que retransmitiu o ping (este campo é utilizado para evitar que o nó retransmita o ping para quem o remeteu). Note a semelhança com o protocolo de busca por arquivos. Do mesmo modo que este protocolo, as mensagens do tipo ping possuem um tempo de vida. Mas, diferentemente daquele protocolo, todos os clientes que recebem esta mensagem se conectarão diretamente com o nó origem da mensagem, e responderão enviando uma mensagem pong.

void pong (in Servente Amigo);

Em outras palavras, ping avisa os nós da rede que um novo cliente acaba de entrar na rede, e pong fornece a este cliente um conjunto de novos amigos. Estas duas mensagens são assíncronas. Como no protocolo de busca por arquivos, mensagens ping possuem um id, utilizado para que cada nó identifique se já retransmitiu ou não o ping recebido.



A Figura 1 mostra um diagrama de classes do sistema bem simplificado.

Figura 1: Diagrama de classes simplificado
\includegraphics[width=340pt]{dc.eps}

A classe Siscoma executa o cliente, ServidorImpl representa o objeto remoto e também gerencia a tabela de mensagens recebidas. A interface IGui representa a interação com o usuário e é implementada pela classe JSiscoma.


next up previous contents
Next: Referências Bibliográficas Up: Arquitetura Previous: Transferência de Arquivos   Sumário