Compare commits
2 Commits
6f7a3a5e31
...
49e94b9b45
| Author | SHA1 | Date | |
|---|---|---|---|
| 49e94b9b45 | |||
| 96bb165f68 |
@@ -1,15 +0,0 @@
|
|||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Rider ignored files
|
|
||||||
/projectSettingsUpdater.xml
|
|
||||||
/modules.xml
|
|
||||||
/contentModel.xml
|
|
||||||
/.idea.VisualizerExtensionExample.iml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Ignored default folder with query files
|
|
||||||
/queries/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
|
||||||
</project>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="UserContentModel">
|
|
||||||
<attachedFolders />
|
|
||||||
<explicitIncludes />
|
|
||||||
<explicitExcludes />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using PipeMethodCalls;
|
using PipeMethodCalls;
|
||||||
|
|
||||||
using PipeMethodCalls.NetJson;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -11,7 +9,7 @@ namespace NamedPipes;
|
|||||||
public class NamedPipeClient (string pipeName,string? serverLocation = null, string? serverName = null,Action<string>? logger = null): IDebugVisualizer, IDisposable
|
public class NamedPipeClient (string pipeName,string? serverLocation = null, string? serverName = null,Action<string>? logger = null): IDebugVisualizer, IDisposable
|
||||||
{
|
{
|
||||||
private bool IsConnected => PipeClient.State == PipeState.Connected;
|
private bool IsConnected => PipeClient.State == PipeState.Connected;
|
||||||
private PipeClient<IDebugVisualizer> PipeClient { get; } = new(new NetJsonPipeSerializer(), pipeName);
|
private PipeClient<IDebugVisualizer> PipeClient { get; } = new(new PipeSerializer(), pipeName);
|
||||||
private string ServerLocation { get; } = serverLocation ?? Environment.GetEnvironmentVariable("USERPROFILE") + @"\Documents\Visual Studio 2026\Visualizers\Server\NrxVisualizer\";
|
private string ServerLocation { get; } = serverLocation ?? Environment.GetEnvironmentVariable("USERPROFILE") + @"\Documents\Visual Studio 2026\Visualizers\Server\NrxVisualizer\";
|
||||||
private string ServerName { get; } = serverName ?? "Num.Roto.Nrx.VisualizerServer";
|
private string ServerName { get; } = serverName ?? "Num.Roto.Nrx.VisualizerServer";
|
||||||
private Action<string> Logger { get;} = logger ??((m) => Trace.WriteLine(m));
|
private Action<string> Logger { get;} = logger ??((m) => Trace.WriteLine(m));
|
||||||
@@ -32,7 +30,7 @@ public class NamedPipeClient (string pipeName,string? serverLocation = null, st
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
await PipeClient.ConnectAsync().ConfigureAwait(true);
|
await PipeClient.ConnectAsync().ConfigureAwait(true);
|
||||||
Logger("NamedPipeClient.StartServerAsync succeded.");
|
Logger("NamedPipeClient.StartServerAsync succeeded.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using PipeMethodCalls;
|
using PipeMethodCalls;
|
||||||
|
|
||||||
using PipeMethodCalls.NetJson;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -25,7 +24,7 @@ public partial class NamedPipesServer(string pipeName,Action<string>? logger = n
|
|||||||
if (PipeServer == null || PipeServer.State != PipeState.Connected)
|
if (PipeServer == null || PipeServer.State != PipeState.Connected)
|
||||||
{
|
{
|
||||||
PipeServer?.Dispose();
|
PipeServer?.Dispose();
|
||||||
PipeServer = new PipeServer<IDebugVisualizer>(new NetJsonPipeSerializer(), PipeName, () => this);
|
PipeServer = new PipeServer<IDebugVisualizer>(new PipeSerializer(), PipeName, () => this);
|
||||||
PipeServer.SetLogger((m) => Trace.WriteLine(m));
|
PipeServer.SetLogger((m) => Trace.WriteLine(m));
|
||||||
}
|
}
|
||||||
Logger("Waiting for client connection...");
|
Logger("Waiting for client connection...");
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
|
||||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||||
<PackageReference Include="PipeMethodCalls.NetJson" Version="3.0.0" />
|
<PackageReference Include="PipeMethodCalls" Version="3.0.0" />
|
||||||
<PackageReference Include="System.Numerics.Vectors" Version="4.6.1" />
|
<PackageReference Include="System.Numerics.Vectors" Version="4.6.1" />
|
||||||
|
<PackageReference Include="System.Text.Json" Version="10.0.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
using PipeMethodCalls;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace NamedPipes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serializes pipe method call information with System.Text.Json.
|
||||||
|
/// </summary>
|
||||||
|
public class PipeSerializer : IPipeSerializer
|
||||||
|
{
|
||||||
|
public object Deserialize(byte[] data, Type type)
|
||||||
|
{
|
||||||
|
return JsonSerializer.Deserialize(data, type) ?? throw new InvalidDataException($"Can not deserialize to type: {type} ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] Serialize(object o)
|
||||||
|
{
|
||||||
|
using (var memoryStream = new MemoryStream())
|
||||||
|
using (var utf8JsonWriter = new Utf8JsonWriter(memoryStream))
|
||||||
|
{
|
||||||
|
JsonSerializer.Serialize(utf8JsonWriter, o);
|
||||||
|
return memoryStream.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\NrxVisualizerObjectSource.dll" Link="netstandard2.0\NrxVisualizerObjectSource.dll" CopyToOutputDirectory="PreserveNewest" />
|
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\NrxVisualizerObjectSource.dll" Link="netstandard2.0\NrxVisualizerObjectSource.dll" CopyToOutputDirectory="PreserveNewest" />
|
||||||
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\NamedPipes.dll" Link="netstandard2.0\NamedPipes.dll" CopyToOutputDirectory="PreserveNewest" />
|
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\NamedPipes.dll" Link="netstandard2.0\NamedPipes.dll" CopyToOutputDirectory="PreserveNewest" />
|
||||||
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\PipeMethodCalls.dll" Link="netstandard2.0\PipeMethodCalls.dll" CopyToOutputDirectory="PreserveNewest" />
|
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\PipeMethodCalls.dll" Link="netstandard2.0\PipeMethodCalls.dll" CopyToOutputDirectory="PreserveNewest" />
|
||||||
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\PipeMethodCalls.NetJson.dll" Link="netstandard2.0\PipeMethodCalls.NetJson.dll" CopyToOutputDirectory="PreserveNewest" />
|
|
||||||
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\CommunityToolkit.Mvvm.dll" Link="netstandard2.0\CommunityToolkit.Mvvm.dll" CopyToOutputDirectory="PreserveNewest" />
|
<Content Include="$(MSBuildThisFileDirectory)..\bin\$(Configuration)\net8.0-windows8.0\CommunityToolkit.Mvvm.dll" Link="netstandard2.0\CommunityToolkit.Mvvm.dll" CopyToOutputDirectory="PreserveNewest" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -27,17 +27,17 @@ internal sealed class NrxDebuggerVisualizerProvider : DebuggerVisualizerProvider
|
|||||||
public override async Task<IRemoteUserControl> CreateVisualizerAsync(VisualizerTarget visualizerTarget, CancellationToken cancellationToken)
|
public override async Task<IRemoteUserControl> CreateVisualizerAsync(VisualizerTarget visualizerTarget, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
VisualizerModel? model = await visualizerTarget.ObjectSource.RequestDataAsync<VisualizerModel?>(jsonSerializer: null, cancellationToken);
|
VisualizerModel? model = await visualizerTarget.ObjectSource.RequestDataAsync<VisualizerModel?>(jsonSerializer: null, cancellationToken);
|
||||||
SendToVisualizer(model);
|
await SendToVisualizerAsync(model);
|
||||||
//throw new InvalidOperationException("This is a test exception to demonstrate the visualizer. Please remove this line and implement the visualizer logic.");
|
//throw new InvalidOperationException("This is a test exception to demonstrate the visualizer. Please remove this line and implement the visualizer logic.");
|
||||||
var control = new Vector3VisualizerUserControl(dataContext: model);
|
var control = new Vector3VisualizerUserControl(dataContext: model);
|
||||||
return await Task.FromResult<IRemoteUserControl>(control);
|
return await Task.FromResult<IRemoteUserControl>(control);
|
||||||
}
|
}
|
||||||
private static NamedPipeClient? PipeClient { get; set; }
|
private static NamedPipeClient? PipeClient { get; set; }
|
||||||
private static void SendToVisualizer(VisualizerModel? visualizerModel)
|
private static async Task SendToVisualizerAsync(VisualizerModel? visualizerModel)
|
||||||
{
|
{
|
||||||
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);
|
await PipeClient.SetVisualizerModelAsync(visualizerModel);
|
||||||
_ = PipeClient.SetMessageAsync($"Hello from {nameof(CreateVisualizerAsync)},visualizerModel.Content = {visualizerModel.Content}");
|
await PipeClient.SetMessageAsync($"Hello from {nameof(CreateVisualizerAsync)},visualizerModel.Content = {visualizerModel.Content}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user