package impl;

import java.util.concurrent.Future;

import interfaces.AlgoDiffusion;
import interfaces.ObserverDeCapteurAsync;

public class DiffusionEpoque implements AlgoDiffusion {

    public CapteurImpl capteur;
    private Future<?>[] futures;

    public DiffusionEpoque(CapteurImpl c){
        this.capteur = c;
        this.futures = new Future<?>[capteur.observers.size()];
    }


    @Override
    public int getValue() {
        return this.capteur.getValue();
    }

    @Override
    public void execute() {
        int i = 0;
        for (ObserverDeCapteurAsync canal : capteur.observers) {
            if(futures[i]==null || futures[i].isDone()){
                futures[i] = canal.update();
            }
            i++;
        }
    }

}
