Skip to content

Commit f7fedd7

Browse files
committed
Add production and consumation convenience wrappers
1 parent fac1f19 commit f7fedd7

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/models/continuous/ContinuousConsumer.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ public interface ContinuousConsumerInterface<U : UnitsOfMeasurement, T : Amount<
88
public val consumation: DeviceState<T>
99
public val consumationCapacity: DeviceState<Numeric<U>>
1010
public val supplyRequest: LateBindDeviceState<T>
11+
}
1112

13+
public interface ContinuousConsumerWrapper<U : UnitsOfMeasurement, T : Amount<U>> : ContinuousConsumerInterface<U, T> {
14+
public val consumer: ContinuousConsumerInterface<U, T>
15+
override val consumation: DeviceState<T> get() = consumer.consumation
16+
override val consumationCapacity: DeviceState<Numeric<U>> get() = consumer.consumationCapacity
17+
override val supplyRequest: LateBindDeviceState<T> get() = consumer.supplyRequest
1218
}
1319

1420
public fun <U : UnitsOfMeasurement, T : Amount<U>> ContinuousConsumerInterface<U, T>.connectProducer(

controls-constructor/src/commonMain/kotlin/space/kscience/controls/constructor/models/continuous/ContinuousProducer.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ public interface ContinuousProducerInterface<U : UnitsOfMeasurement, T : Amount<
1010
public val consumerRequest: LateBindDeviceState<Numeric<U>>
1111
}
1212

13+
public interface ContinuousProducerWrapper<U : UnitsOfMeasurement, T : Amount<U>> : ContinuousProducerInterface<U, T> {
14+
public val producer: ContinuousProducerInterface<U, T>
15+
16+
override val production: DeviceState<T> get() = producer.production
17+
override val productionCapacity: DeviceState<T> get() = producer.productionCapacity
18+
override val consumerRequest: LateBindDeviceState<Numeric<U>> get() = producer.consumerRequest
19+
}
20+
1321
public fun <U : UnitsOfMeasurement, T : Amount<U>> ContinuousProducerInterface<U, T>.connectConsumer(
1422
consumerCapacity: DeviceState<Numeric<U>>,
1523
) {

demo/constructor/src/jvmMain/kotlin/EnrichmentFacility.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ private class EnrichmentFacility(
8787
separationRule = MyMixtureSeparationRule(
8888
mapOf(
8989
component1 to mapOf(
90-
productionKey to 0.7,
90+
productionKey to 0.75,
9191
feedbackKey to 0.2,
92-
discardKey to 0.1
92+
discardKey to 0.05
9393
),
9494
component2 to mapOf(
9595
productionKey to 0.1,
@@ -100,7 +100,7 @@ private class EnrichmentFacility(
100100
)
101101
).apply {
102102
connectProducer(mixer)
103-
mixer.connectProducer(feedbackKey, asProducer(feedbackKey).delayed(this, 100.milliseconds))
103+
mixer.connectProducer(feedbackKey, asProducer(feedbackKey).delayed(this, 400.milliseconds))
104104
}
105105

106106
val discard = consumer(mixture, DeviceState(Numeric(2.0))).apply {
@@ -161,10 +161,7 @@ fun main() {
161161
model.displayState("Mixer production", model.mixer.production) {
162162
Text("${it[EnrichmentFacility.component1]?.value}, ${it[EnrichmentFacility.component2]?.value}")
163163
}
164-
165-
166164
}
167-
168165
}
169166
second(400.dp) {
170167
ChartLayout {

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pluginManagement {
2222
}
2323

2424
plugins {
25-
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
25+
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
2626
}
2727

2828
dependencyResolutionManagement {

0 commit comments

Comments
 (0)