algoDiffusion
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user