annotate daemon/IncomingTcpConnection.cs @ 51:486683ead53f

bug survey
author riono <e165729@ie.u-ryukyu.ac.jp>
date Tue, 11 Jan 2022 20:02:18 +0900
parents 476b6efeca5b
children ef3fd58af531
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 using System;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 using System.IO;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 using Christie_net.codegear;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 using Christie_net.datagear;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 using Christie_net.datagear.command;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 using Christie_net.datagear.dg;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 using MessagePack;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 using CommandType = Christie_net.datagear.command.CommandType;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 namespace Christie_net.daemon {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 public class IncomingTcpConnection {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 private RemoteDataGearManager manager;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 private CodeGearManager cgm;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 private Connection connection;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 public IncomingTcpConnection(Connection connection) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 this.connection = connection;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 this.cgm = connection.cgm;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 public void SetManager(RemoteDataGearManager manager) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 this.manager = manager;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 public void Run() {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 while (true) {
48
6e5c0977d756 bug fixed
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
28 //TODO: Data長がわからないので1024で仮置き → ぴったしで読み込む必要がある
51
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
29 byte[] streamData = new byte[1000000];
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
30
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
31
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
32 int length = 0;
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 try {
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
34 length = connection.stream.Read(streamData);
51
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
35 //Console.WriteLine("call:" + connection.stream.Position);
39
9217d14cc220 fix NetworkStream
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
36
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
37 } catch (Exception e) {
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
38 Console.WriteLine(e.StackTrace);
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
39 }
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
40
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
41 // データはRemotemessage(Command), length, dataの順で入っている
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
42 //int dataLength = connection.socket.Receive(deserializeCommand);
47
61ec3dd0995c bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
43
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
44 // Debug
51
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
45 //Console.WriteLine("length:" + length);
486683ead53f bug survey
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 50
diff changeset
46
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
47 RemoteMessage msg = MessagePackSerializer.Deserialize<RemoteMessage>(streamData);
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
48 CommandType type = CommandTypeExt.GetCommandTypeFormId(msg.type);
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
49
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
50 try {
39
9217d14cc220 fix NetworkStream
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
51 byte[] data;
47
61ec3dd0995c bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
52
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 switch (type) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 case CommandType.PUT:
40
7276e3429c99 fix NetworkStream Error
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
55 data = msg.data;
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 try {
45
98ee1ee1efb7 error message is change
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
58 MessagePackDataGear<object> dg =
98ee1ee1efb7 error message is change
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
59 new MessagePackDataGear<object>(data, Type.GetType(msg.clazz));
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
60
29
0cd2684e401b update InputDataGear and more
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
61 cgm.GetLocalDGM().Put(msg.key, dg);
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 } catch (TypeLoadException e) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 Console.WriteLine(e.StackTrace);
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 break;
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
66
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 case CommandType.REMOTEPEEK:
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 case CommandType.REMOTETAKE:
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 try {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 Command cm = new CommandBuilder().Init(type).FromDgmName(msg.fromDmgName)
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 .Key(msg.key)
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 .Clazz(Type.GetType(msg.clazz))
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 .Connection(connection).Build();
29
0cd2684e401b update InputDataGear and more
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
74 cgm.GetLocalDGM().RunCommand(cm);
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 } catch (TypeLoadException e) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 Console.WriteLine(e.StackTrace);
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
77 } catch (Exception e) {
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
78 Console.WriteLine(e);
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 break;
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
81
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 case CommandType.REPLY: // 待っていたwaitlistに渡してcsにセット
40
7276e3429c99 fix NetworkStream Error
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 39
diff changeset
83 data = msg.data;
47
61ec3dd0995c bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
84
39
9217d14cc220 fix NetworkStream
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
85 // data = new byte[MessagePackSerializer.Deserialize<int>(streamData)];
9217d14cc220 fix NetworkStream
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 37
diff changeset
86 // connection.socket.Receive(data);
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 try {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 MessagePackDataGear<object> dg =
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 new MessagePackDataGear<object>(data, Type.GetType(msg.clazz));
29
0cd2684e401b update InputDataGear and more
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
91 cgm.GetDGM(msg.fromDmgName).ResolveWaitCommand(msg.key, dg);
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 } catch (TypeLoadException e) {
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 Console.WriteLine(e.StackTrace);
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 break;
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
96
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 default:
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 break;
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 }
50
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
100 } catch (Exception e) {
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
101 Console.WriteLine("call: " + e.StackTrace);
476b6efeca5b bug fixing
riono <e165729@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
102 }
23
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 }
46cfeb0609c5 Add TcpConnections
riono <e165729@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 }