annotate src/main/java/christie/topology/manager/CreateTreeTopology.java @ 121:8949d0ecf1f6

refactor Topology
author akahori
date Tue, 11 Dec 2018 15:46:09 +0900
parents ce96f375f369
children 2e2d761ea806
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
1 package christie.topology.manager;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
2
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
3
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
4 import christie.annotation.Peek;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
5 import christie.annotation.Take;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
6 import christie.codegear.CodeGear;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
7 import christie.codegear.CodeGearManager;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
8 import christie.topology.HostMessage;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
9
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
10 import java.util.HashMap;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
11
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
12 public class CreateTreeTopology extends CodeGear{
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
13
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
14 @Take
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
15 HostMessage newHost;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
16
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
17 @Take
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
18 int hostCount;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
19
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
20 @Peek
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
21 HashMap<String, HostMessage> nameTable;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
22
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
23 @Take
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
24 String MD5;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
25
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
26 @Peek
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
27 HashMap<String, String> absCookieTable;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
28
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
29 @Peek
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
30 ParentManager parentManager;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
31
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
32 public CreateTreeTopology(){
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
33 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
34
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
35 @Override
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
36 protected void run(CodeGearManager cgm) {
95
5cd99bac9abd update CreateTreeTopology refactor
akahori
parents: 94
diff changeset
37
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
38
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
39 String nodeName = "node" + hostCount;
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
40 String newHostName = newHost.getHostName();
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
41 int newHostPort = newHost.getPort();
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
42
95
5cd99bac9abd update CreateTreeTopology refactor
akahori
parents: 94
diff changeset
43
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
44 cgm.createRemoteDGM(nodeName, newHostName, newHostPort);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
45 getDGM(nodeName).put("nodeName", nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
46 getDGM(nodeName).put("cookie", MD5);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
47
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
48 absCookieTable.put(MD5, nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
49 getLocalDGM().put("hostCount", hostCount + 1);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
50
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
51 newHost.setAlive(true);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
52 nameTable.put(nodeName, newHost);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
53 parentManager.register(nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
54
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
55 if (hostCount == 0) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
56 // どこにも繋がれるところがないので, ルートのとき.
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
57 // ルートなので, connectNodeNumもreverseCountも0でいい.
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
58 getDGM(nodeName).put("connectNodeNum", 0);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
59 getDGM(nodeName).put("reverseCount", 0);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
60
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
61 } else {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
62 // 親のみにつながればいいので1
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
63 getDGM(nodeName).put("connectNodeNum", 1);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
64 // put parent information own
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
65 String parentNodeName = parentManager.getMyParent();
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
66 HostMessage parentHost = nameTable.get(parentNodeName);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
67
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
68 // 相手からhostNameとportはもらっているので, nodeの情報だけ与えれば良い.
114
ce96f375f369 fix topologyManager
akahori
parents: 100
diff changeset
69 parentHost.setNodeInfo(nodeName, "parent", parentNodeName);
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
70 getLocalDGM().put("nodeInfo", parentHost);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
71 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
72
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
73 // newChildHost, newHostも同じ
114
ce96f375f369 fix topologyManager
akahori
parents: 100
diff changeset
74 newHost.setNodeInfo(parentNodeName, "child" + parentManager.getMyNumber(), nodeName);
94
87a203c99177 update HostMessage refactor
akahori
parents: 93
diff changeset
75 getLocalDGM().put("nodeInfo", newHost);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
76 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
77 }
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
78
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
79 getDGM(nodeName).put("start", "start");
100
5c807f996749 add startTime
akahori
parents: 95
diff changeset
80 getLocalDGM().put("startTime", System.currentTimeMillis());
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
81
92
f607fe2fc9a9 del ComingServiceHosts
akahori
parents: 85
diff changeset
82 cgm.setup(new CreateTreeTopology());
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
83 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
84 }