package rmblworx.tools.timey;
import java.util.concurrent.TimeUnit;
import rmblworx.tools.timey.vo.TimeDescriptor;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Einfach ausgelegte Schnittstelle für die Implementierung eines Countdown-Objekts das die konkrete Zeitmessung
* implementiert.
*
* @author mmatthies
*/
interface ICountdownTimer {
/**
* Setzt den Startwert für den Countdown.
*
* @param descriptor
* Referenz auf das Werteobjekt das die darzustellende Zeit kapselt.
* @return true wenn die Ausgangszeit erfolgreich gesetzt werden konnte.
*/
Boolean setCountdownTime(TimeDescriptor descriptor);
/**
* Startet den Countdown.
*
* @param delayPerThread
* Setzt die Verzögerung pro Thread. Die Maszeinheit
* wird mittels des TimeUnit-Enum gesetzt.
* @param timeUnit
* Setzt die zu verwendende Zeiteinheit für die
* wiederholte Aktualisierung des Werteobjekts.
* @return Referenz auf das Wertobjekt das die darzustellende Zeit
* kapselt. Es handelt sich hierbei um das ueber
* {@link #setCountdownTime(TimeDescriptor)} uebergebene Objekt.
*/
TimeDescriptor startCountdown(int delayPerThread, TimeUnit timeUnit);
/**
* Stoppt den Countdown und beendet den/die gestarteten Threads.
*
* @return true wenn erfolgreich die Uhr angehalten werden konnte sonst false.
*/
Boolean stopCountdown();
}