From 30655e8d1fb8040bc72ce072b42e1a8ece22b707 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Fri, 22 Dec 2023 17:55:30 +0100 Subject: [PATCH] fix: stop ticks when there are no more subscribers --- .../main/java/io/github/metacosm/power/PowerMeasurer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/io/github/metacosm/power/PowerMeasurer.java b/server/src/main/java/io/github/metacosm/power/PowerMeasurer.java index a38b25d0..656e0e96 100644 --- a/server/src/main/java/io/github/metacosm/power/PowerMeasurer.java +++ b/server/src/main/java/io/github/metacosm/power/PowerMeasurer.java @@ -2,14 +2,12 @@ import io.github.metacosm.power.sensors.Measures; import io.github.metacosm.power.sensors.PowerSensor; -import io.github.metacosm.power.sensors.RegisteredPID; import io.smallrye.mutiny.Multi; import io.smallrye.mutiny.infrastructure.Infrastructure; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import java.time.Duration; -import java.util.Map; @ApplicationScoped public class PowerMeasurer { @@ -30,7 +28,9 @@ public Multi startTracking(String pid) throws Exception { periodicSensorCheck = Multi.createFrom().ticks() .every(Duration.ofMillis(SAMPLING_FREQUENCY_IN_MILLIS)) .map(sensor::update) - .broadcast().toAllSubscribers() + .broadcast() + .withCancellationAfterLastSubscriberDeparture() + .toAtLeast(1) .runSubscriptionOn(Infrastructure.getDefaultWorkerPool()); } final var registeredPID = sensor.register(parsedPID);