# HG changeset patch # User kazz # Date 1326731555 -32400 # Node ID ebd91e607b63ec289f735bd725546402d258dd22 # Parent 54bf607118ae88a31b2160233f2923d955c4f473 implements TopologyManager diff -r 54bf607118ae -r ebd91e607b63 src/topology/manager/IncomingHosts.java --- a/src/topology/manager/IncomingHosts.java Tue Jan 17 01:10:29 2012 +0900 +++ b/src/topology/manager/IncomingHosts.java Tue Jan 17 01:32:35 2012 +0900 @@ -17,12 +17,12 @@ public class IncomingHosts extends CodeSegment { - HashMap topology; + HashMap> topology; LinkedList nodeNames; DataSegmentReceiver host = new DataSegmentReceiver(ids, CommandType.TAKE); Logger logger = Logger.getLogger(IncomingHosts.class); - public IncomingHosts(HashMap topology, LinkedList nodeNames) { + public IncomingHosts(HashMap> topology, LinkedList nodeNames) { this.topology = topology; this.nodeNames = nodeNames; } @@ -35,6 +35,11 @@ String nodeName = nodeNames.poll(); DataSegmentManager manager = DataSegment.connect(nodeName, host.name, host.port); manager.put("host", ValueFactory.createRawValue(nodeName)); + LinkedList nodes = topology.get(nodeName); + for (NodeInfo nodeInfo : nodes) { + HostMessage newHost = new HostMessage(host.name, host.port, nodeInfo.connectionName); + ods.put("local", nodeInfo.sourceNodeName, msgpack.unconvert(newHost)); + } } catch (IOException e) { logger.error("HostMessage format error"); e.printStackTrace(); diff -r 54bf607118ae -r ebd91e607b63 src/topology/manager/StartTopologyManager.java --- a/src/topology/manager/StartTopologyManager.java Tue Jan 17 01:10:29 2012 +0900 +++ b/src/topology/manager/StartTopologyManager.java Tue Jan 17 01:32:35 2012 +0900 @@ -29,7 +29,7 @@ @Override public void run() { LinkedList nodeNames = new LinkedList(); - HashMap topology = new HashMap(); + HashMap> topology = new HashMap>(); try { FileReader reader = new FileReader(new File(conf.confFilePath)); Parser parser = new Parser(); @@ -38,14 +38,17 @@ for (Graph graph : graphs) { ArrayList nodes = graph.getNodes(false); for (Node node : nodes) { - nodeNames.add(node.getId().getId()); + String nodeName = node.getId().getId(); + nodeNames.add(nodeName); + topology.put(nodeName, new LinkedList()); } ArrayList edges = graph.getEdges(); for (Edge edge : edges) { String connection = edge.getAttribute("label"); String source = edge.getSource().getNode().getId().getId(); String target = edge.getSource().getNode().getId().getId(); - topology.put(target, new NodeInfo(source, connection)); + LinkedList sources = topology.get(target); + sources.add(new NodeInfo(source, connection)); } }