annotate src/main/java/christie/topology/manager/CreateTreeTopology.java @ 83:2314c55534ef

add TreeTopology
author akahori
date Sat, 15 Sep 2018 09:24:36 +0900
parents
children 331ad549e764
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) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
37 System.out.println("cookie:" + MD5);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
38
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
39 String nodeName = "node" + hostCount;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
40 // Manager connect to Node
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
41
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
42 cgm.createRemoteDGM(nodeName, newHost.hostName, newHost.port);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
43
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
44 getDGM(nodeName).put("nodeName", nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
45 getDGM(nodeName).put("cookie", MD5);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
46
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
47 absCookieTable.put(MD5, nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
48 getLocalDGM().put("hostCount", hostCount + 1);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
49
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
50 newHost.alive = true;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
51 nameTable.put(nodeName, newHost);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
52 parentManager.register(nodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
53
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
54 if (hostCount == 0) {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
55 // どこにも繋がれるところがないので, ルートのとき.
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
56 // ルートなので, connectNodeNumもreverseCountも0でいい.
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
57 getDGM(nodeName).put("connectNodeNum", 0);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
58 getDGM(nodeName).put("reverseCount", 0);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
59 getLocalDGM().put("start", true);
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();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
66 HostMessage parent = nameTable.get(parentNodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
67 int num = parentManager.getMyNumber();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
68
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
69 HostMessage newHost = new HostMessage(parent.hostName, parent.port, "parent", "child" + num);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
70 newHost.nodeName = parentNodeName;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
71 newHost.remoteNodeName = nodeName; // address
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
72
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
73 getLocalDGM().put("nodeInfo", newHost);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
74 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
75
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
76 // put own information parent
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
77 newHost = new HostMessage(newHost.hostName, newHost.port, "child" + num, "parent");
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
78 newHost.nodeName = nodeName;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
79 newHost.remoteNodeName = parentNodeName;
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
80
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
81 getLocalDGM().put("nodeInfo", newHost);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
82 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
83 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
84 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
85 }