Suporte `a Entrada de Novos Usuarios no Grupo Multicast Confiavel
-----------------------------------------------------------------

Suponha que um novo usuario A deseja se conectar a um grupo multicast.

Existem duas possibilidades para A: 

(a) entrar direto no grupo, sem tentar pegar o "estado atual"
    do grupo.
    Para isto, basta chamar 
    RM_initialize() e em seguida RM_joinGroup() (Sem puporte a entrada de usuario)
   
(b) tentar pegar o "estado atual" do grupo, e entao entrar.
    Para isto, basta chamar
    RM_initialize(), RM_getCurState(), tratar o "estado atual" recebido
    e finalmente chamar RM_joinGroup().

Analisemos, a partir de entao, o caso (b).

(1) Na funcao RM_getCurState() o usuario A envia um pacote
do tipo JOIN_REQUEST_PACKET_TYPE para o grupo.

(2) Ainda na mesma funcao, o usuario A aguarda um 
JOIN_ACCEPT_PACKET_TYPE, por um tempo determinado,
de algum membro do grupo.

Note que nesta etapa (2), caso nao seja recebida nenhuma resposta,
o novo usuario ira' se considerar como o primeiro do grupo, e tudo
mais sera' tratado como em (a) e torna-se um "servidor de estado atual".

(3) Uma vez recebido um pacote do tipo JOIN_ACCEPT_PACKET_TYPE,
de um membro B, o usuario A ira' se conectar a B, via TCP, e receber o "estado
atual" de B.  Apos receber o "estado atual", o usuario A faz uma chamada
`a RM_joinGroup() e neste momento o usuario A se torna um membro efetivo 
do grupo. Isso implica que alem de poder enviar e receber dados do grupo,
o membro A e' tambem promovido a "servidor de estado atual".

Um "servidor de estado atual" espera por conexoes em uma determinada porta 
pre-estabelecida.  Quando um membro X se conecta a esta porta, o "servidor 
de estado atual" prove o estado atual da aplicacao para X, juntamente com 
a cache. 

Em detalhes:

Quando o "servidor de estado atual" associado `a aplicacao B aceita uma
nova conexao CON, ele envia o descritor da conexao para B, via um pipe 
pre-definido.Quando B recebe o descritor, este empacota o seu estado atual,
e envia-o para o futuro membro, via conexao CON.(vai mudar, vai ser criado uma 
lista de portas a serem feitas conexoes para envio de estado atual pela propria
camada do protocolo....)

Rio, 14 de novembro de 2001

Allyson , Milena e Daniel Sadoc


