diff --git a/src/impl/Afficheur.java b/src/impl/Afficheur.java index 67a7bda..43b445a 100644 --- a/src/impl/Afficheur.java +++ b/src/impl/Afficheur.java @@ -2,13 +2,31 @@ package impl; import interfaces.Capteur; import interfaces.ObserverdeCapteur; +import java.util.concurrent.Future; public class Afficheur implements ObserverdeCapteur { + private Canal canalAsync; + + public Afficheur() {} + + public Afficheur(Canal canalAsync) { + this.canalAsync = canalAsync; + } + + public void setCanal(Canal canal){ + this.canalAsync = canal; + } //AO1 - concrete servant - //TODO changer capteur à canal @Override public void update(Capteur subject) { - subject.getValue(); + try{ + Future futureValue= canalAsync.getValue(); + Integer value=futureValue.get(); + System.out.println(value); + }catch(Exception e){ + //TODO + e.printStackTrace(); + } } } diff --git a/src/impl/Canal.java b/src/impl/Canal.java index 83001d9..5ac1258 100644 --- a/src/impl/Canal.java +++ b/src/impl/Canal.java @@ -11,9 +11,9 @@ public class Canal implements ObserverDeCapteurAsync, CapteurAsync { private int delay=1000; private Scheduler scheduler; private ObserverdeCapteur afficher; - private Capteur capteur ; + private Capteur capteur; - public Canal(Capteur capteur, Scheduler scheduler, ObserverdeCapteur afficher) { + public Canal(Capteur capteur, Scheduler scheduler, ObserverdeCapteur afficher) { this.capteur = capteur; this.scheduler = scheduler; this.afficher = afficher; diff --git a/src/impl/CapteurImpl.java b/src/impl/CapteurImpl.java index 894a45e..2efe926 100644 --- a/src/impl/CapteurImpl.java +++ b/src/impl/CapteurImpl.java @@ -3,12 +3,14 @@ package impl; import interfaces.AlgoDiffusion; import interfaces.Capteur; import interfaces.ObserverDeCapteurAsync; + +import java.util.ArrayList; import java.util.List; public class CapteurImpl implements Capteur { public int value; public AlgoDiffusion diffusion; - public List observers; + public List observers=new ArrayList(); /* public CapteurImpl(AlgoDiffusion diffusion) { @@ -40,15 +42,14 @@ public class CapteurImpl implements Capteur { @Override public void tick() { value++; - for (ObserverDeCapteurAsync obs : observers) { - obs.update(this); + for (ObserverDeCapteurAsync canal : observers) { + canal.update(this); } } //AO2 - Concrete Servant @Override public int getValue() { - return 0; + return this.value; } - } diff --git a/src/main.java b/src/main.java index fcc18f2..2596bfe 100644 --- a/src/main.java +++ b/src/main.java @@ -1,4 +1,7 @@ import java.util.Timer; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import impl.Afficheur; import impl.Canal; @@ -15,13 +18,19 @@ public class main { Scheduler scheduler = new Scheduler(NB_CANAUX); Capteur c = new CapteurImpl(); - for(int i = 0; i c.tick(), 0, 500, TimeUnit.MILLISECONDS); } }