mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-20 00:51:41 +00:00
Fix selective send (#90)
* Move VisionSettingsChangeSubscriber to own class * Use selective sending on simple PSCs * Fix origin context skip logic
This commit is contained in:
@@ -47,7 +47,7 @@ public abstract class DataChangeSubscriber {
|
||||
this(DataChangeSource.AllSources, wantedDestinations);
|
||||
}
|
||||
|
||||
public abstract void onDataChangeEvent(DataChangeEvent event);
|
||||
public abstract void onDataChangeEvent(DataChangeEvent<?> event);
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
|
||||
@@ -21,28 +21,24 @@ import io.javalin.websocket.WsContext;
|
||||
import java.util.HashMap;
|
||||
import org.photonvision.common.dataflow.DataChangeDestination;
|
||||
import org.photonvision.common.dataflow.DataChangeSource;
|
||||
import org.photonvision.server.UIUpdateType;
|
||||
|
||||
public class OutgoingUIEvent<T> extends DataChangeEvent<T> {
|
||||
public final UIUpdateType updateType;
|
||||
public final WsContext originContext;
|
||||
|
||||
public OutgoingUIEvent(
|
||||
UIUpdateType updateType, String propertyName, T newValue, WsContext originContext) {
|
||||
public OutgoingUIEvent(String propertyName, T newValue) {
|
||||
this(propertyName, newValue, null);
|
||||
}
|
||||
|
||||
public OutgoingUIEvent(String propertyName, T newValue, WsContext originContext) {
|
||||
super(DataChangeSource.DCS_WEBSOCKET, DataChangeDestination.DCD_UI, propertyName, newValue);
|
||||
this.updateType = updateType;
|
||||
this.originContext = originContext;
|
||||
}
|
||||
|
||||
public static OutgoingUIEvent<HashMap<String, Object>> wrappedOf(
|
||||
UIUpdateType uiUpdateType,
|
||||
String commandName,
|
||||
String propertyName,
|
||||
Object value,
|
||||
WsContext originContext) {
|
||||
String commandName, String propertyName, Object value, WsContext originContext) {
|
||||
HashMap<String, Object> data = new HashMap<>();
|
||||
data.put(propertyName, value);
|
||||
|
||||
return new OutgoingUIEvent<>(uiUpdateType, commandName, data, originContext);
|
||||
return new OutgoingUIEvent<>(commandName, data, originContext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import org.photonvision.common.dataflow.events.OutgoingUIEvent;
|
||||
import org.photonvision.common.logging.LogGroup;
|
||||
import org.photonvision.common.logging.Logger;
|
||||
import org.photonvision.common.util.TimedTaskManager;
|
||||
import org.photonvision.server.UIUpdateType;
|
||||
|
||||
public class MetricsPublisher {
|
||||
private final HashMap<String, Double> metrics;
|
||||
@@ -57,8 +56,7 @@ public class MetricsPublisher {
|
||||
metrics.put("ramUtil", ramMetrics.getUsedRam());
|
||||
|
||||
DataChangeService.getInstance()
|
||||
.publishEvent(
|
||||
new OutgoingUIEvent<>(UIUpdateType.BROADCAST, "metrics", metrics, null));
|
||||
.publishEvent(new OutgoingUIEvent<>("metrics", metrics));
|
||||
},
|
||||
1000);
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import org.photonvision.common.dataflow.DataChangeService;
|
||||
import org.photonvision.common.dataflow.events.OutgoingUIEvent;
|
||||
import org.photonvision.common.util.TimedTaskManager;
|
||||
import org.photonvision.server.SocketHandler;
|
||||
import org.photonvision.server.UIUpdateType;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class Logger {
|
||||
@@ -239,8 +238,7 @@ public class Logger {
|
||||
messageMap.put("logLevel", level.code);
|
||||
var superMap = new SocketHandler.UIMap();
|
||||
superMap.put("logMessage", messageMap);
|
||||
DataChangeService.getInstance()
|
||||
.publishEvent(new OutgoingUIEvent<>(UIUpdateType.BROADCAST, "log", superMap, null));
|
||||
DataChangeService.getInstance().publishEvent(new OutgoingUIEvent<>("log", superMap));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user