From e2d0f5d9c38561d67f23754c00addb4a3547efb2 Mon Sep 17 00:00:00 2001 From: Stiver Date: Tue, 4 Mar 2014 15:13:11 +0100 Subject: initial commit --- timer/com/vladium/utils/timing/TimerFactory.java | 74 ++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 timer/com/vladium/utils/timing/TimerFactory.java (limited to 'timer/com/vladium/utils/timing/TimerFactory.java') diff --git a/timer/com/vladium/utils/timing/TimerFactory.java b/timer/com/vladium/utils/timing/TimerFactory.java new file mode 100644 index 0000000..ae127c5 --- /dev/null +++ b/timer/com/vladium/utils/timing/TimerFactory.java @@ -0,0 +1,74 @@ + +package com.vladium.utils.timing; + +// ---------------------------------------------------------------------------- +/** + * This non-instantiable non-extendible class acts as a Factory for {@link ITimer} + * implementations. + * + * @author (C) Vlad Roubtsov, 2002 + */ +public abstract class TimerFactory +{ + // public: ................................................................ + + private static final String HRTIMER_LIB = "hrtlib"; + + /** + * Creates a new instance of {@link ITimer} which is returned in 'ready' + * state. If the JNI-based/high-resolution implementation is not available + * this will return an instance of JavaSystemTimer, so this + * method is guaranteed not to fail. + * + * @return ITimer a new timer instance in 'ready' state [never null] */ + + public static void initialize(String path) { + + UnsatisfiedLinkError exception = null; + + try { + System.loadLibrary (HRTIMER_LIB); + } catch (UnsatisfiedLinkError e) { + if(path != null) { + try { + System.load(path); + } catch (UnsatisfiedLinkError ex) { + exception = ex; + } + } else { + exception = e; + } + } + + if(exception != null) { + System.out.println ("native lib '" + HRTIMER_LIB + + "' not found in 'java.library.path': " + + System.getProperty ("java.library.path") + +path==null?"":(" or in "+path)); + + throw exception; // re-throw + } + } + + public static ITimer newTimer () + { +// try +// { + return new HRTimer (); +// } +// catch (Throwable t) +// { +// return new JavaSystemTimer (); +// } + } + + // protected: ............................................................. + + // package: ............................................................... + + // private: ............................................................... + + private TimerFactory () {} // prevent subclassing + +} // end of class +// ---------------------------------------------------------------------------- -- cgit v1.2.3