diff src/org/dancres/util/Timestamp.java @ 0:3dc0c5604566

Initial checkin of blitz 2.0 fcs - no installer yet.
author Dan Creswell <dan.creswell@gmail.com>
date Sat, 21 Mar 2009 11:00:06 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/dancres/util/Timestamp.java	Sat Mar 21 11:00:06 2009 +0000
@@ -0,0 +1,52 @@
+package org.dancres.util;
+
+import java.util.HashMap;
+
+/**
+   Generates timestamps values which can be used to uniquely order events.
+ */
+public class Timestamp {
+    private static HashMap theTimestamps = new HashMap();
+
+    public static Timestamp newTimestamp(String aName) {
+        synchronized(theTimestamps) {
+            if (theTimestamps.get(aName) != null)
+                throw new IllegalArgumentException("Timestamp already exists");
+
+            Timestamp myTimestamp = new Timestamp();
+            theTimestamps.put(aName, myTimestamp);
+
+            return myTimestamp;
+        }
+    }
+
+    public static Timestamp getTimestamp(String aName) {
+        synchronized(theTimestamps) {
+            return (Timestamp) theTimestamps.get(aName);
+        }
+    }
+
+    long theStamp = 0;
+
+    private Timestamp() {
+    }
+
+    /**
+       Returns the last timestamp allocated or zero if none have been
+       allocated yet.
+     */
+    public long get() {
+        synchronized(this) {
+            return theStamp;
+        }
+    }
+
+    /**
+       Return the next timestamp
+     */
+    public long next() {
+        synchronized(this) {
+            return ++theStamp;
+        }
+    }
+}