001b945ea1
TODO: Update SceneTreeView after adding new objects
44 lines
1.5 KiB
C#
44 lines
1.5 KiB
C#
using NamedPipes;
|
|
using NrxDebugVisualizer.Scenes;
|
|
using Num.Roto.Visualization.Math.Geometry;
|
|
using Num.Roto.Visualization.Math.Utilities;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Numerics;
|
|
using System.Threading;
|
|
|
|
namespace NrxDebugVisualizer.Models;
|
|
|
|
internal sealed class PipeServer
|
|
{
|
|
|
|
private string PipeName { get; }
|
|
private NamedPipesServer? NamedPipesServer { get; set; }
|
|
private Action<VisualizerModel> UpdateAction { get; init; }
|
|
public PipeServer(string pipeName, Action<VisualizerModel> updateAction,CancellationToken cancellationToken)
|
|
{
|
|
PipeName = pipeName;
|
|
UpdateAction = updateAction;
|
|
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;
|
|
UpdateAction(visualizerObject);
|
|
}
|
|
|
|
#region NamedPipesServer
|
|
private async void StartPipeServer(CancellationToken cancellationToken)
|
|
{
|
|
NamedPipesServer = new NamedPipesServer(PipeName, logger: (s) => Log.Info(s,0));
|
|
NamedPipesServer.PropertyChanged += NamedPipesServer_PropertyChanged;
|
|
await NamedPipesServer.RunAsync(cancellationToken).ConfigureAwait(false);
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|