graphe
Class ElectionDistribuee

java.lang.Object
  |
  +--java.lang.Thread
        |
        +--graphe.Sommet
              |
              +--graphe.ElectionDistribuee
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
ColorationDistribuee

public abstract class ElectionDistribuee
extends Sommet

Classe ElectionDistribuee. Cette classe permet de gérer les élections dans le graphe sur le principe de la diffusion des messages.

Version:
1.0
Author:
Estelle Colin, Thomas Peclier, Fabrice Berna @ IUP GMI
See Also:

Field Summary
(package private)  int max
          Mémorisation de l'identificateur le plus grand
private  int maxNbFils
          Nombre de fils maximum d'un sommet du graphe
(package private)  int nbFils
          Nombre de fils ou nombre de voisins non coloriés
private  int[] nbreponse
          tableau pour comptabiliser les réponses attendues
(package private)  int niveau
          Niveau d'exécution de la coloration
private  boolean[] participant
          tableau pour notifier la participation de chacun sur cette élection
(package private)  int pere
          Identifiant de mon pere (celui qui m'a demandé de choisir une couleur)
private  int[] route
          tableau de mémorisation d'où vient le message
(package private)  int tmpPere
          donnée temporaire contenant l'identifiant du sommet qui m'a envoyé sa couleur et qui peut devenir mon père si je suis élu
 
Fields inherited from class graphe.Sommet
fin, id, nbSommet, nbvoisins, voisins, voisinsId
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ElectionDistribuee(int i, int nb, boolean[] v, javax.swing.JTextArea out)
          Constructeur
 
Method Summary
 void candidature(int init, int couleurReçue)
          Dépot de candidature auprès de ses voisins non colorés .
(package private) abstract  void envoiATousMesFils(java.lang.String s)
          Methode abstraite
(package private) abstract  void envoiATousMesFilsSaufMonPere(java.lang.String s, int monPere)
          Methode abstraite
(package private) abstract  void envoiATousMesPeres(java.lang.String s)
          Methode abstraite
private  boolean estVoisin(int idReçu)
          Retourne si oui ou non le sommet est un voisin
 void etat()
          affichage de l'état du sommet
(package private) abstract  void lancerColoration()
          Methode abstraite
private  void reinitialiserVariablesElection(boolean candidat)
          Réinitialise toutes les variables nécessaires à l'élection Si je suis candidat - considère que mon nombre de fils est le nombre de fils maxi - considère que mon id est l'id maxi Sinon - nombre de fils maxi à 0 (attend de recevoir le nombre de fils des candidats) - id maxi nul (attend de recevoir l'id des candidats)
(package private) abstract  void sur_Reception_Couleur(int c, int j, int niv)
          Methode abstraite
 void sur_Reception_de_Acquittement(int idInit)
          Appelée à la reception d'un message d'acquittement Décrémente le nombre d'acquitements attendus Si j'ai reçu tous les acquitements nécessaires : Si c'est un message que j'avais envoyé ET que je suis le max Alors je suis l'élu Sinon Je transmets l'acquitement vers l'émetteur initial du message
 void sur_Reception_de_Candidat(int exp, int idInit, int nbF, int niv, int init, int couleurReçue)
          Effectue les traitements afférents à la réception d'une candature Si je n'appartiens pas au niveau de l'élection Alors je réinitialise les paramètres de l'élection je deviens acteur de ce niveau Si j'ai déjà reçu le message d'élection de ce candidat Alors je le signale Si le candidat n'est pas satisfaisant Alors je le disqualifie Sinon je conserve ses caractéristiques je diffuse le message d'élection à tous mes fils
 
Methods inherited from class graphe.Sommet
cancel, ecrit, getDuree, getEcrivain, getLecteur, getNbMess, getNbMessCouleur, initTubes, interprete, lit, println, run
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

participant

private boolean[] participant
tableau pour notifier la participation de chacun sur cette élection


nbreponse

private int[] nbreponse
tableau pour comptabiliser les réponses attendues


route

private int[] route
tableau de mémorisation d'où vient le message


max

int max
Mémorisation de l'identificateur le plus grand


niveau

int niveau
Niveau d'exécution de la coloration


nbFils

int nbFils
Nombre de fils ou nombre de voisins non coloriés


pere

int pere
Identifiant de mon pere (celui qui m'a demandé de choisir une couleur)


tmpPere

int tmpPere
donnée temporaire contenant l'identifiant du sommet qui m'a envoyé sa couleur et qui peut devenir mon père si je suis élu


maxNbFils

private int maxNbFils
Nombre de fils maximum d'un sommet du graphe

Constructor Detail

ElectionDistribuee

public ElectionDistribuee(int i,
                          int nb,
                          boolean[] v,
                          javax.swing.JTextArea out)
Constructeur

Method Detail

candidature

public final void candidature(int init,
                              int couleurReçue)
                       throws java.io.IOException
Dépot de candidature auprès de ses voisins non colorés . Réinitialise les variables nécessaires à l'élection . Le nombre de réponses attendues est le nombre de fils . Envoie à tous les fils la candidature . Si je n'ai pas de fils Alors c'est mon père qui vient de m'envoyer sa couleur je lance une coloration

Specified by:
candidature in class Sommet
Throws:
java.io.IOException

reinitialiserVariablesElection

private final void reinitialiserVariablesElection(boolean candidat)
Réinitialise toutes les variables nécessaires à l'élection Si je suis candidat - considère que mon nombre de fils est le nombre de fils maxi - considère que mon id est l'id maxi Sinon - nombre de fils maxi à 0 (attend de recevoir le nombre de fils des candidats) - id maxi nul (attend de recevoir l'id des candidats)


sur_Reception_de_Candidat

public final void sur_Reception_de_Candidat(int exp,
                                            int idInit,
                                            int nbF,
                                            int niv,
                                            int init,
                                            int couleurReçue)
                                     throws java.io.IOException
Effectue les traitements afférents à la réception d'une candature Si je n'appartiens pas au niveau de l'élection Alors je réinitialise les paramètres de l'élection je deviens acteur de ce niveau Si j'ai déjà reçu le message d'élection de ce candidat Alors je le signale Si le candidat n'est pas satisfaisant Alors je le disqualifie Sinon je conserve ses caractéristiques je diffuse le message d'élection à tous mes fils

Throws:
java.io.IOException

sur_Reception_de_Acquittement

public final void sur_Reception_de_Acquittement(int idInit)
                                         throws java.io.IOException
Appelée à la reception d'un message d'acquittement Décrémente le nombre d'acquitements attendus Si j'ai reçu tous les acquitements nécessaires : Si c'est un message que j'avais envoyé ET que je suis le max Alors je suis l'élu Sinon Je transmets l'acquitement vers l'émetteur initial du message

Throws:
java.io.IOException

etat

public void etat()
affichage de l'état du sommet

Overrides:
etat in class Sommet

estVoisin

private final boolean estVoisin(int idReçu)
Retourne si oui ou non le sommet est un voisin


lancerColoration

abstract void lancerColoration()
                        throws java.io.IOException
Methode abstraite

java.io.IOException

envoiATousMesPeres

abstract void envoiATousMesPeres(java.lang.String s)
                          throws java.io.IOException
Methode abstraite

java.io.IOException

envoiATousMesFils

abstract void envoiATousMesFils(java.lang.String s)
                         throws java.io.IOException
Methode abstraite

java.io.IOException

envoiATousMesFilsSaufMonPere

abstract void envoiATousMesFilsSaufMonPere(java.lang.String s,
                                           int monPere)
                                    throws java.io.IOException
Methode abstraite

java.io.IOException

sur_Reception_Couleur

abstract void sur_Reception_Couleur(int c,
                                    int j,
                                    int niv)
                             throws java.io.IOException
Methode abstraite

java.io.IOException