Update Capteur -> CanalAsync in Afficheur.java
This commit is contained in:
@@ -7,26 +7,17 @@ import java.util.Random;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class Afficheur implements ObserverdeCapteur {
|
||||
private Canal canalAsync;
|
||||
private int id= new Random().nextInt(100);
|
||||
|
||||
public Afficheur() {}
|
||||
|
||||
public Afficheur(Canal canalAsync) {
|
||||
this.canalAsync = canalAsync;
|
||||
}
|
||||
|
||||
public void setCanal(Canal canal){
|
||||
this.canalAsync = canal;
|
||||
}
|
||||
|
||||
public void setId(int id){
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
//AO1 - concrete servant
|
||||
@Override
|
||||
public void update(Capteur subject) {
|
||||
public void update(Canal canalAsync) {
|
||||
try{
|
||||
Future<Integer> futureValue= canalAsync.getValue();
|
||||
Integer value=futureValue.get();
|
||||
|
||||
@@ -21,8 +21,8 @@ public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
||||
|
||||
//AO1 - proxy
|
||||
@Override
|
||||
public Future<?> update(Capteur c) {
|
||||
return scheduler.enquete(new UpdateReq(capteur,afficher),new Random().nextInt(1000)+500);
|
||||
public Future<?> update() {
|
||||
return scheduler.enquete(new UpdateReq(this,afficher),new Random().nextInt(1000)+500);
|
||||
}
|
||||
|
||||
//AO2 - proxy
|
||||
|
||||
@@ -43,7 +43,7 @@ public class CapteurImpl implements Capteur {
|
||||
public void tick() {
|
||||
value++;
|
||||
for (ObserverDeCapteurAsync canal : observers) {
|
||||
canal.update(this);
|
||||
canal.update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,6 @@ public class Scheduler {
|
||||
}
|
||||
|
||||
public <T> Future<T> enquete(Callable<T> task, long delay) {
|
||||
return scheduler.schedule(task, delay, TimeUnit.MICROSECONDS);
|
||||
return scheduler.schedule(task, delay, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,18 +6,18 @@ import interfaces.ObserverdeCapteur;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
public class UpdateReq implements Callable<Void> {
|
||||
private Capteur capteur;
|
||||
private Canal canalAsync;
|
||||
private ObserverdeCapteur afficheur;
|
||||
|
||||
public UpdateReq(Capteur capteur, ObserverdeCapteur afficheur) {
|
||||
this.capteur = capteur;
|
||||
public UpdateReq(Canal canalAsync, ObserverdeCapteur afficheur) {
|
||||
this.canalAsync = canalAsync;
|
||||
this.afficheur = afficheur;
|
||||
}
|
||||
|
||||
//AO1 - concrete MI
|
||||
@Override
|
||||
public Void call() {
|
||||
afficheur.update(capteur);
|
||||
afficheur.update(canalAsync);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -4,5 +4,5 @@ import java.util.concurrent.Future;
|
||||
|
||||
public interface ObserverDeCapteurAsync {
|
||||
//AO1 - service
|
||||
Future<?> update(Capteur c);
|
||||
Future<?> update();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package interfaces;
|
||||
import impl.Canal;
|
||||
|
||||
public interface ObserverdeCapteur{
|
||||
//AO1 - servant
|
||||
public void update(Capteur subject);
|
||||
public void update(Canal canalAsync);
|
||||
}
|
||||
|
||||
@@ -12,26 +12,16 @@ import interfaces.ObserverdeCapteur;
|
||||
|
||||
public class main {
|
||||
|
||||
static int NB_CANAUX = 10;
|
||||
static int NB_CANAUX = 2;
|
||||
|
||||
public static void main(String[] argv){
|
||||
Scheduler scheduler = new Scheduler(NB_CANAUX);
|
||||
Capteur c = new CapteurImpl();
|
||||
|
||||
/*
|
||||
Afficheur a=new Afficheur();
|
||||
Canal canal=new Canal(c,scheduler,a);
|
||||
a.setCanal(canal);
|
||||
|
||||
c.attach(canal);
|
||||
*/
|
||||
|
||||
|
||||
for(int i = 0; i<NB_CANAUX; i++){
|
||||
Afficheur afficheur = new Afficheur();
|
||||
afficheur.setId(i);
|
||||
Canal canal = new Canal(c, scheduler, afficheur);
|
||||
afficheur.setCanal(canal);
|
||||
c.attach(canal);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user