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

View File

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