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