package impl;

import interfaces.Capteur;
import interfaces.CapteurAsync;
import interfaces.ObserverDeCapteurAsync;
import interfaces.ObserverdeCapteur;

import java.util.Random;
import java.util.concurrent.Future;

public class Canal implements ObserverDeCapteurAsync, CapteurAsync {
    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() {
        return scheduler.enquete(new UpdateReq(this,afficher),new Random().nextInt(1000)+500);
    }

    //AO2 - proxy
    @Override
    public Future<Integer> getValue() {
        return scheduler.enquete(new GetValueReq(capteur),new Random().nextInt(1000)+500);
    }
}
