summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-12-31 15:29:46 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-12-31 15:29:46 +0100
commit3054f3a78ec467b032f2309222a3658ed3246977 (patch)
treee3165ce49d874d636d0f10c52ec324337650125f
parent4eabdea0eeceac91debf896cc8d7e0ef9d3e9c82 (diff)
Update to kotlinx-coroutines 1.4.2
-rw-r--r--simulator/buildSrc/src/main/kotlin/library.kt2
-rw-r--r--simulator/opendc-simulator/opendc-simulator-compute/src/main/kotlin/org/opendc/simulator/compute/SimBareMetalMachine.kt10
2 files changed, 8 insertions, 4 deletions
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 <R> registerSelectClause0(select: SelectInstance<R>, 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)