Mercurial > hg > Members > tatsuki > Alice
view src/alice/topology/manager/StartTopologyManager.java @ 270:23e53aaa8720
reconnect manager worked.
author | sugi |
---|---|
date | Wed, 21 Aug 2013 15:33:49 +0900 |
parents | 9982e1c4f099 |
children | 4c74418eaf96 |
line wrap: on
line source
package alice.topology.manager; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import org.apache.log4j.Logger; import alice.codesegment.CodeSegment; import alice.topology.HostMessage; import com.alexmerz.graphviz.ParseException; import com.alexmerz.graphviz.Parser; import com.alexmerz.graphviz.objects.Edge; import com.alexmerz.graphviz.objects.Graph; import com.alexmerz.graphviz.objects.Node; public class StartTopologyManager extends CodeSegment { TopologyManagerConfig conf; Logger logger = Logger.getLogger(StartTopologyManager.class); public StartTopologyManager(TopologyManagerConfig conf) { this.conf = conf; } @Override public void run() { LinkedList<String> nodeNames = new LinkedList<String>(); HashMap<String, LinkedList<NodeInfo>> topology = new HashMap<String, LinkedList<NodeInfo>>(); int nodeNum = 0; try { FileReader reader = new FileReader(new File(conf.confFilePath)); Parser parser = new Parser(); parser.parse(reader); ArrayList<Graph> graphs = parser.getGraphs(); for (Graph graph : graphs) { ArrayList<Node> nodes = graph.getNodes(false); nodeNum = nodes.size(); for (Node node : nodes) { String nodeName = node.getId().getId(); nodeNames.add(nodeName); topology.put(nodeName, new LinkedList<NodeInfo>()); } ArrayList<Edge> edges = graph.getEdges(); HashMap<String, NodeInfo> hash = new HashMap<String, NodeInfo>(); for (Edge edge : edges) { String connection = edge.getAttribute("label"); String source = edge.getSource().getNode().getId().getId(); String target = edge.getTarget().getNode().getId().getId(); LinkedList<NodeInfo> sources = topology.get(target); NodeInfo nodeInfo = new NodeInfo(source, connection); sources.add(nodeInfo); hash.put(source + "," + target, nodeInfo); } for (Edge edge : edges) { String connection = edge.getAttribute("label"); String source = edge.getSource().getNode().getId().getId(); String target = edge.getTarget().getNode().getId().getId(); NodeInfo nodeInfo = hash.get(target + "," + source); if (nodeInfo != null) { nodeInfo.reverseName = connection; } } } } catch (FileNotFoundException e) { logger.error("File not found: " + conf.confFilePath); e.printStackTrace(); } catch (ParseException e) { logger.error("File format error: " + conf.confFilePath); e.printStackTrace(); } HashMap<String, ArrayList<HostMessage>> connectionList = new HashMap<String, ArrayList<HostMessage>>(); ods.put("connection", connectionList); ods.put("_ABSIPTABLE" ,new ArrayList<HostMessage>()); new createABSIPList(); IncomingHosts cs1 = new IncomingHosts(topology, nodeNames); cs1.host.setKey("local", "host"); cs1.connection.setKey("local", "connection"); TopologyFinish cs2 = new TopologyFinish(); cs2.finish.setKey("local", "finish"); ConfigWaiter cs3 = new ConfigWaiter(nodeNum); cs3.done.setKey("local", "done"); } }