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 // ----------------------------------------------------------------------------