Mercurial > hg > Database > Christie
comparison 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 |
comparison
equal
deleted
inserted
replaced
82:a02f44b709c0 | 83:2314c55534ef |
---|---|
1 package christie.topology.manager; | |
2 | |
3 | |
4 import christie.annotation.Peek; | |
5 import christie.annotation.Take; | |
6 import christie.codegear.CodeGear; | |
7 import christie.codegear.CodeGearManager; | |
8 import christie.topology.HostMessage; | |
9 | |
10 import java.util.HashMap; | |
11 | |
12 public class CreateTreeTopology extends CodeGear{ | |
13 | |
14 @Take | |
15 HostMessage newHost; | |
16 | |
17 @Take | |
18 int hostCount; | |
19 | |
20 @Peek | |
21 HashMap<String, HostMessage> nameTable; | |
22 | |
23 @Take | |
24 String MD5; | |
25 | |
26 @Peek | |
27 HashMap<String, String> absCookieTable; | |
28 | |
29 @Peek | |
30 ParentManager parentManager; | |
31 | |
32 public CreateTreeTopology(){ | |
33 } | |
34 | |
35 @Override | |
36 protected void run(CodeGearManager cgm) { | |
37 System.out.println("cookie:" + MD5); | |
38 | |
39 String nodeName = "node" + hostCount; | |
40 // Manager connect to Node | |
41 | |
42 cgm.createRemoteDGM(nodeName, newHost.hostName, newHost.port); | |
43 | |
44 getDGM(nodeName).put("nodeName", nodeName); | |
45 getDGM(nodeName).put("cookie", MD5); | |
46 | |
47 absCookieTable.put(MD5, nodeName); | |
48 getLocalDGM().put("hostCount", hostCount + 1); | |
49 | |
50 newHost.alive = true; | |
51 nameTable.put(nodeName, newHost); | |
52 parentManager.register(nodeName); | |
53 | |
54 if (hostCount == 0) { | |
55 // どこにも繋がれるところがないので, ルートのとき. | |
56 // ルートなので, connectNodeNumもreverseCountも0でいい. | |
57 getDGM(nodeName).put("connectNodeNum", 0); | |
58 getDGM(nodeName).put("reverseCount", 0); | |
59 getLocalDGM().put("start", true); | |
60 | |
61 } else { | |
62 // 親のみにつながればいいので1 | |
63 getDGM(nodeName).put("connectNodeNum", 1); | |
64 // put parent information own | |
65 String parentNodeName = parentManager.getMyParent(); | |
66 HostMessage parent = nameTable.get(parentNodeName); | |
67 int num = parentManager.getMyNumber(); | |
68 | |
69 HostMessage newHost = new HostMessage(parent.hostName, parent.port, "parent", "child" + num); | |
70 newHost.nodeName = parentNodeName; | |
71 newHost.remoteNodeName = nodeName; // address | |
72 | |
73 getLocalDGM().put("nodeInfo", newHost); | |
74 cgm.setup(new RecordTopology()); | |
75 | |
76 // put own information parent | |
77 newHost = new HostMessage(newHost.hostName, newHost.port, "child" + num, "parent"); | |
78 newHost.nodeName = nodeName; | |
79 newHost.remoteNodeName = parentNodeName; | |
80 | |
81 getLocalDGM().put("nodeInfo", newHost); | |
82 cgm.setup(new RecordTopology()); | |
83 } | |
84 } | |
85 } |