Files
VisualizerExtensionExample/NamedPipes/PipeSerializer.cs
2026-04-01 12:46:48 +02:00

39 lines
1.6 KiB
C#

using System;
using MessagePack;
using PipeMethodCalls;
namespace NamedPipes
{
public class PipeSerializer : IPipeSerializer
{
public object? Deserialize(byte[] data, Type type)
{
if (data.Length == 0) return null;
//Log.Trace("PipeSerializer.Deserialize: type = " + type + " , data.length = " + data.Length);
var obj = MessagePackSerializer.Deserialize(type, data, MessagePack.Resolvers.ContractlessStandardResolver.Options);
//if (obj is DebugObject debugObject)
//{
// var length = debugObject.Data?.Length ?? 0;
// var debugObjectType = debugObject.Type ?? "null";
// Log.Trace("PipeSerializer.Deserialize: debugObject.Type = " + debugObjectType + " , debugObject.Data.Length = " + length);
//}
return obj;
}
public byte[] Serialize(object o)
{
if (o.GetType().FullName == "System.Threading.Tasks.VoidTaskResult") return [];
//if (o is DebugObject debugObject)
//{
// var length = debugObject.Data?.Length ?? 0;
// Log.Trace("PipeSerializer.Deserialize: debugObject.Type = " + debugObject.Type + " , debugObject.Data.Length = " + length);
//}
var bytearray = MessagePackSerializer.Serialize(o.GetType(), o, MessagePack.Resolvers.ContractlessStandardResolver.Options);
//var xxx = Deserialize(bytearray, o.GetType());
//Log.Trace("PipeSerializer.Serialize: type = " + o.GetType() + " , bytearray.length = " + bytearray.Length);
return bytearray;
}
}
}