Mercurial > hg > Database > Alice
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 |
rev | line source |
---|---|
401 | 1 package alice.topology.manager; |
2 | |
3 import java.io.File; | |
4 import java.io.FileNotFoundException; | |
5 import java.io.FileReader; | |
6 import java.util.ArrayList; | |
7 import java.util.HashMap; | |
8 import java.util.LinkedList; | |
9 | |
599
3284428f525e
add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
523
diff
changeset
|
10 import alice.codesegment.MetaCodeSegment; |
401 | 11 import org.apache.log4j.Logger; |
12 | |
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 | 15 import alice.topology.fix.ReceiveDisconnectMessage; |
401 | 16 |
17 import com.alexmerz.graphviz.ParseException; | |
18 import com.alexmerz.graphviz.Parser; | |
19 import com.alexmerz.graphviz.objects.Edge; | |
20 import com.alexmerz.graphviz.objects.Graph; | |
21 import com.alexmerz.graphviz.objects.Node; | |
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 | 24 |
419 | 25 TopologyManagerConfig conf; |
26 Logger logger = Logger.getLogger(StartTopologyManager.class); | |
401 | 27 |
419 | 28 public StartTopologyManager(TopologyManagerConfig conf) { |
29 this.conf = conf; | |
30 } | |
401 | 31 |
419 | 32 @Override |
33 public void run() { | |
438 | 34 new CheckComingHost(); |
35 ods.put("absCookieTable", new HashMap<String, String>()); | |
467 | 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 | 38 LinkedList<String> nodeNames = new LinkedList<String>(); |
39 HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>(); | |
40 int nodeNum = 0; | |
41 try { | |
42 FileReader reader = new FileReader(new File(conf.confFilePath)); | |
43 Parser parser = new Parser(); | |
44 parser.parse(reader); | |
45 ArrayList<Graph> graphs = parser.getGraphs(); | |
46 for (Graph graph : graphs) { | |
47 ArrayList<Node> nodes = graph.getNodes(false); | |
48 nodeNum = nodes.size(); | |
49 for (Node node : nodes) { | |
50 String nodeName = node.getId().getId(); | |
51 nodeNames.add(nodeName); | |
52 topology.put(nodeName, new LinkedList<NodeInfo>()); | |
53 } | |
54 ArrayList<Edge> edges = graph.getEdges(); | |
55 HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>(); | |
56 for (Edge edge : edges) { | |
57 String connection = edge.getAttribute("label"); | |
58 String source = edge.getSource().getNode().getId().getId(); | |
59 String target = edge.getTarget().getNode().getId().getId(); | |
60 LinkedList<NodeInfo> sources = topology.get(target); | |
61 NodeInfo nodeInfo = new NodeInfo(source, connection); | |
62 sources.add(nodeInfo); | |
63 hash.put(source + "," + target, nodeInfo); | |
64 } | |
65 for (Edge edge : edges) { | |
66 String connection = edge.getAttribute("label"); | |
67 String source = edge.getSource().getNode().getId().getId(); | |
68 String target = edge.getTarget().getNode().getId().getId(); | |
69 NodeInfo nodeInfo = hash.get(target + "," + source); | |
70 if (nodeInfo != null) { | |
71 nodeInfo.reverseName = connection; | |
72 } | |
73 } | |
74 } | |
402 | 75 |
419 | 76 } catch (FileNotFoundException e) { |
77 logger.error("File not found: " + conf.confFilePath); | |
78 e.printStackTrace(); | |
79 } catch (ParseException e) { | |
80 logger.error("File format error: " + conf.confFilePath); | |
81 e.printStackTrace(); | |
82 } | |
467 | 83 |
422 | 84 // for recode topology information |
423 | 85 // cookie List |
437 | 86 ods.put("running", false); |
87 ods.put("resultParse", topology); | |
88 ods.put("nodeNames", nodeNames); | |
467 | 89 |
437 | 90 new IncomingHosts(); |
402 | 91 |
419 | 92 ConfigWaiter cs3 = new ConfigWaiter(nodeNum); |
93 cs3.done.setKey("local", "done"); | |
467 | 94 |
419 | 95 } else { |
435 | 96 ods.put("running", true); |
467 | 97 |
475 | 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 | 100 if (conf.type == TopologyType.Tree) { |
101 ParentManager manager = new ParentManager(conf.hasChild); | |
102 ods.put("parentManager", manager); | |
103 ods.put("nameTable", nameTable); | |
104 ods.put("hostCount", cominghostCount); | |
105 new ComingServiceHosts(); | |
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 | 111 } |
419 | 112 } |
433 | 113 |
467 | 114 ods.put("topology", new HashMap<String, LinkedList<HostMessage>>()); |
435 | 115 ods.put("createdList", new LinkedList<String>()); |
433 | 116 new CreateHash(); |
468 | 117 |
118 TopologyFinish cs2 = new TopologyFinish(); | |
119 cs2.finish.setKey("local", "finish"); | |
419 | 120 } |
401 | 121 |
122 } |