Mercurial > hg > Database > Christie-sharp
annotate 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 |
rev | line source |
---|---|
2 | 1 using System; |
3
f27db91a852e
update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
2 using MessagePack; |
2 | 3 |
4 namespace Christie_net.datagear.dg { | |
8 | 5 public class MessagePackDataGear<T> : DataGear<T> { |
6 private int dataSize; | |
7 private byte[] messagePack; | |
8 private readonly object syncObject = new object(); | |
9 | |
10 public MessagePackDataGear(T data) : base(data) { | |
11 GetMessagePack(); | |
12 } | |
2 | 13 |
8 | 14 public MessagePackDataGear(Type clazz) : base(clazz) { } |
15 | |
23 | 16 public MessagePackDataGear(byte[] messagePack, Type clazz) : base(clazz) { |
17 this.messagePack = messagePack; | |
18 } | |
19 | |
8 | 20 public byte[] GetMessagePack() { |
21 if (messagePack != null) | |
22 return messagePack; | |
23 try { | |
40 | 24 // Debug |
25 Console.WriteLine("data:" + data.GetType()); | |
8 | 26 messagePack = MessagePackSerializer.Serialize(data); |
40 | 27 |
8 | 28 SetDataSize(messagePack.Length); |
29 } catch (Exception e) { | |
40 | 30 Console.WriteLine("\n" + e.ToString()); |
2 | 31 } |
32 | |
8 | 33 return messagePack; |
34 } | |
2 | 35 |
34 | 36 public override T GetData() { |
8 | 37 lock (syncObject) { |
38 if (data == null) | |
3
f27db91a852e
update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
39 try { |
37 | 40 var dataObj = MessagePackSerializer.Deserialize<T>(messagePack); |
41 ///var dataCast = Convert.ChangeType(dataObj, clazz); | |
42 SetData(dataObj); | |
8 | 43 } catch (Exception e) { |
3
f27db91a852e
update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
44 Console.WriteLine(e.StackTrace); |
34 | 45 } |
3
f27db91a852e
update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
46 |
8 | 47 return base.GetData(); |
3
f27db91a852e
update MessagePackDagaGear.cs
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
48 } |
2 | 49 } |
8 | 50 |
51 public void SetDataSize(int dataSize) { | |
52 this.dataSize = dataSize; | |
53 } | |
54 } | |
2 | 55 } |