Line 21... |
Line 21... |
21 |
private int numeroSequence;
|
21 |
private int numeroSequence;
|
22 |
private int marqueurRetour = 1;
|
22 |
private int marqueurRetour = 1;
|
23 |
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
|
23 |
private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
|
Line 24... |
Line 24... |
24 |
|
24 |
|
25 |
public Sequenceur() {
|
- |
|
26 |
this.mediateur = mediateur;
|
- |
|
27 |
//requetes = new LinkedList<Requete>();
|
25 |
public Sequenceur() {
|
28 |
requetes = new HashMap<Integer, Requete>();
|
26 |
requetes = new HashMap<Integer, Requete>();
|
29 |
numeroSequence = 0;
|
27 |
numeroSequence = 0;
|
Line 30... |
Line 28... |
30 |
}
|
28 |
}
|
Line 34... |
Line 32... |
34 |
if (numeroSequence == 0) {
|
32 |
if (numeroSequence == 0) {
|
35 |
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
|
33 |
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
|
36 |
}
|
34 |
}
|
Line 37... |
Line 35... |
37 |
|
35 |
|
38 |
numeroSequence++;
|
36 |
numeroSequence++;
|
39 |
System.out.println("lancer Requete " + numeroSequence);
|
37 |
if (Mediateur.DEBUG) System.out.println("==> Sequenceur : Envoi requete n°" + numeroSequence);
|
40 |
Requete requete = new Requete(vueARafraichir, numeroSequence);
|
- |
|
41 |
//requetes.add(requete);
|
38 |
Requete requete = new Requete(vueARafraichir, numeroSequence);
|
- |
|
39 |
requetes.put(numeroSequence, requete);
|
42 |
requetes.put(numeroSequence, requete);
|
40 |
|
43 |
return numeroSequence;
|
41 |
return numeroSequence;
|
Line 44... |
Line 42... |
44 |
}
|
42 |
}
|
45 |
|
43 |
|
46 |
//Offrir la possibilité d'empiler à la suite des traitements un rafraichissement dont on a déjà le retour
|
44 |
//Offrir la possibilité d'empiler à la suite des traitements un rafraichissement dont on a déjà le retour
|
47 |
public int empilerRafraichissement(Rafraichissable vueARafraichir, Object nouvellesDonnees) {
|
45 |
public int empilerRafraichissement(Rafraichissable vueARafraichir, Object nouvellesDonnees) {
|
48 |
if (numeroSequence == 0) {
|
46 |
if (numeroSequence == 0) {
|
49 |
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
|
47 |
mediateur.activerChargement("Chargement en cours... Veuillez patienter");
|
50 |
}
|
48 |
}
|
51 |
numeroSequence++;
|
49 |
numeroSequence++;
|
52 |
System.out.println("empiler " + numeroSequence);
|
50 |
if (Mediateur.DEBUG) System.out.println("|| Sequenceur : Empiler n°" + numeroSequence);
|
53 |
Requete requete = new Requete(vueARafraichir, numeroSequence);
|
51 |
Requete requete = new Requete(vueARafraichir, numeroSequence);
|
54 |
Reponse reponse = new Reponse(nouvellesDonnees, numeroSequence);
|
52 |
Reponse reponse = new Reponse(nouvellesDonnees, numeroSequence);
|
- |
|
53 |
requetes.put(numeroSequence, requete);
|
55 |
requetes.put(numeroSequence, requete);
|
54 |
rafraichir(reponse);
|
56 |
rafraichir(reponse);
|
55 |
mediateur.desactiverChargement();
|
Line 57... |
Line 56... |
57 |
return numeroSequence;
|
56 |
return numeroSequence;
|
58 |
}
|
57 |
}
|
59 |
|
58 |
|
60 |
public void rafraichir(Object nouvellesDonnees) {
|
59 |
public void rafraichir(Object nouvellesDonnees) {
|
61 |
|
60 |
|
Line 62... |
Line 61... |
62 |
try {
|
61 |
try {
|
63 |
Reponse reponse = (Reponse) nouvellesDonnees;
|
62 |
Reponse reponse = (Reponse) nouvellesDonnees;
|
64 |
System.out.println("rafraichir " + reponse.obtenirNumeroSequence() + " marqueur retour " + marqueurRetour);
|
63 |
if (Mediateur.DEBUG) System.out.println("<== Sequenceur : Réception d'une réponse, n°" + reponse.obtenirNumeroSequence() + ", marqueur retour " + marqueurRetour);
|
- |
|
64 |
|
65 |
|
65 |
if (reponse.obtenirNumeroSequence() == marqueurRetour) {
|
66 |
if (reponse.obtenirNumeroSequence() == marqueurRetour) {
|
66 |
// Si le numéro de séquence du retour correspond au marqueur, on rafraichit
|
67 |
// Si le numéro de séquence du retour correspond au marqueur, on rafraichit
|
67 |
Requete requete = requetes.get(marqueurRetour);
|
68 |
Requete requete = requetes.get(marqueurRetour);
|
68 |
if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+reponse.obtenirNumeroSequence()+" à "+requete.getVueARafraichir().getClass().toString());
|
69 |
requete.setRetour(reponse);
|
69 |
requete.rafraichir(reponse.obtenirRetour());
|
70 |
requete.rafraichir();
|
70 |
mediateur.desactiverChargement();
|
71 |
requetes.remove(marqueurRetour);
|
71 |
requetes.remove(marqueurRetour);
|
72 |
marqueurRetour++;
|
72 |
marqueurRetour++;
|
73 |
avancerSequence();
|
- |
|
74 |
} else {
|
- |
|
75 |
// Sinon, on enregistre le retour
|
- |
|
76 |
requetes.get(reponse.obtenirNumeroSequence()).setRetour(reponse);
|
73 |
avancerSequence();
|
77 |
|
74 |
} else {
|
- |
|
75 |
// Sinon, on enregistre le retour
|
- |
|
76 |
requetes.get(reponse.obtenirNumeroSequence()).setRetour(reponse);
|
78 |
// Vérifier que les requetes précédentes ont été exécutées si elles ont eues un retour
|
77 |
}
|
- |
|
78 |
} catch (ClassCastException e) {
|
- |
|
79 |
if (Mediateur.DEBUG) {
|
- |
|
80 |
System.out.println("<== Sequenceur : Réception d'une réponse incorrecte");
|
79 |
//avancerSequence();
|
81 |
System.out.println(" Le séquenceur ne peut recevoir que des Reponse");
|
80 |
}
|
82 |
System.out.println(" > nouvellesDonnees = "+nouvellesDonnees.getClass().toString());
|
Line 81... |
Line 83... |
81 |
} catch (ClassCastException e) {
|
83 |
}
|
82 |
Debug.log("Le séquencuer ne peut recevoir que des Reponse");
|
84 |
mediateur.desactiverChargement();
|
83 |
}
|
85 |
}
|
Line 84... |
Line 86... |
84 |
}
|
86 |
}
|
85 |
|
87 |
|
- |
|
88 |
public int obtenirNumeroSequence() {
|
86 |
public int obtenirNumeroSequence() {
|
89 |
return this.numeroSequence;
|
87 |
return this.numeroSequence;
|
- |
|
88 |
}
|
90 |
}
|
- |
|
91 |
|
89 |
|
92 |
public void avancerSequence() {
|
- |
|
93 |
if (requetes.size()>0) {
|
90 |
public void avancerSequence() {
|
94 |
// on récupère la première requete dans la file
|
91 |
if (requetes.size()>0) {
|
95 |
Requete premiereRequete = requetes.get(marqueurRetour);
|
92 |
Requete premiereRequete = requetes.get(marqueurRetour);
|
96 |
if (premiereRequete!=null && premiereRequete.hasResponse()) {
|
93 |
System.out.println("premiere Requete " + premiereRequete );
|
97 |
if (Mediateur.DEBUG) System.out.println("<|-- Sequenceur : Retourne paquet n°"+premiereRequete.obtenirReponse().obtenirNumeroSequence()+" à "+premiereRequete.getVueARafraichir().getClass().toString());
|
94 |
if (premiereRequete!=null && premiereRequete.aRetour()) {
|
- |
|
95 |
premiereRequete.rafraichir();
|
- |
|
96 |
requetes.remove(marqueurRetour);
|
98 |
premiereRequete.rafraichir();
|
97 |
marqueurRetour++;
|
- |
|
98 |
avancerSequence();
|
99 |
mediateur.desactiverChargement();
|
Line 99... |
Line 100... |
99 |
}
|
100 |
requetes.remove(marqueurRetour);
|