Mercurial > hg > Database > Christie-sharp
view datagear/dg/MessagePackDataGear.cs @ 40:7276e3429c99
fix NetworkStream Error
author | riono <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 25 May 2021 03:02:38 +0900 |
parents | 090be804eaa9 |
children | 0cd765be9693 |
line wrap: on
line source
using System; using MessagePack; namespace Christie_net.datagear.dg { public class MessagePackDataGear<T> : DataGear<T> { private int dataSize; private byte[] messagePack; private readonly object syncObject = new object(); public MessagePackDataGear(T data) : base(data) { GetMessagePack(); } public MessagePackDataGear(Type clazz) : base(clazz) { } public MessagePackDataGear(byte[] messagePack, Type clazz) : base(clazz) { this.messagePack = messagePack; } public byte[] GetMessagePack() { if (messagePack != null) return messagePack; try { // Debug Console.WriteLine("data:" + data.GetType()); messagePack = MessagePackSerializer.Serialize(data); SetDataSize(messagePack.Length); } catch (Exception e) { Console.WriteLine("\n" + e.ToString()); } return messagePack; } public override T GetData() { lock (syncObject) { if (data == null) try { var dataObj = MessagePackSerializer.Deserialize<T>(messagePack); ///var dataCast = Convert.ChangeType(dataObj, clazz); SetData(dataObj); } catch (Exception e) { Console.WriteLine(e.StackTrace); } return base.GetData(); } } public void SetDataSize(int dataSize) { this.dataSize = dataSize; } } }