Algo les 4 compteurs pour détection de terminaison lors d'application repartie.
version en pdf (de franck Meilleurat)Multivagues
remise à 0 des comteurs
init
Ei=0;
Ri=0
initiateuri=i
sEi=0; // somme des Ei
sRi=0 // somme des Ri
sRiOld=-1 // ancienne valeur de la vague
sEiOld=-1 // ancienne valeur de la vague
SEsosi=0 //somme des messages emis totaux!!!!
SRsosi=0
Passif=vrai
parenti=0
NbvoisinA = Nombre de voisins // nombre de vosins attendus
début activite sur l'app de base
Fin d'activite
Passifi=vrai
Demande d'emission d'un message de l'app de base
recevoir(m) de l'app de base
Ei++
envoyer([msg] m)
reception d'un msg pour l'app de base
recevoir([msg] m)
Ri++
envoyer(m) a l'app de base
Initiateur == i et parenti==0 et passif == vrai(Debut vague)
parent=i
Envoyer([bleu] i) aux voisins
Reception d'un msg bleu (arrive vaque)
recevoir([bleu] k) de Sj
SI parent==0 OU k < initiateuri
Si initiateuri!=k // changement d'initiateur
sEiOld=sEsosi
sRiOld=sRsosi
FinSI
initiateuri=k
parenti=j
nbvoisinsA= Nombre de voisins -1;
SI nbvoisins>0
envoyer([bleu] k) aux voisins
FinSI
sinon
Si k == initiateuri
envoyer([rouge] k,0,0) a Sj
finSI
finSi
Reception d'un msg rouge (retour vague)
Recevoir([rouge] k,E R)
SI k == initiateuri
sEi=E + sEi
sRi=R + sRi
nbvoisinsA--
finSi
Passif == vrai et nbvoisin == 0 et parenti!=0
sEi = sEi+Ei
sRi = sRi+Ri
SI parent=i // racine
sEi = sEi + max(sEiOld,0)
sEi = sEi - max(sRiOld,0)
sRi = sRi - max(sRiOld,0)
Si sEi == 0
Fin
Sinon
sRiOld = sRi
sEiOld = sEi
FinSI
sinon
envoyer([rouge]initiateuri,sEi, sRi)
finSI
SEsosi=SEsosi+Ei
SRsosi=SRsosi+Ri
parenti=0;
nbVoisinA = nombre de voisins
sEi=0
sRi=0
Ei=0
Ri=0
Dernière modification : 28/07/2006.