annotate src/main/java/christie/topology/manager/CreateTreeTopology.java @ 85:331ad549e764

fix CreateTreeTopology
author akahori
date Sat, 15 Sep 2018 10:22:12 +0900
parents 2314c55534ef
children f607fe2fc9a9
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
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
60 } else {
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
61 // 親のみにつながればいいので1
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
62 getDGM(nodeName).put("connectNodeNum", 1);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
63 // put parent information own
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
64 String parentNodeName = parentManager.getMyParent();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
65 HostMessage parent = nameTable.get(parentNodeName);
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
66 int num = parentManager.getMyNumber();
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
67
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
68 HostMessage newParentHost = new HostMessage(parent.hostName, parent.port, "parent", "child" + num);
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
69 newParentHost.nodeName = parentNodeName;
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
70 newParentHost.remoteNodeName = nodeName; // address
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
71
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
72 getLocalDGM().put("nodeInfo", newParentHost);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
73 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
74
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
75 // put own information parent
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
76 HostMessage newChildHost = new HostMessage(newHost.hostName, newHost.port, "child" + num, "parent");
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
77 newChildHost.nodeName = nodeName;
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
78 newChildHost.remoteNodeName = parentNodeName;
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
79
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
80 getLocalDGM().put("nodeInfo", newChildHost);
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
81 cgm.setup(new RecordTopology());
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
82 }
85
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
83
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
84 getDGM(nodeName).put("start", "start");
331ad549e764 fix CreateTreeTopology
akahori
parents: 83
diff changeset
85
83
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
86 }
2314c55534ef add TreeTopology
akahori
parents:
diff changeset
87 }