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 Stoppuhr-Objekts.
*
* @author mmatthies
*/
interface ITimer {
/**
* Setzt die Stoppuhr auf Null.
*
* @return true wenn die Uhr erfolgreich auf Anfang gesetzt werden konnte sonst false.
*/
Boolean resetStopwatch();
/**
* Startet den Stopvorgang.
*
* @param delayPerThread
* Setzt die Verzögerung pro Thread. Die Maßeinheit
* 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 im Konstruktor
* uebergebene Objekt.
*/
TimeDescriptor startStopwatch(int delayPerThread, TimeUnit timeUnit);
/**
* Stoppt die Zeitmessung und beendet den/die gestarteten Threads.
*
* @return true wenn erfolgreich die Uhr angehalten werden konnte sonst false.
*/
Boolean stopStopwatch();
/**
* Versetzt beim ersten Aufruf die Stoppuhr in den TIME-Modus (Zwischenzeitmodus). Die im TimeDescriptor gelieferte
* Zeit wird eingefroren und die Zeitnahme im Hintergrund fortgefuehrt. Beim erneuten Aufruf liefert die Methode
* wieder die aktuelle Zeitmessung.
*
* @return true wenn Time-Modus aktiviert sonst false.
*/
Boolean toggleTimeModeInStopwatch();
}