package ckelling.baukasten;

import java.lang.*;


// Versionsgeschichte
// 0.6.0, 28.08.96
// 0.6.1, 15.08.97  Name mit setName() eingestellt.

/**
 *	TimerThread.java
 *
 *	Hat einen Namen, wacht nach einstellbarer Zeit auf und
 *	benachrichtigt seinen 'parent' (in der Methode timerWokeUp()).
 *
 *	@author		Carsten Kelling
 *	@version	0.6.1, 15.08.97
 */
public class TimerThread extends Thread
{

	private int 	delay;
	private String	title;
	private Rechner parent;
	private SystemMessage parentSystemMessage;

	/**
	 * Jeweils nach "del" ms wird par.timerWokeUp(str) aufgerufen.
	 *
	 * @param del Zeit in ms, nach der der TimerThread aufwacht.
	 * @param Name des TimerThreads
	 * @par Der zu benachrichtigende Rechner
	 */ 
	public TimerThread(int del, String str, Rechner par)
	{
		super();
		delay = del;
		title = str;
		parent = par;
		parentSystemMessage = null;
		setName("TimerThread \"" + title + "\"");

		// System.out.println("TimerThread instanziiert.");
	} /* end TimerThread */


	/**
	 * Jeweils nach "del" ms wird par.timerWokeUp(str) aufgerufen.
	 *
	 * @param del Zeit in ms, nach der der TimerThread aufwacht.
	 * @param Name des TimerThreads
	 * @par Die zu benachrichtigende SystemMessage
	 */ 
	public TimerThread(int del, String str, SystemMessage par)
	{
		super();
		delay = del;
		title = str;
		parentSystemMessage = par;

		// System.out.println("TimerThread instanziiert.");
	} /* end TimerThread */

	public void run()
	{
		while (true)
		{
			try
			{
				sleep((long) delay);
			} catch (InterruptedException e) {};

			// System.out.println("TimerThread '" + title + "' ist aufgewacht.");
			if (parentSystemMessage == null)
				parent.timerWokeUp(title);
			else
				parentSystemMessage.timerWokeUp(title);
		}
	}
} /* end TimerThread */

