summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-power/src
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-simulator/opendc-simulator-power/src')
-rw-r--r--opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimPdu.kt15
-rw-r--r--opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimUps.kt15
2 files changed, 12 insertions, 18 deletions
diff --git a/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimPdu.kt b/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimPdu.kt
index e8839496..b0ea7f0a 100644
--- a/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimPdu.kt
+++ b/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimPdu.kt
@@ -47,16 +47,13 @@ public class SimPdu(
public fun newOutlet(): Outlet = Outlet(distributor.newOutput())
override fun createConsumer(): SimResourceConsumer = object : SimResourceConsumer by distributor {
- override fun onNext(ctx: SimResourceContext, now: Long, delta: Long): SimResourceCommand {
- return when (val cmd = distributor.onNext(ctx, now, delta)) {
- is SimResourceCommand.Consume -> {
- val loss = computePowerLoss(cmd.limit)
- val newLimit = cmd.limit + loss
+ override fun onNext(ctx: SimResourceContext, now: Long, delta: Long): Long {
+ val duration = distributor.onNext(ctx, now, delta)
+ val loss = computePowerLoss(ctx.demand)
+ val newLimit = ctx.demand + loss
- SimResourceCommand.Consume(newLimit, cmd.duration)
- }
- else -> cmd
- }
+ ctx.push(newLimit)
+ return duration
}
override fun toString(): String = "SimPdu.Consumer"
diff --git a/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimUps.kt b/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimUps.kt
index 4c2beb68..59006dfc 100644
--- a/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimUps.kt
+++ b/opendc-simulator/opendc-simulator-power/src/main/kotlin/org/opendc/simulator/power/SimUps.kt
@@ -55,16 +55,13 @@ public class SimUps(
override fun onConnect(inlet: SimPowerInlet) {
val consumer = inlet.createConsumer()
aggregator.startConsumer(object : SimResourceConsumer by consumer {
- override fun onNext(ctx: SimResourceContext, now: Long, delta: Long): SimResourceCommand {
- return when (val cmd = consumer.onNext(ctx, now, delta)) {
- is SimResourceCommand.Consume -> {
- val loss = computePowerLoss(cmd.limit)
- val newLimit = cmd.limit + loss
+ override fun onNext(ctx: SimResourceContext, now: Long, delta: Long): Long {
+ val duration = consumer.onNext(ctx, now, delta)
+ val loss = computePowerLoss(ctx.demand)
+ val newLimit = ctx.demand + loss
- SimResourceCommand.Consume(newLimit, cmd.duration)
- }
- else -> cmd
- }
+ ctx.push(newLimit)
+ return duration
}
})
}