algod
Class SommetElection

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--algod.SommetAbstract
              |
              +--algod.SommetIO
                    |
                    +--algod.SommetElection
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
SommetArbreCouvrant

abstract class SommetElection
extends SommetIO

Ajoute la capacité d'élection à un sommet. Election du sommet ayant le plus de voisin, en cas d'égalité, élection du plus gros identifiant.

Version:
1.0
Author:
Alexandre Alapetite, Brice Andujar, Gregory Gontier

Field Summary
protected  AlgoDMessageFIFO algoDMessageFIFO
          File d'attente des messages provenant d'autres sommets.
(package private)  int identElu
          Identifiant du sommet élu. -1 si pas encore élu.
protected  int identifiant
          Identifiant unique de ce sommet.
private  int maxIdent
          Identifiant maximum des sommets candidats à l'élection
private  int maxNbVoisins
          Nombre de sommets du meilleur candidat à l'élection
(package private) static int nbMessagesElection
           
private  IntVector nbRep
          Tableau indiquant, pour les sommets supposés du graphe, le nombre de réponses attendues.
private  int nbSommetsPossibles
          Nombre de sommets supposés dans le graphe.
private  BooleanVector participant
          Tableau indiquant, parmis les sommets supposés du graphe, ceux qui participent.
(package private) static int rndDelaiTransmission
           
(package private)  IntVector route
          Tableau indiquant, pour les sommets supposés du graphe, le voisin qui relaie la communication.
static boolean verbose
          Indique si un texte doit apparaître lors de certaines actions comme l'envoit de messages.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
SommetElection(int identifiant)
           
 
Method Summary
(package private)  void acteCandidature()
          Démarre un acte de candidature.
(package private)  void affiche(java.lang.String texte)
          Affiche du texte sur la sortie standard.
(package private)  void afficheErreur(java.lang.String texte)
          Affiche du texte sur la sortie standard.
protected  int ajoutVoisin(AlgoDMessageFIFO aAlgoDMessageFIFO, int aIdentifiant)
          Ajoute un voisin à ce sommet.
protected  int ajoutVoisin(SommetVoisin unSommet)
          Ajoute un voisin à ce sommet.
(package private)  void attend(long millis)
          Attend un certain nombre de millisecondes.
protected  void demarreElection()
           
 void destroy()
          Arrête le thread et nettoie ses structures et moyens de communication.
(package private)  void envoyerASommet(char typeMessage, java.lang.String contenu, int identSommetSource, SommetVoisin sommetVoisin)
           
(package private)  void envoyerASommet(char typeMessage, java.lang.String contenu, int identSommetSource, SommetVoisin sommetVoisin, int identSommetDestination)
           
protected  void envoyerATousVoisins(char typeMessage, java.lang.String contenu, int identSommetSource)
          Envoie un message à tous les voisins.
protected  void envoyerATousVoisinsSauf(char typeMessage, java.lang.String contenu, int identSommetSource, int numVoisin)
          Envoie un message à tous les voisins sauf un.
protected  void envoyerAVoisin(char typeMessage, java.lang.String contenu, int identSommetSource, int numVoisin)
           
protected  void envoyerAVoisin(char typeMessage, java.lang.String contenu, int identSommetSource, int numVoisin, int identSommetDestination)
          Envoie un message de type typeMessage, provenant du sommet identSommetSource que l'on achemine par le voisin numVoisin pour le sommet identSommetDestination.
protected  void finElection()
          Méthode invoquée lorsque l'algorithme d'élection est terminé.
 int getIdentifiant()
          Accès à l'identifiant de ce sommet.
 SommetVoisin getVoisin(int ident)
           
 SommetVoisin getVoisinAt(int num)
           
protected  void initialisationElection(int nbSomm)
           
 boolean isElu()
          Retourne si ce sommet est l'élu de son groupe.
 boolean isFini()
          Indique que le sommet n'a plus de message à traiter dans la file d'attente.
private  boolean isMeilleur(int nbDeVoisins, int id)
           
 boolean isVoisin(int ident)
          Teste si un sommet est voisin de celui-ci.
 int nbVoisins()
           
 int numOfVoisin(int ident)
           
private  void receptionAccuse(int sommet_source, int numVoisin, boolean valeur)
          Traitement d'un message d'accusé-réception.
private  void receptionElu(int sommet_source, int numVoisin)
          Réception d'un message contenant l'identifiant de l'élu.
private  void receptionIdentifiant(int sommet_source, int nbDeVoisins, int numVoisin)
          Traitement d'un message de diffusion.
 void recevoir(AlgoDMessage adm)
          Ajoute un message provenant d'un autre sommet à la file des messages.
(package private)  void sonnerie()
          Fait un beep
 java.lang.String toString()
          Informations sur ce sommet.
protected  void traiteReception(AlgoDMessage adm, int numVoisin)
          Appelle les méthodes appropriées en fonction du message à traiter aprés un parsage éventuel.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, run, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

nbMessagesElection

static int nbMessagesElection

participant

private BooleanVector participant
Tableau indiquant, parmis les sommets supposés du graphe, ceux qui participent.


nbRep

private IntVector nbRep
Tableau indiquant, pour les sommets supposés du graphe, le nombre de réponses attendues.


route

IntVector route
Tableau indiquant, pour les sommets supposés du graphe, le voisin qui relaie la communication.


nbSommetsPossibles

private int nbSommetsPossibles
Nombre de sommets supposés dans le graphe.


maxIdent

private int maxIdent
Identifiant maximum des sommets candidats à l'élection. -1 si aucun candidant ne s'est encore présenté.

See Also:
maxNbVoisins, identElu

maxNbVoisins

private int maxNbVoisins
Nombre de sommets du meilleur candidat à l'élection. -1 si aucun candidant ne s'est encore présenté.

See Also:
maxIdent, identElu

identElu

int identElu
Identifiant du sommet élu. -1 si pas encore élu.

See Also:
maxIdent, maxNbVoisins

rndDelaiTransmission

static int rndDelaiTransmission

algoDMessageFIFO

protected AlgoDMessageFIFO algoDMessageFIFO
File d'attente des messages provenant d'autres sommets.


verbose

public static boolean verbose
Indique si un texte doit apparaître lors de certaines actions comme l'envoit de messages.


identifiant

protected final int identifiant
Identifiant unique de ce sommet.

Constructor Detail

SommetElection

public SommetElection(int identifiant)
Method Detail

destroy

public void destroy()
Description copied from class: SommetAbstract
Arrête le thread et nettoie ses structures et moyens de communication.
Attention, les autres threads ne sont pas prévenus de sa destruction.

Overrides:
destroy in class SommetIO

initialisationElection

protected void initialisationElection(int nbSomm)

ajoutVoisin

protected int ajoutVoisin(SommetVoisin unSommet)
Description copied from class: SommetAbstract
Ajoute un voisin à ce sommet.
Ne met pas à jour les algorithmes déjà effectués.

Overrides:
ajoutVoisin in class SommetAbstract

isElu

public final boolean isElu()
Retourne si ce sommet est l'élu de son groupe.


demarreElection

protected void demarreElection()

finElection

protected void finElection()
Méthode invoquée lorsque l'algorithme d'élection est terminé.
Ce sommet est élu.


acteCandidature

final void acteCandidature()
Démarre un acte de candidature.


traiteReception

protected void traiteReception(AlgoDMessage adm,
                               int numVoisin)
Description copied from class: SommetIO
Appelle les méthodes appropriées en fonction du message à traiter aprés un parsage éventuel.

Overrides:
traiteReception in class SommetIO

isMeilleur

private boolean isMeilleur(int nbDeVoisins,
                           int id)
Parameters:
nbDeVoisins - Nombre de voisins du candidat.
id - Identifiant du candidat (pour un ordre total en cas d'égalité sur le nombre de voisins).
Returns:
si le candidat possédant ce couple de caractéristiques est meilleur que le candidat actuellement retenu.

receptionIdentifiant

private void receptionIdentifiant(int sommet_source,
                                  int nbDeVoisins,
                                  int numVoisin)
Traitement d'un message de diffusion.


receptionAccuse

private void receptionAccuse(int sommet_source,
                             int numVoisin,
                             boolean valeur)
Traitement d'un message d'accusé-réception.


receptionElu

private void receptionElu(int sommet_source,
                          int numVoisin)
Réception d'un message contenant l'identifiant de l'élu.


toString

public java.lang.String toString()
Description copied from class: SommetAbstract
Informations sur ce sommet.

Overrides:
toString in class SommetIO
Returns:
un texte sur une ligne décrivant de sommet.

envoyerASommet

final void envoyerASommet(char typeMessage,
                          java.lang.String contenu,
                          int identSommetSource,
                          SommetVoisin sommetVoisin,
                          int identSommetDestination)

envoyerASommet

final void envoyerASommet(char typeMessage,
                          java.lang.String contenu,
                          int identSommetSource,
                          SommetVoisin sommetVoisin)

envoyerAVoisin

protected final void envoyerAVoisin(char typeMessage,
                                    java.lang.String contenu,
                                    int identSommetSource,
                                    int numVoisin,
                                    int identSommetDestination)
Envoie un message de type typeMessage, provenant du sommet identSommetSource que l'on achemine par le voisin numVoisin pour le sommet identSommetDestination.


envoyerAVoisin

protected final void envoyerAVoisin(char typeMessage,
                                    java.lang.String contenu,
                                    int identSommetSource,
                                    int numVoisin)

envoyerATousVoisins

protected final void envoyerATousVoisins(char typeMessage,
                                         java.lang.String contenu,
                                         int identSommetSource)
Envoie un message à tous les voisins.


envoyerATousVoisinsSauf

protected final void envoyerATousVoisinsSauf(char typeMessage,
                                             java.lang.String contenu,
                                             int identSommetSource,
                                             int numVoisin)
Envoie un message à tous les voisins sauf un.

Parameters:
numVoisin - le numéro du voisin à ignorer (pas son identifiant).

isFini

public final boolean isFini()
Indique que le sommet n'a plus de message à traiter dans la file d'attente.


recevoir

public final void recevoir(AlgoDMessage adm)
Ajoute un message provenant d'un autre sommet à la file des messages.
La file FIFO est déjà synchronized.

See Also:
SommetIO.algoDMessageFIFO

getIdentifiant

public final int getIdentifiant()
Accès à l'identifiant de ce sommet.


isVoisin

public final boolean isVoisin(int ident)
Teste si un sommet est voisin de celui-ci.

Parameters:
ident - identifiant du sommet potentiellement voisin de celui-ci.
Returns:
si le sommet de cet identifiant est voisin de ce sommet.

getVoisinAt

public final SommetVoisin getVoisinAt(int num)
Parameters:
num - le numéro du voisin auquel on veut avoir accés.
Returns:
le num-ième voisin.

getVoisin

public final SommetVoisin getVoisin(int ident)
Parameters:
ident - l'identifiant du voisin auquel on veut avoir accés.
Returns:
le voisin de l'identifiant ident, null sinon.

numOfVoisin

public final int numOfVoisin(int ident)
Parameters:
ident - l'identifiant d'un sommet voisin de ce sommet.
Returns:
le numéro du voisin de cet identifiant, -1 s'il n'y a pas de voisin avec cet identifiant.

nbVoisins

public final int nbVoisins()
Returns:
le nombre de sommets voisins de celui-ci.

ajoutVoisin

protected final int ajoutVoisin(AlgoDMessageFIFO aAlgoDMessageFIFO,
                                int aIdentifiant)
Ajoute un voisin à ce sommet.
Ne met pas à jour les algorithmes déjà effectués.


affiche

void affiche(java.lang.String texte)
Affiche du texte sur la sortie standard.


afficheErreur

void afficheErreur(java.lang.String texte)
Affiche du texte sur la sortie standard.


sonnerie

void sonnerie()
Fait un beep


attend

final void attend(long millis)
Attend un certain nombre de millisecondes.