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; } } }