diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/ledger/DebouncedValue.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/ledger/DebouncedValue.kt | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/src/main/kotlin/moe/nea/ledger/DebouncedValue.kt b/src/main/kotlin/moe/nea/ledger/DebouncedValue.kt deleted file mode 100644 index 66fba8d..0000000 --- a/src/main/kotlin/moe/nea/ledger/DebouncedValue.kt +++ /dev/null @@ -1,38 +0,0 @@ -package moe.nea.ledger - -import kotlin.time.Duration -import kotlin.time.Duration.Companion.nanoseconds -import kotlin.time.Duration.Companion.seconds - -class DebouncedValue<T>(private val value: T) { - companion object { - fun <T> farFuture(): DebouncedValue<T> { - val value = DebouncedValue(Unit) - value.take() - @Suppress("UNCHECKED_CAST") - return value as DebouncedValue<T> - } - } - - val lastSeenAt = System.nanoTime() - val age get() = (System.nanoTime() - lastSeenAt).nanoseconds - var taken = false - private set - - fun get(debounce: Duration): T? { - return if (!taken && age >= debounce) value - else null - } - - fun replace(): T? { - return consume(0.seconds) - } - - fun consume(debounce: Duration): T? { - return get(debounce)?.also { take() } - } - - fun take() { - taken = true - } -}
\ No newline at end of file |