annotate src/main/java/alice/topology/manager/StartTopologyManager.java @ 437:b9fd22d9f6c5 dispose

refactoring IncomingHosts.java
author sugi
date Mon, 18 Aug 2014 15:54:53 +0900
parents 41bb86275910
children c973f7ee7c91
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
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
10 import org.apache.log4j.Logger;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
11
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
12 import alice.codesegment.CodeSegment;
403
539b7f5772c7 manager in extendTopology mode have parent Information at each node
sugi
parents: 402
diff changeset
13 import alice.topology.HostMessage;
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
14
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
15 import com.alexmerz.graphviz.ParseException;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
16 import com.alexmerz.graphviz.Parser;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
17 import com.alexmerz.graphviz.objects.Edge;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
18 import com.alexmerz.graphviz.objects.Graph;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
19 import com.alexmerz.graphviz.objects.Node;
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
20
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
21 public class StartTopologyManager extends CodeSegment {
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
22
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
23 TopologyManagerConfig conf;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
24 Logger logger = Logger.getLogger(StartTopologyManager.class);
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
25
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
26 public StartTopologyManager(TopologyManagerConfig conf) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
27 this.conf = conf;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
28 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
29
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
30 @Override
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
31 public void run() {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
32 if (!conf.extendTopology) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
33 LinkedList<String> nodeNames = new LinkedList<String>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
34 HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
35 int nodeNum = 0;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
36 try {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
37 FileReader reader = new FileReader(new File(conf.confFilePath));
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
38 Parser parser = new Parser();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
39 parser.parse(reader);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
40 ArrayList<Graph> graphs = parser.getGraphs();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
41 for (Graph graph : graphs) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
42 ArrayList<Node> nodes = graph.getNodes(false);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
43 nodeNum = nodes.size();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
44 for (Node node : nodes) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
45 String nodeName = node.getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
46 nodeNames.add(nodeName);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
47 topology.put(nodeName, new LinkedList<NodeInfo>());
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
48 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
49 ArrayList<Edge> edges = graph.getEdges();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
50 HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
51 for (Edge edge : edges) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
52 String connection = edge.getAttribute("label");
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
53 String source = edge.getSource().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
54 String target = edge.getTarget().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
55 LinkedList<NodeInfo> sources = topology.get(target);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
56 NodeInfo nodeInfo = new NodeInfo(source, connection);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
57 sources.add(nodeInfo);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
58 hash.put(source + "," + target, nodeInfo);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
59 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
60 for (Edge edge : edges) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
61 String connection = edge.getAttribute("label");
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
62 String source = edge.getSource().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
63 String target = edge.getTarget().getNode().getId().getId();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
64 NodeInfo nodeInfo = hash.get(target + "," + source);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
65 if (nodeInfo != null) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
66 nodeInfo.reverseName = connection;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
67 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
68 }
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
69 }
402
ca2947303438 one node can work extendsTopology mode
sugi
parents: 401
diff changeset
70
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
71 } catch (FileNotFoundException e) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
72 logger.error("File not found: " + conf.confFilePath);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
73 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
74 } catch (ParseException e) {
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
75 logger.error("File format error: " + conf.confFilePath);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
76 e.printStackTrace();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
77 }
422
2c6f86320691 add topology state recoder
sugi
parents: 419
diff changeset
78
2c6f86320691 add topology state recoder
sugi
parents: 419
diff changeset
79 // for recode topology information
423
af343b2a7a8b add coommons-lang jar for creating cookie
sugi
parents: 422
diff changeset
80 // cookie List
437
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
81 ods.put("running", false);
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
82 ods.put("resultParse", topology);
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
83 ods.put("nodeNames", nodeNames);
431
0239c1633012 add CodeSegment for creating MD5
sugi
parents: 424
diff changeset
84 ods.put("orderHash", "order");
437
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
85 new IncomingHosts();
402
ca2947303438 one node can work extendsTopology mode
sugi
parents: 401
diff changeset
86
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
87 ConfigWaiter cs3 = new ConfigWaiter(nodeNum);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
88 cs3.done.setKey("local", "done");
437
b9fd22d9f6c5 refactoring IncomingHosts.java
sugi
parents: 435
diff changeset
89
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
90 } else {
435
41bb86275910 send MD5 "mode -t"
sugi
parents: 434
diff changeset
91 ods.put("running", true);
433
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
92 new CheckComingHost();
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
93
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
94 HashMap<String,HostMessage> parentInfo = new HashMap<String,HostMessage>();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
95 int cominghostCount = 0;
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
96 ods.put("nodeConnectionInfo", parentInfo);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
97 ods.put("hostCount", cominghostCount);
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
98 new ComingServiceHosts();
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
99 }
433
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
100
435
41bb86275910 send MD5 "mode -t"
sugi
parents: 434
diff changeset
101 ods.put("topology", new HashMap<String, LinkedList<HostMessage>>());
434
4c62f76894c8 refactoring
sugi
parents: 433
diff changeset
102 ods.put("absCookieTable", new HashMap<String, String>());
435
41bb86275910 send MD5 "mode -t"
sugi
parents: 434
diff changeset
103 ods.put("createdList", new LinkedList<String>());
433
e565d481c52e separate checking process from IncomingHosts
sugi
parents: 432
diff changeset
104 new CreateHash();
419
aefbe41fcf12 change tab to space
sugi
parents: 410
diff changeset
105 }
401
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
106
91e1b063a89f haven't to remove manager package
sugi
parents:
diff changeset
107 }