mirror of
https://github.com/moparisthebest/fernflower
synced 2024-11-30 04:52:22 -05:00
75 lines
2.0 KiB
Java
75 lines
2.0 KiB
Java
|
|
||
|
package com.vladium.utils.timing;
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
/**
|
||
|
* This non-instantiable non-extendible class acts as a Factory for {@link ITimer}
|
||
|
* implementations.
|
||
|
*
|
||
|
* @author (C) <a href="mailto:vroubtsov@illinoisalumni.org">Vlad Roubtsov</a>, 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 <code>JavaSystemTimer</code>, 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
|
||
|
// ----------------------------------------------------------------------------
|