package rmblworx.tools.timey;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import rmblworx.tools.timey.vo.TimeDescriptor;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Abstrakte Klasse für alle timey Zeitmessungsimplementierungen.
*
* @author mmatthies
*/
abstract class TimeyTimeRunnable implements Runnable {
/**
* Von dieser Timerimplementierung verwendete Lock-Mechanismus.
*/
protected final Lock lock = new ReentrantLock();
/**
* Differenz zwischen Startzeit und aktueller Zeit.
*/
protected long timeDelta;
/**
* Wertobjekt das die Zeit für die GUI kapselt und liefert.
*/
protected final TimeDescriptor timeDescriptor;
/**
* Beschreibt die vergangene Zeit in Millisekunden.
*/
protected final long timePassed;
/**
* Beschreibt wann der Startvorgang ausgelöst wurde in Millisekunden.
*/
protected final long timeStarted;
/**
* Konstruktor.
*
* @param descriptor
* Zeitwertobjekt.
* @param timePassed
* Die vergangene Zeit.
* @param timeStarted
* Ganzzahliger Wert der den Start der Messung beschreibt.
*/
public TimeyTimeRunnable(final TimeDescriptor descriptor, final long timePassed, final long timeStarted) {
this.timeDescriptor = descriptor;
this.timePassed = timePassed;
this.timeStarted = timeStarted;
}
/**
* Welche Berechnungen diese Methode durchfuehrt, hängt von der jeweiligen Implementierung ab.
*/
protected abstract void computeTime();
}