39 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|