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;
|
import interfaces.ObserverdeCapteur;
|
||||||
|
|
||||||
public class Afficheur implements ObserverdeCapteur {
|
public class Afficheur implements ObserverdeCapteur {
|
||||||
|
|
||||||
//AO1 - concrete servant
|
//AO1 - concrete servant
|
||||||
|
//TODO changer capteur à canal
|
||||||
@Override
|
@Override
|
||||||
public void update(Capteur subject) {
|
public void update(Capteur subject) {
|
||||||
|
subject.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,19 +3,31 @@ package impl;
|
|||||||
import interfaces.Capteur;
|
import interfaces.Capteur;
|
||||||
import interfaces.CapteurAsync;
|
import interfaces.CapteurAsync;
|
||||||
import interfaces.ObserverDeCapteurAsync;
|
import interfaces.ObserverDeCapteurAsync;
|
||||||
|
import interfaces.ObserverdeCapteur;
|
||||||
|
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
|
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
|
//AO1 - proxy
|
||||||
@Override
|
@Override
|
||||||
public Future<?> update(Capteur c) {
|
public Future<?> update(Capteur c) {
|
||||||
return null;
|
return scheduler.enquete(new UpdateReq(capteur,afficher),delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
//AO2 - proxy
|
//AO2 - proxy
|
||||||
@Override
|
@Override
|
||||||
public Future<Integer> getValue() {
|
public Future<Integer> getValue() {
|
||||||
return null;
|
return scheduler.enquete(new GetValueReq(capteur),delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,22 +3,20 @@ package impl;
|
|||||||
import interfaces.AlgoDiffusion;
|
import interfaces.AlgoDiffusion;
|
||||||
import interfaces.Capteur;
|
import interfaces.Capteur;
|
||||||
import interfaces.ObserverDeCapteurAsync;
|
import interfaces.ObserverDeCapteurAsync;
|
||||||
|
|
||||||
import java.time.Clock;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CapteurImpl implements Capteur {
|
public class CapteurImpl implements Capteur {
|
||||||
public Clock clock = Clock.systemUTC();
|
|
||||||
public int value;
|
public int value;
|
||||||
public AlgoDiffusion diffusion;
|
public AlgoDiffusion diffusion;
|
||||||
public List<ObserverDeCapteurAsync> observers;
|
public List<ObserverDeCapteurAsync> observers;
|
||||||
|
|
||||||
|
/*
|
||||||
public CapteurImpl(AlgoDiffusion diffusion) {
|
public CapteurImpl(AlgoDiffusion diffusion) {
|
||||||
value = 0;
|
value = 0;
|
||||||
observers = new ArrayList<>();
|
observers = new ArrayList<>();
|
||||||
this.diffusion = diffusion;
|
this.diffusion = diffusion;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void attach(ObserverDeCapteurAsync o) {
|
public void attach(ObserverDeCapteurAsync o) {
|
||||||
try {
|
try {
|
||||||
@@ -41,8 +39,9 @@ public class CapteurImpl implements Capteur {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
for (ObserverDeCapteurAsync canal : observers) {
|
value++;
|
||||||
canal.update(this);
|
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();
|
public void tick();
|
||||||
|
|
||||||
//AO2 - servant
|
//AO2 - servant
|
||||||
int getValue();
|
public int getValue();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user