package projects.coloriage.nodes.timers;

import projects.coloriage.nodes.nodeImplementations.CNode;
import projects.coloriage.nodes.messages.*;
import sinalgo.nodes.timers.Timer;

/*
 * Description de l'unique timer utilis dans l'application
 */

public class CTimer extends Timer {
	CNode sender;
	int interval;
	
	public CTimer(CNode sender, int interval) {
		this.sender = sender;
		this.interval = interval;
	}
	
	/* La fonction "fire" est appele lorsque le timer expire
	 */
	
	public void fire() {
		// le noeud cre un message contenant sa couleur
		CMessage msg= new CMessage(sender.ID,sender.getCouleur());
		// le noeud envoie le message  tous ses voisins
	    sender.broadcast(msg);
	    // le noeud relance un nouveau timer
		this.startRelative(interval, node); // recursive restart of the timer
	}
}
