summaryrefslogtreecommitdiffstats
path: root/timer/com/vladium/utils/timing/ITimer.java
diff options
context:
space:
mode:
Diffstat (limited to 'timer/com/vladium/utils/timing/ITimer.java')
-rw-r--r--timer/com/vladium/utils/timing/ITimer.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/timer/com/vladium/utils/timing/ITimer.java b/timer/com/vladium/utils/timing/ITimer.java
new file mode 100644
index 0000000..98029b1
--- /dev/null
+++ b/timer/com/vladium/utils/timing/ITimer.java
@@ -0,0 +1,54 @@
+
+package com.vladium.utils.timing;
+
+// ----------------------------------------------------------------------------
+/**
+ * A simple interface for measuring time intervals. An instance of this goes
+ * through the following lifecycle states:
+ * <DL>
+ * <DT> <EM>ready</EM>
+ * <DD> timer is ready to start a new measurement
+ * <DT> <EM>started</EM>
+ * <DD> timer has recorded the starting time interval point
+ * <DT> <EM>stopped</EM>
+ * <DD> timer has recorded the ending time interval point
+ * </DL>
+ * See individual methods for details.<P>
+ *
+ * If this library has been compiled with {@link ITimerConstants#DO_STATE_CHECKS}
+ * set to 'true' the implementation will enforce this lifecycle model and throw
+ * IllegalStateException when it is violated.
+ *
+ * @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 2002
+ */
+public interface ITimer
+{
+ // public: ................................................................
+
+ /**
+ * Starts a new time interval and advances this timer instance to 'started'
+ * state. This method can be called from 'ready' state only. */
+ void start ();
+
+ /**
+ * Terminates the current time interval and advances this timer instance to
+ * 'stopped' state. Interval duration will be available via
+ * {@link #getDuration()} method. This method can be called from 'started'
+ * state only. */
+ void stop ();
+
+ /**
+ * Returns the duration of the time interval that elapsed between the last
+ * calls to {@link #start()} and {@link #stop()}. This method can be called
+ * any number of times from 'stopped' state and will return the same value
+ * each time.<P>
+ * * @return interval duration in milliseconds */
+ double getDuration ();
+
+ /**
+ * This method can be called from any state and will reset this timer
+ * instance back to 'ready' state. */
+ void reset ();
+
+} // end of interface
+// ----------------------------------------------------------------------------