From 3054f3a78ec467b032f2309222a3658ed3246977 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 31 Dec 2020 15:29:46 +0100 Subject: Update to kotlinx-coroutines 1.4.2 --- simulator/buildSrc/src/main/kotlin/library.kt | 2 +- .../kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'simulator') diff --git a/simulator/buildSrc/src/main/kotlin/library.kt b/simulator/buildSrc/src/main/kotlin/library.kt index af278a07..6735c110 100644 --- a/simulator/buildSrc/src/main/kotlin/library.kt +++ b/simulator/buildSrc/src/main/kotlin/library.kt @@ -45,5 +45,5 @@ object Library { /** * Kotlin coroutines support */ - val KOTLINX_COROUTINES = "1.3.9" + val KOTLINX_COROUTINES = "1.4.2" } diff --git a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt index c6d5bdd1..4340708f 100644 --- a/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt +++ b/simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt @@ -95,6 +95,8 @@ public class SimBareMetalMachine( return object : SelectClause0 { @InternalCoroutinesApi override fun registerSelectClause0(select: SelectInstance, block: suspend () -> R) { + val context = select.completion.context + // Do not reset the usage state: we will set it ourselves usageFlush?.dispose() usageFlush = null @@ -139,7 +141,7 @@ public class SimBareMetalMachine( } // Schedule the flush after the entire slice has finished - currentDisposable = delay.invokeOnTimeout(duration, action) + currentDisposable = delay.invokeOnTimeout(duration, action, context) // Start the slice work currentWork = work @@ -158,11 +160,13 @@ public class SimBareMetalMachine( currentWork?.stop(duration) currentDisposable?.dispose() - // Schedule reset the usage of the machine since the call is returning - usageFlush = delay.invokeOnTimeout(1) { + val action = { usageState.value = 0.0 usageFlush = null } + + // Schedule reset the usage of the machine since the call is returning + usageFlush = delay.invokeOnTimeout(1, action, context) } select.disposeOnSelect(disposable) -- cgit v1.2.3