Not working

This commit is contained in:
Matthias Heil
2026-04-07 12:21:37 +02:00
parent 8038c76307
commit 7b4bbd28a1
9 changed files with 28 additions and 28 deletions
+1 -13
View File
@@ -3,20 +3,8 @@ using System.Numerics;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace NamedPipes; namespace NamedPipes;
[Serializable]
public struct Frame(Vector3 translation, Quaternion orientation)
{
public Vector3 Translation => translation;
public Quaternion Orientation => orientation;
}
[Serializable]
public class DebugObject
{
public string? Type { get; set; }
public byte[]? Data { get; set; }
}
public interface IDebugVisualizer public interface IDebugVisualizer
{ {
Task<bool> SetDebugObjectAsync(DebugObject debugObject); Task<bool> SetVisualizerModelAsync(VisualizerModel visualizerModel);
Task<bool> SetMessageAsync(string message); Task<bool> SetMessageAsync(string message);
} }
+3 -3
View File
@@ -40,11 +40,11 @@ public class NamedPipeClient (string pipeName,string? serverLocation = null, st
} }
} }
public async Task<bool> SetDebugObjectAsync(DebugObject debugObject) public async Task<bool> SetVisualizerModelAsync(VisualizerModel visualizerModel)
{ {
await StartServerAsync().ConfigureAwait(true); await StartServerAsync().ConfigureAwait(true);
var result = await PipeClient.InvokeAsync(server => server.SetDebugObjectAsync(debugObject)); var result = await PipeClient.InvokeAsync(server => server.SetVisualizerModelAsync(visualizerModel));
Logger("NamedPipeClient.SetDebugObjectAsync: result = " + result); Logger("NamedPipeClient.SetVisualizerModelAsync: result = " + result);
return result; return result;
} }
+4 -4
View File
@@ -43,13 +43,13 @@ public partial class NamedPipesServer(string pipeName,Action<string>? logger = n
} }
} }
[ObservableProperty] [ObservableProperty]
public partial DebugObject? DebugObject { get; private set; } public partial VisualizerModel? VisualizerModel { get; private set; }
public async Task<bool> SetDebugObjectAsync(DebugObject debugObject) public async Task<bool> SetVisualizerModelAsync(VisualizerModel visualizerModel)
{ {
await Task.Delay(1); await Task.Delay(1);
DebugObject = debugObject; VisualizerModel = visualizerModel;
Logger("Received DebugObject of type: " + DebugObject.Type); Logger("NamedPipesServer, received object of type: " + visualizerModel.GetType());
return true; return true;
} }
+2 -2
View File
@@ -10,7 +10,7 @@ namespace NamedPipes
{ {
if (data.Length == 0) return null; if (data.Length == 0) return null;
//Log.Trace("PipeSerializer.Deserialize: type = " + type + " , data.length = " + data.Length); //Log.Trace("PipeSerializer.Deserialize: type = " + type + " , data.length = " + data.Length);
var obj = MessagePackSerializer.Deserialize(type, data, MessagePack.Resolvers.ContractlessStandardResolver.Options); var obj = MessagePackSerializer.Typeless.Deserialize(data);
//if (obj is DebugObject debugObject) //if (obj is DebugObject debugObject)
//{ //{
// var length = debugObject.Data?.Length ?? 0; // var length = debugObject.Data?.Length ?? 0;
@@ -29,7 +29,7 @@ namespace NamedPipes
// Log.Trace("PipeSerializer.Deserialize: debugObject.Type = " + debugObject.Type + " , debugObject.Data.Length = " + length); // Log.Trace("PipeSerializer.Deserialize: debugObject.Type = " + debugObject.Type + " , debugObject.Data.Length = " + length);
//} //}
var bytearray = MessagePackSerializer.Serialize(o.GetType(), o, MessagePack.Resolvers.ContractlessStandardResolver.Options); var bytearray = MessagePackSerializer.Typeless.Serialize(o);
//var xxx = Deserialize(bytearray, o.GetType()); //var xxx = Deserialize(bytearray, o.GetType());
//Log.Trace("PipeSerializer.Serialize: type = " + o.GetType() + " , bytearray.length = " + bytearray.Length); //Log.Trace("PipeSerializer.Serialize: type = " + o.GetType() + " , bytearray.length = " + bytearray.Length);
return bytearray; return bytearray;
@@ -1,9 +1,11 @@
using System; using System;
using System.Numerics; using System.Numerics;
using System.Runtime.Serialization; using System.Runtime.Serialization;
namespace NrxVisualizerObjectSource; using Frame = System.ValueTuple<System.Numerics.Vector3, System.Numerics.Quaternion, float>;
using Frame = ValueTuple<Vector3, Quaternion, float>; namespace NamedPipes;
[DataContract] [DataContract]
[Serializable]
public class VisualizerModel public class VisualizerModel
{ {
public static Type FrameType => typeof(Frame); public static Type FrameType => typeof(Frame);
@@ -2,7 +2,6 @@
using Microsoft.VisualStudio.Extensibility.DebuggerVisualizers; using Microsoft.VisualStudio.Extensibility.DebuggerVisualizers;
using Microsoft.VisualStudio.RpcContracts.RemoteUI; using Microsoft.VisualStudio.RpcContracts.RemoteUI;
using NamedPipes; using NamedPipes;
using NrxVisualizerObjectSource;
using System; using System;
using System.Numerics; using System.Numerics;
using System.Threading; using System.Threading;
@@ -38,6 +37,7 @@ internal sealed class NrxDebuggerVisualizerProvider : DebuggerVisualizerProvider
{ {
if (visualizerModel is null) return; if (visualizerModel is null) return;
PipeClient ??= new NamedPipeClient("testPipe", serverName: @"TestServer", logger: (m) => Console.WriteLine(m)); PipeClient ??= new NamedPipeClient("testPipe", serverName: @"TestServer", logger: (m) => Console.WriteLine(m));
_ = PipeClient.SetVisualizerModelAsync(visualizerModel);
_ = PipeClient.SetMessageAsync($"Hello from {nameof(CreateVisualizerAsync)},visualizerModel.Content = {visualizerModel.Content}"); _ = PipeClient.SetMessageAsync($"Hello from {nameof(CreateVisualizerAsync)},visualizerModel.Content = {visualizerModel.Content}");
} }
} }
@@ -1,5 +1,5 @@
using Microsoft.VisualStudio.Extensibility.UI; using Microsoft.VisualStudio.Extensibility.UI;
using NrxVisualizerObjectSource; using NamedPipes;
namespace NrxDebugVisualizer; namespace NrxDebugVisualizer;
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.DebuggerVisualizers; using Microsoft.VisualStudio.DebuggerVisualizers;
using NamedPipes;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -7,7 +8,6 @@ using System.IO;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Frame = System.ValueTuple<System.Numerics.Vector3, System.Numerics.Quaternion, float>; using Frame = System.ValueTuple<System.Numerics.Vector3, System.Numerics.Quaternion, float>;
namespace NrxVisualizerObjectSource; namespace NrxVisualizerObjectSource;
public class NrxVisualizerObjectSource : VisualizerObjectSource public class NrxVisualizerObjectSource : VisualizerObjectSource
{ {
+11 -1
View File
@@ -2,11 +2,21 @@
using NamedPipes; using NamedPipes;
var count = 0; var count = 0;
var message = "Hello World!".ToCharArray(); var message = "Hello World!".ToCharArray();
VisualizerModel visualizerModel = new VisualizerModel
{
Content = "Hello from TestClient",
Point = new System.Numerics.Vector3(1, 2, 3),
//Orientation = System.Numerics.Quaternion.Identity,
//PointArray = [new System.Numerics.Vector3(4, 5, 6), new System.Numerics.Vector3(7, 8, 9)],
//Frame = (new System.Numerics.Vector3(10, 11, 12), System.Numerics.Quaternion.Identity, 1.0f),
//FrameArray = [(new System.Numerics.Vector3(13, 14, 15), System.Numerics.Quaternion.Identity, 2.0f), (new System.Numerics.Vector3(16, 17, 18), System.Numerics.Quaternion.Identity, 3.0f)]
};
while (true) while (true)
{ {
var pipeClient = new NamedPipeClient("testPipe",@".\","TestServer",logger:Console.WriteLine); var pipeClient = new NamedPipeClient("testPipe",@".\","TestServer",logger:Console.WriteLine);
Thread.Sleep(1000); Thread.Sleep(1000);
await pipeClient.SetVisualizerModelAsync(visualizerModel);
pipeClient.SetMessageAsync($"Hello from TestClient " + count++).GetAwaiter().GetResult(); pipeClient.SetMessageAsync($"Hello from TestClient " + count++).GetAwaiter().GetResult();
pipeClient.SetDebugObjectAsync(new DebugObject{Type = typeof(string).FullName,Data = Encoding.GetEncoding("UTF-8").GetBytes(message)}).GetAwaiter().GetResult(); //pipeClient.SetDebugObjectAsync(new DebugObject{Type = typeof(string).FullName,Data = Encoding.GetEncoding("UTF-8").GetBytes(message)}).GetAwaiter().GetResult();
pipeClient.Dispose(); pipeClient.Dispose();
} }