graphe
Class ColorationDistribuee

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

public final class ColorationDistribuee
extends ElectionDistribuee

Classe ThreadCandidat. Cette classe hérite de tous les attributs et méthodes de ThreadSommet, les élections en plus.

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

Field Summary
private  boolean[] couleursLibres
          Tableau de taille le nombre de couleurs (nbCouleurs).
private  int[] couleursVoisins
          Tableau de taille le nombre de voisins (nbvoisins), permet d'associer chacun de mes voisins déjà colorié à sa couleur
 java.lang.String etat
          Etat du sommet
private  int initiateurId
          L'initiateur du message
private  int maCouleur
          numéro de la couleur que j'ai choisie, -1 sinon
private  java.lang.String message
          Le message reçu
private  int nbColoration
          Nombre de coloration effectuées
private  int[] nbCouleurReçues
          Tableau du nombre de couleurs reçues par chaque voisin
private  int nbCouleurs
          Nombre de couleurs de la coloration
private  int nbRepAtt
          Nombre de couleurs de la coloration
private  java.util.StringTokenizer strToken
          Utilisé pour interpréter les message
 
Fields inherited from class graphe.ElectionDistribuee
max, nbFils, niveau, pere, tmpPere
 
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
ColorationDistribuee(int i, int nb, boolean[] v, javax.swing.JTextArea out)
          Constructeur - sauve le nombre de couleurs de la k-coloration - initialise les couleurs de tous mes voisins à -1 - initialise toutes les couleurs libres à oui
 
Method Summary
private  void actualiserCouleurs(int k, int c)
          Actualise : - le tableau des couleurs libres en fonction de toutes les couleurs des voisins - le nombre de fils : nombre de voisins total moins voisins colorés
private  int choisirCouleur()
          Méthode de choix d'une couleur:
(package private)  void envoiATousMesFils(java.lang.String s)
          Transfere un message à tous mes fils un fils est un voisin non coloré
(package private)  void envoiATousMesFilsSaufMonPere(java.lang.String s, int monPere)
          Transfere un message à tous mes fils sauf mon père un fils est un voisin non coloré
(package private)  void envoiATousMesPeres(java.lang.String s)
          Transfere un message à tous mes pères un père est un voisin coloré
 void etat()
          affichage de l'état du sommet
 int getCouleur()
          Accesseur sur la couleur
 int getDuree()
          Getter de la durée d'un traitement
 void interprete(java.lang.String s, int i)
          Méthode d'interprétation des messages reçus - Acquittement - Candidat - Couleur - Ok - Erreur
(package private)  void lancerColoration()
          Méthodes permettant de se colorer et de transmettre sa couleur à ses fils Choix de la couleur Si je n'ai pas trouvé de couleur Alors J'envoie un message d'erreur à mon père Sinon Si je n'ai plus de fils Alors j'envoie OK à tous mes voisins colorés Sinon Je diffuse ma couleur à mes fils
 void setNbCouleurs(int k)
          Setter nbCouleurs
(package private)  void sur_Reception_Couleur(int c, int j, int niv)
          Effectue les traitements afférents à la réception d'une couleur Si mon niveau est supérieur au niveau reçu Alors J'ai déjà participé à un processus d'élection Je sauve la couleur reçue Sinon Si je n'ai pas déjà reçu de couleur du sommet Alors Je lance la candidature Sinon (j'ai déjà reçu sa couleur) Si le voisin en question est mon père Alors je lance une coloration (car je sais que je serai l'élu)
private  void sur_Reception_Erreur(int niv)
          Effectue les traitements afférents à une réception de message Erreur (un de mes fils n'a pas réussi à se colorer) - Réinitialise le niveau de traitement - Recommence une coloration
private  void sur_Reception_Ok()
          Effectue les traitements afférents à une réception de message Ok (un de mes fils a réussi à se colorer) Décrémente le nombre de réponse attendues Si j'ai reçu toutes les réponses attendues, j'envoie à tous mes pères le signal que j'ai réussi à me colorer et que tous mes fils sont bien colorés
 
Methods inherited from class graphe.ElectionDistribuee
candidature, sur_Reception_de_Acquittement, sur_Reception_de_Candidat
 
Methods inherited from class graphe.Sommet
cancel, ecrit, getEcrivain, getLecteur, getNbMess, getNbMessCouleur, initTubes, 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

nbCouleurs

private int nbCouleurs
Nombre de couleurs de la coloration


nbRepAtt

private int nbRepAtt
Nombre de couleurs de la coloration


maCouleur

private int maCouleur
numéro de la couleur que j'ai choisie, -1 sinon


couleursLibres

private boolean[] couleursLibres
Tableau de taille le nombre de couleurs (nbCouleurs). Permet de connaître les couleurs occupées par mes voisins déjà coloriés ainsi que les couleurs que j'ai déjà tentées d'utiliser, sans succès


couleursVoisins

private int[] couleursVoisins
Tableau de taille le nombre de voisins (nbvoisins), permet d'associer chacun de mes voisins déjà colorié à sa couleur


strToken

private java.util.StringTokenizer strToken
Utilisé pour interpréter les message


message

private java.lang.String message
Le message reçu


initiateurId

private int initiateurId
L'initiateur du message


etat

public java.lang.String etat
Etat du sommet


nbColoration

private int nbColoration
Nombre de coloration effectuées


nbCouleurReçues

private int[] nbCouleurReçues
Tableau du nombre de couleurs reçues par chaque voisin

Constructor Detail

ColorationDistribuee

public ColorationDistribuee(int i,
                            int nb,
                            boolean[] v,
                            javax.swing.JTextArea out)
Constructeur - sauve le nombre de couleurs de la k-coloration - initialise les couleurs de tous mes voisins à -1 - initialise toutes les couleurs libres à oui

Method Detail

getCouleur

public final int getCouleur()
Accesseur sur la couleur

Returns:
int, la couleur du sommet

setNbCouleurs

public final void setNbCouleurs(int k)
Setter nbCouleurs


getDuree

public final int getDuree()
Getter de la durée d'un traitement

Overrides:
getDuree in class Sommet
Returns:
long

choisirCouleur

private final int choisirCouleur()
Méthode de choix d'une couleur:

Returns:
int, le numéro de la couleur choisie, -1 s'il n'y en a plus

lancerColoration

final void lancerColoration()
                     throws java.io.IOException
Méthodes permettant de se colorer et de transmettre sa couleur à ses fils Choix de la couleur Si je n'ai pas trouvé de couleur Alors J'envoie un message d'erreur à mon père Sinon Si je n'ai plus de fils Alors j'envoie OK à tous mes voisins colorés Sinon Je diffuse ma couleur à mes fils

Specified by:
lancerColoration in class ElectionDistribuee
Throws:
java.io.IOException

sur_Reception_Couleur

final void sur_Reception_Couleur(int c,
                                 int j,
                                 int niv)
                          throws java.io.IOException
Effectue les traitements afférents à la réception d'une couleur Si mon niveau est supérieur au niveau reçu Alors J'ai déjà participé à un processus d'élection Je sauve la couleur reçue Sinon Si je n'ai pas déjà reçu de couleur du sommet Alors Je lance la candidature Sinon (j'ai déjà reçu sa couleur) Si le voisin en question est mon père Alors je lance une coloration (car je sais que je serai l'élu)

Specified by:
sur_Reception_Couleur in class ElectionDistribuee
Throws:
java.io.IOException

sur_Reception_Erreur

private final void sur_Reception_Erreur(int niv)
                                 throws java.io.IOException
Effectue les traitements afférents à une réception de message Erreur (un de mes fils n'a pas réussi à se colorer) - Réinitialise le niveau de traitement - Recommence une coloration

Throws:
java.io.IOException

sur_Reception_Ok

private final void sur_Reception_Ok()
                             throws java.io.IOException
Effectue les traitements afférents à une réception de message Ok (un de mes fils a réussi à se colorer) Décrémente le nombre de réponse attendues Si j'ai reçu toutes les réponses attendues, j'envoie à tous mes pères le signal que j'ai réussi à me colorer et que tous mes fils sont bien colorés

Throws:
java.io.IOException

actualiserCouleurs

private final void actualiserCouleurs(int k,
                                      int c)
Actualise : - le tableau des couleurs libres en fonction de toutes les couleurs des voisins - le nombre de fils : nombre de voisins total moins voisins colorés


interprete

public final void interprete(java.lang.String s,
                             int i)
                      throws java.io.IOException
Méthode d'interprétation des messages reçus - Acquittement - Candidat - Couleur - Ok - Erreur

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

envoiATousMesPeres

final void envoiATousMesPeres(java.lang.String s)
                       throws java.io.IOException
Transfere un message à tous mes pères un père est un voisin coloré

Specified by:
envoiATousMesPeres in class ElectionDistribuee
Throws:
java.io.IOException

envoiATousMesFils

final void envoiATousMesFils(java.lang.String s)
                      throws java.io.IOException
Transfere un message à tous mes fils un fils est un voisin non coloré

Specified by:
envoiATousMesFils in class ElectionDistribuee
Throws:
java.io.IOException

envoiATousMesFilsSaufMonPere

final void envoiATousMesFilsSaufMonPere(java.lang.String s,
                                        int monPere)
                                 throws java.io.IOException
Transfere un message à tous mes fils sauf mon père un fils est un voisin non coloré

Specified by:
envoiATousMesFilsSaufMonPere in class ElectionDistribuee
Throws:
java.io.IOException

etat

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

Overrides:
etat in class ElectionDistribuee