import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import impl.Afficheur;
import impl.Canal;
import impl.CapteurImpl;
import impl.DiffusionAtomique;
import impl.DiffusionEpoque;
import impl.DiffusionSequentielle;
import impl.Scheduler;


public class main {

    static int NB_CANAUX = 3;

    public static void main(String[] argv){
        Scheduler scheduler = new Scheduler(NB_CANAUX);
        CapteurImpl c = new CapteurImpl();

        DiffusionAtomique algoAtom = new DiffusionAtomique(c);
        DiffusionSequentielle algoSeq = new DiffusionSequentielle(c);
        DiffusionEpoque algoEpoq = new DiffusionEpoque(c);
        //algoEpoq.capteur = c;

        c.setAlgoDiffusion(algoEpoq);

        for(int i = 0; i<NB_CANAUX; i++){
            Afficheur afficheur = new Afficheur();
            afficheur.setId(i);
            Canal canal = new Canal(c, scheduler, afficheur);
            c.attach(canal);
        }
         
        ScheduledExecutorService clock =  scheduler.getScheduler();
        clock.scheduleAtFixedRate(() -> c.tick(), 0, 500, TimeUnit.MILLISECONDS);
    }
}
