Merge branch 'main' of https://gitlab2.istic.univ-rennes1.fr/trochas/alp-projet
This commit is contained in:
@@ -4,8 +4,11 @@ import interfaces.Capteur;
|
||||
import interfaces.ObserverdeCapteur;
|
||||
|
||||
public class Afficheur implements ObserverdeCapteur {
|
||||
|
||||
//AO1 - concrete servant
|
||||
//TODO changer capteur à canal
|
||||
@Override
|
||||
public void update(Capteur subject) {
|
||||
subject.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,19 +3,31 @@ package impl;
|
||||
import interfaces.Capteur;
|
||||
import interfaces.CapteurAsync;
|
||||
import interfaces.ObserverDeCapteurAsync;
|
||||
import interfaces.ObserverdeCapteur;
|
||||
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
||||
private int delay=1000;
|
||||
private Scheduler scheduler;
|
||||
private ObserverdeCapteur afficher;
|
||||
private Capteur capteur ;
|
||||
|
||||
public Canal(Capteur capteur, Scheduler scheduler, ObserverdeCapteur afficher) {
|
||||
this.capteur = capteur;
|
||||
this.scheduler = scheduler;
|
||||
this.afficher = afficher;
|
||||
}
|
||||
|
||||
//AO1 - proxy
|
||||
@Override
|
||||
public Future<?> update(Capteur c) {
|
||||
return null;
|
||||
return scheduler.enquete(new UpdateReq(capteur,afficher),delay);
|
||||
}
|
||||
|
||||
//AO2 - proxy
|
||||
@Override
|
||||
public Future<Integer> getValue() {
|
||||
return null;
|
||||
return scheduler.enquete(new GetValueReq(capteur),delay);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,22 +3,20 @@ package impl;
|
||||
import interfaces.AlgoDiffusion;
|
||||
import interfaces.Capteur;
|
||||
import interfaces.ObserverDeCapteurAsync;
|
||||
|
||||
import java.time.Clock;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CapteurImpl implements Capteur {
|
||||
public Clock clock = Clock.systemUTC();
|
||||
public int value;
|
||||
public AlgoDiffusion diffusion;
|
||||
public List<ObserverDeCapteurAsync> observers;
|
||||
|
||||
/*
|
||||
public CapteurImpl(AlgoDiffusion diffusion) {
|
||||
value = 0;
|
||||
observers = new ArrayList<>();
|
||||
this.diffusion = diffusion;
|
||||
}
|
||||
*/
|
||||
@Override
|
||||
public void attach(ObserverDeCapteurAsync o) {
|
||||
try {
|
||||
@@ -41,8 +39,9 @@ public class CapteurImpl implements Capteur {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
for (ObserverDeCapteurAsync canal : observers) {
|
||||
canal.update(this);
|
||||
value++;
|
||||
for (ObserverDeCapteurAsync obs : observers) {
|
||||
obs.update(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package impl;
|
||||
|
||||
|
||||
public class GetValue {
|
||||
//AO2 - concrete MI
|
||||
public void call() {
|
||||
|
||||
}
|
||||
}
|
||||
17
src/impl/GetValueReq.java
Normal file
17
src/impl/GetValueReq.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package impl;
|
||||
|
||||
import interfaces.Capteur;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
public class GetValueReq implements Callable<Integer> {
|
||||
private Capteur capteur;
|
||||
|
||||
public GetValueReq(Capteur capteur) {
|
||||
this.capteur = capteur;
|
||||
}
|
||||
|
||||
//AO2 - concrete MI
|
||||
public Integer call() {
|
||||
return capteur.getValue();
|
||||
}
|
||||
}
|
||||
16
src/impl/Scheduler.java
Normal file
16
src/impl/Scheduler.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package impl;
|
||||
|
||||
import java.util.concurrent.*;
|
||||
|
||||
public class Scheduler {
|
||||
private final ScheduledExecutorService scheduler;
|
||||
|
||||
public Scheduler(int nbCanaux) {
|
||||
int nThread = 2+2*nbCanaux;
|
||||
scheduler = Executors.newScheduledThreadPool(nThread);
|
||||
}
|
||||
|
||||
public <T> Future<T> enquete(Callable<T> task, long delay) {
|
||||
return scheduler.schedule(task, delay, TimeUnit.MICROSECONDS);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package impl;
|
||||
|
||||
public class Update {
|
||||
//AO1 - concrete MI
|
||||
public void call() {
|
||||
|
||||
}
|
||||
}
|
||||
23
src/impl/UpdateReq.java
Normal file
23
src/impl/UpdateReq.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package impl;
|
||||
|
||||
import interfaces.Capteur;
|
||||
import interfaces.ObserverdeCapteur;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
public class UpdateReq implements Callable<Void> {
|
||||
private Capteur capteur;
|
||||
private ObserverdeCapteur afficheur;
|
||||
|
||||
public UpdateReq(Capteur capteur, ObserverdeCapteur afficheur) {
|
||||
this.capteur = capteur;
|
||||
this.afficheur = afficheur;
|
||||
}
|
||||
|
||||
//AO1 - concrete MI
|
||||
@Override
|
||||
public Void call() {
|
||||
afficheur.update(capteur);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -5,5 +5,5 @@ public interface Capteur {
|
||||
public void tick();
|
||||
|
||||
//AO2 - servant
|
||||
int getValue();
|
||||
public int getValue();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user