algoDiffusion

This commit is contained in:
trochas
2025-11-07 12:52:07 +01:00
parent 2b981c63e5
commit 4daba25d6e
2 changed files with 25 additions and 8 deletions

View File

@@ -8,9 +8,10 @@ import java.util.ArrayList;
import java.util.List;
public class CapteurImpl implements Capteur {
public int value;
public AlgoDiffusion diffusion;
public List<ObserverDeCapteurAsync> observers=new ArrayList<ObserverDeCapteurAsync>();
private int value;
private AlgoDiffusion diffusion;
protected List<ObserverDeCapteurAsync> observers=new ArrayList<ObserverDeCapteurAsync>();
private Boolean locker;
@Override
public void attach(ObserverDeCapteurAsync o) {
@@ -24,12 +25,18 @@ public class CapteurImpl implements Capteur {
@Override
public void tick() {
value++;
for (ObserverDeCapteurAsync canal : observers) {
canal.update(this);
if(!locker){
diffusion.execute();
}
}
public void lock(){
locker = false;
}
public void unlock(){
locker = true;
}
//AO2 - Concrete Servant
@Override
public int getValue() {

View File

@@ -1,9 +1,16 @@
package impl;
import java.util.ArrayList;
import java.util.List;
import interfaces.AlgoDiffusion;
import interfaces.Capteur;
import interfaces.ObserverDeCapteurAsync;
public class DiffusionAtomique implements AlgoDiffusion {
public CapteurImpl capteur;
@Override
public void configure() {
// TODO Auto-generated method stub
@@ -12,7 +19,10 @@ public class DiffusionAtomique implements AlgoDiffusion {
@Override
public void execute() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'execture'");
capteur.lock(); //TODO unlock
List<ObserverDeCapteurAsync> canaux = capteur.observers;
for (ObserverDeCapteurAsync canal : canaux) {
canal.update(this.capteur);
}
}
}