Files

44 lines
1.5 KiB
C#
Raw Permalink Normal View History

2026-04-08 16:06:35 +02:00
using NamedPipes;
using NrxDebugVisualizer.Scenes;
using Num.Roto.Visualization.Math.Geometry;
2026-04-15 15:59:42 +02:00
using Num.Roto.Visualization.Math.Utilities;
2026-04-08 16:06:35 +02:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Threading;
2026-04-15 15:59:42 +02:00
2026-04-08 16:06:35 +02:00
namespace NrxDebugVisualizer.Models;
internal sealed class PipeServer
{
2026-04-15 15:59:42 +02:00
2026-04-08 16:06:35 +02:00
private string PipeName { get; }
private NamedPipesServer? NamedPipesServer { get; set; }
2026-04-15 15:59:42 +02:00
private Action<VisualizerModel> UpdateAction { get; init; }
public PipeServer(string pipeName, Action<VisualizerModel> updateAction,CancellationToken cancellationToken)
2026-04-08 16:06:35 +02:00
{
PipeName = pipeName;
2026-04-15 15:59:42 +02:00
UpdateAction = updateAction;
2026-04-08 16:06:35 +02:00
StartPipeServer(cancellationToken);
}
private void NamedPipesServer_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName != nameof(NamedPipesServer.VisualizerModel)) return;
var visualizerObject = NamedPipesServer?.VisualizerModel;
if (visualizerObject is null) return;
2026-04-15 15:59:42 +02:00
UpdateAction(visualizerObject);
2026-04-08 16:06:35 +02:00
}
#region NamedPipesServer
private async void StartPipeServer(CancellationToken cancellationToken)
{
2026-04-15 15:59:42 +02:00
NamedPipesServer = new NamedPipesServer(PipeName, logger: (s) => Log.Info(s,0));
2026-04-08 16:06:35 +02:00
NamedPipesServer.PropertyChanged += NamedPipesServer_PropertyChanged;
2026-04-15 15:59:42 +02:00
await NamedPipesServer.RunAsync(cancellationToken).ConfigureAwait(false);
2026-04-08 16:06:35 +02:00
}
#endregion
2026-04-15 15:59:42 +02:00
2026-04-08 16:06:35 +02:00
}