annotate src/main/java/alice/topology/manager/StartTopologyManager.java @ 601:30f2c04571c2 dispose

add chat, add Star topology to topology manager&node
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Wed, 27 Apr 2016 16:28:10 +0900
parents 3284428f525e
children 8a9fd716c335
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
1 package alice.topology.manager;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
2
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
3 import java.io.File;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
4 import java.io.FileNotFoundException;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
5 import java.io.FileReader;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
6 import java.util.ArrayList;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
7 import java.util.HashMap;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
8 import java.util.LinkedList;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
9
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
10 import alice.codesegment.MetaCodeSegment;
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
11 import org.apache.log4j.Logger;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
12
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
13 import alice.codesegment.CodeSegment;
403
539b7f5772c7 manager in extendTopology mode have parent Information at each node
sugi
parents: 402
diff changeset
14 import alice.topology.HostMessage;
478
cf345b10a21a bug fix
sugi
parents: 475
diff changeset
15 import alice.topology.fix.ReceiveDisconnectMessage;
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
16
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
17 import com.alexmerz.graphviz.ParseException;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
18 import com.alexmerz.graphviz.Parser;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
19 import com.alexmerz.graphviz.objects.Edge;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
20 import com.alexmerz.graphviz.objects.Graph;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
21 import com.alexmerz.graphviz.objects.Node;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
22
599
3284428f525e add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 523
diff changeset
23 public class StartTopologyManager extends MetaCodeSegment {
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
24
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
25 TopologyManagerConfig conf;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
26 Logger logger = Logger.getLogger(StartTopologyManager.class);
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
27
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
28 public StartTopologyManager(TopologyManagerConfig conf) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
29 this.conf = conf;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
30 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
31
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
32 @Override
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
33 public void run() {
438
c973f7ee7c91 refactoring
sugi
parents: 437
diff changeset
34 new CheckComingHost();
c973f7ee7c91 refactoring
sugi
parents: 437
diff changeset
35 ods.put("absCookieTable", new HashMap<String, String>());
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
36
486
7be9054f7465 refactor. keepAlive has bug. if clear TaskType close , need to delete ResponsePing CodeSegment
sugi
parents: 478
diff changeset
37 if (!conf.dynamic) {
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
38 LinkedList<String> nodeNames = new LinkedList<String>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
39 HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
40 int nodeNum = 0;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
41 try {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
42 FileReader reader = new FileReader(new File(conf.confFilePath));
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
43 Parser parser = new Parser();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
44 parser.parse(reader);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
45 ArrayList<Graph> graphs = parser.getGraphs();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
46 for (Graph graph : graphs) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
47 ArrayList<Node> nodes = graph.getNodes(false);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
48 nodeNum = nodes.size();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
49 for (Node node : nodes) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
50 String nodeName = node.getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
51 nodeNames.add(nodeName);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
52 topology.put(nodeName, new LinkedList<NodeInfo>());
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
53 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
54 ArrayList<Edge> edges = graph.getEdges();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
55 HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
56 for (Edge edge : edges) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
57 String connection = edge.getAttribute("label");
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
58 String source = edge.getSource().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
59 String target = edge.getTarget().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
60 LinkedList<NodeInfo> sources = topology.get(target);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
61 NodeInfo nodeInfo = new NodeInfo(source, connection);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
62 sources.add(nodeInfo);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
63 hash.put(source + "," + target, nodeInfo);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
64 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
65 for (Edge edge : edges) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
66 String connection = edge.getAttribute("label");
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
67 String source = edge.getSource().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
68 String target = edge.getTarget().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
69 NodeInfo nodeInfo = hash.get(target + "," + source);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
70 if (nodeInfo != null) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
71 nodeInfo.reverseName = connection;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
72 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
73 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
74 }
402
ca2947303438 one node can work extendsTopology mode
sugi
parents: 401
diff changeset
75
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
76 } catch (FileNotFoundException e) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
77 logger.error("File not found: " + conf.confFilePath);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
78 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
79 } catch (ParseException e) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
80 logger.error("File format error: " + conf.confFilePath);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
81 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
82 }
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
83
422
2c6f86320691 add topology state recoder
sugi
parents: 419
diff changeset
84 // for recode topology information
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
85 // cookie List
437
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
86 ods.put("running", false);
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
87 ods.put("resultParse", topology);
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
88 ods.put("nodeNames", nodeNames);
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
89
437
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
90 new IncomingHosts();
402
ca2947303438 one node can work extendsTopology mode
sugi
parents: 401
diff changeset
91
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
92 ConfigWaiter cs3 = new ConfigWaiter(nodeNum);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
93 cs3.done.setKey("local", "done");
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
94
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
95 } else {
435
41bb86275910 send MD5 "mode -t"
sugi
parents: 434
diff changeset
96 ods.put("running", true);
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
97
475
fac27e395930 change decide children algorithm
sugi
parents: 468
diff changeset
98 HashMap<String, HostMessage> nameTable = new HashMap<String, HostMessage>();
601
30f2c04571c2 add chat, add Star topology to topology manager&node
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
99 int cominghostCount = 0;
514
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
100 if (conf.type == TopologyType.Tree) {
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
101 ParentManager manager = new ParentManager(conf.hasChild);
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
102 ods.put("parentManager", manager);
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
103 ods.put("nameTable", nameTable);
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
104 ods.put("hostCount", cominghostCount);
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
105 new ComingServiceHosts();
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
106 new ReceiveDisconnectMessage();
601
30f2c04571c2 add chat, add Star topology to topology manager&node
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
107 } else if (conf.type == TopologyType.Star){
30f2c04571c2 add chat, add Star topology to topology manager&node
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
108 ods.put("nameTable", nameTable);
30f2c04571c2 add chat, add Star topology to topology manager&node
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
109 ods.put("hostCount", cominghostCount);
30f2c04571c2 add chat, add Star topology to topology manager&node
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents: 599
diff changeset
110 new ComingStarHosts();
514
6732d03d0174 refactor TopologyFix has bug
sugi
parents: 486
diff changeset
111 }
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
112 }
433
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
113
467
6e304a7a60e7 remove white space
sugi
parents: 438
diff changeset
114 ods.put("topology", new HashMap<String, LinkedList<HostMessage>>());
435
41bb86275910 send MD5 "mode -t"
sugi
parents: 434
diff changeset
115 ods.put("createdList", new LinkedList<String>());
433
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
116 new CreateHash();
468
27079619f5fd change create task algotherm
sugi
parents: 467
diff changeset
117
27079619f5fd change create task algotherm
sugi
parents: 467
diff changeset
118 TopologyFinish cs2 = new TopologyFinish();
27079619f5fd change create task algotherm
sugi
parents: 467
diff changeset
119 cs2.finish.setKey("local", "finish");
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
120 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
121
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
122 }