Package org.apache.solr.common.util
Class TimeSource.SimTimeSource
- java.lang.Object
-
- org.apache.solr.common.util.TimeSource
-
- org.apache.solr.common.util.TimeSource.SimTimeSource
-
- Enclosing class:
- TimeSource
public static final class TimeSource.SimTimeSource extends TimeSource
Implementation that usesTimeSource.NANO_TIME
accelerated by a double multiplier.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.common.util.TimeSource
TimeSource.CurrentTimeSource, TimeSource.NanoTimeSource, TimeSource.SimTimeSource
-
-
Field Summary
-
Fields inherited from class org.apache.solr.common.util.TimeSource
CURRENT_TIME, NANO_TIME
-
-
Constructor Summary
Constructors Constructor Description SimTimeSource(double multiplier)
Create a simulated time source that runs faster than real time by a multiplier.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
convertDelay(TimeUnit fromUnit, long value, TimeUnit toUnit)
This method allows using TimeSource with APIs that require providing just plain time intervals, eg.long
getEpochTimeNs()
Return Epoch time.long[]
getTimeAndEpochNs()
Return both the source's time value and the corresponding epoch time value.long
getTimeNs()
Return a time value, in nanosecond units.void
sleep(long ms)
Sleep according to this source's notion of time.String
toString()
-
Methods inherited from class org.apache.solr.common.util.TimeSource
get
-
-
-
-
Method Detail
-
getTimeNs
public long getTimeNs()
Description copied from class:TimeSource
Return a time value, in nanosecond units. Depending on implementation this value may or may not be related to Epoch time.- Specified by:
getTimeNs
in classTimeSource
-
getEpochTimeNs
public long getEpochTimeNs()
Description copied from class:TimeSource
Return Epoch time. Implementations that are not natively based on epoch time may return values that are consistently off by a (small) fixed number of milliseconds from the actual epoch time.- Specified by:
getEpochTimeNs
in classTimeSource
-
getTimeAndEpochNs
public long[] getTimeAndEpochNs()
Description copied from class:TimeSource
Return both the source's time value and the corresponding epoch time value. This method ensures that epoch time calculations use the same internal value of time as that reported byTimeSource.getTimeNs()
.- Specified by:
getTimeAndEpochNs
in classTimeSource
- Returns:
- an array where the first element is
TimeSource.getTimeNs()
and the second element isTimeSource.getEpochTimeNs()
.
-
sleep
public void sleep(long ms) throws InterruptedException
Description copied from class:TimeSource
Sleep according to this source's notion of time. Eg. accelerated time source such asTimeSource.SimTimeSource
will sleep proportionally shorter, according to its multiplier.- Specified by:
sleep
in classTimeSource
- Parameters:
ms
- number of milliseconds to sleep- Throws:
InterruptedException
- when the current thread is interrupted
-
convertDelay
public long convertDelay(TimeUnit fromUnit, long value, TimeUnit toUnit)
Description copied from class:TimeSource
This method allows using TimeSource with APIs that require providing just plain time intervals, eg.Object.wait(long)
. Values returned by this method are adjusted according to the time source's notion of time - eg. accelerated time source provided byTimeSource.SimTimeSource
will return intervals that are proportionally shortened by the multiplier.NOTE: converting small values may significantly affect precision of the returned values due to rounding, especially for accelerated time source, so care should be taken to use time units that result in relatively large values. For example, converting a value of 1 expressed in seconds would result in less precision than converting a value of 1000 expressed in milliseconds.
- Specified by:
convertDelay
in classTimeSource
- Parameters:
fromUnit
- source unitvalue
- original valuetoUnit
- target unit- Returns:
- converted value, possibly scaled by the source's notion of accelerated time (see
TimeSource.SimTimeSource
)
-
toString
public String toString()
- Overrides:
toString
in classTimeSource
-
-