ComparableTimeMark and specialized TimeSource KT-54082
- Introduce ComparableTimeMark interface extending TimeMark, and TimeSource.WithComparableMarks - a time source that returns such time marks. - Implement ComparableTimeMark in ValueTimeMark and AbstractLong/DoubleTimeMark classes.
This commit is contained in:
@@ -20,7 +20,7 @@ private external fun dateNow(): Double
|
||||
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
internal actual object MonotonicTimeSource : TimeSource {
|
||||
internal actual object MonotonicTimeSource : TimeSource.WithComparableMarks {
|
||||
private val performance: ExternalInterfaceType? = tryGetPerformance()
|
||||
|
||||
private fun read(): Double =
|
||||
@@ -31,6 +31,12 @@ internal actual object MonotonicTimeSource : TimeSource {
|
||||
actual fun adjustReading(timeMark: ValueTimeMark, duration: Duration): ValueTimeMark =
|
||||
ValueTimeMark(sumCheckNaN(timeMark.reading as Double + duration.toDouble(DurationUnit.MILLISECONDS)))
|
||||
|
||||
actual fun differenceBetween(one: ValueTimeMark, another: ValueTimeMark): Duration {
|
||||
val ms1 = one.reading as Double
|
||||
val ms2 = another.reading as Double
|
||||
return if (ms1 == ms2) Duration.ZERO else (ms1 - ms2).milliseconds
|
||||
}
|
||||
|
||||
override fun toString(): String =
|
||||
if (performance != null) "TimeSource(globalThis.performance.now())" else "TimeSource(Date.now())"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user