# HG changeset patch # User sugi # Date 1403499756 -32400 # Node ID ca294730343805875abcea56a25ed3a1072bb98f # Parent 91e1b063a89f658c7d3273ce598e3f666cd4981d one node can work extendsTopology mode diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/HostMessage.java --- a/src/main/java/alice/topology/HostMessage.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/HostMessage.java Mon Jun 23 14:02:36 2014 +0900 @@ -10,7 +10,6 @@ public String connectionName; public String reverseName; public String absName; - public boolean reconnectFlag = false; public HostMessage() { } public HostMessage(String name, int port) { @@ -33,8 +32,4 @@ return absName; } - public void setFlag(){ - this.reconnectFlag = true; - } - } diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/manager/ComingServiceHosts.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/alice/topology/manager/ComingServiceHosts.java Mon Jun 23 14:02:36 2014 +0900 @@ -0,0 +1,41 @@ +package alice.topology.manager; + +import org.msgpack.type.ValueFactory; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.DataSegment; +import alice.datasegment.Receiver; +import alice.topology.HostMessage; + +public class ComingServiceHosts extends CodeSegment{ + + Receiver info = ids.create(CommandType.TAKE); + Receiver info1 = ids.create(CommandType.TAKE); + int BINATY_TREE = 2; + + public ComingServiceHosts(){ + info.setKey("host"); + info1.setKey("hostCount"); + } + + @Override + public void run() { + HostMessage host = info.asClass(HostMessage.class); + int comingHostCount = info1.asInteger(); + String nodeName = "node"+comingHostCount; + // Manager connect to Node + DataSegment.connect(nodeName, "", host.name, host.port); + ods.put(nodeName, "host", nodeName); + ods.update(info1.key, comingHostCount+1); + + for (int i=1;i < BINATY_TREE+1; i++) { + int num = 2 * comingHostCount+i; + HostMessage newHost = new HostMessage(host.name, host.port, "parent", "child"+(i-1)); + ods.put("node"+num, newHost); + } + ods.put(nodeName, ValueFactory.createNilValue()); + ods.put("start", ValueFactory.createNilValue()); + } + +} diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/manager/StartTopologyManager.java --- a/src/main/java/alice/topology/manager/StartTopologyManager.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/manager/StartTopologyManager.java Mon Jun 23 14:02:36 2014 +0900 @@ -28,60 +28,64 @@ @Override public void run() { - LinkedList nodeNames = new LinkedList(); - HashMap> topology = new HashMap>(); - int nodeNum = 0; - try { - FileReader reader = new FileReader(new File(conf.confFilePath)); - Parser parser = new Parser(); - parser.parse(reader); - ArrayList graphs = parser.getGraphs(); - for (Graph graph : graphs) { - ArrayList nodes = graph.getNodes(false); - nodeNum = nodes.size(); - for (Node node : nodes) { - String nodeName = node.getId().getId(); - nodeNames.add(nodeName); - topology.put(nodeName, new LinkedList()); - } - ArrayList edges = graph.getEdges(); - HashMap hash = new HashMap(); - for (Edge edge : edges) { - String connection = edge.getAttribute("label"); - String source = edge.getSource().getNode().getId().getId(); - String target = edge.getTarget().getNode().getId().getId(); - LinkedList 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; + if (!conf.extendTopology) { + LinkedList nodeNames = new LinkedList(); + HashMap> topology = new HashMap>(); + int nodeNum = 0; + try { + FileReader reader = new FileReader(new File(conf.confFilePath)); + Parser parser = new Parser(); + parser.parse(reader); + ArrayList graphs = parser.getGraphs(); + for (Graph graph : graphs) { + ArrayList nodes = graph.getNodes(false); + nodeNum = nodes.size(); + for (Node node : nodes) { + String nodeName = node.getId().getId(); + nodeNames.add(nodeName); + topology.put(nodeName, new LinkedList()); + } + ArrayList edges = graph.getEdges(); + HashMap hash = new HashMap(); + for (Edge edge : edges) { + String connection = edge.getAttribute("label"); + String source = edge.getSource().getNode().getId().getId(); + String target = edge.getTarget().getNode().getId().getId(); + LinkedList 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(); } - - } catch (FileNotFoundException e) { - logger.error("File not found: " + conf.confFilePath); - e.printStackTrace(); - } catch (ParseException e) { - logger.error("File format error: " + conf.confFilePath); - e.printStackTrace(); + + IncomingHosts cs1 = new IncomingHosts(topology, nodeNames); + cs1.host.setKey("local", "host"); + + ConfigWaiter cs3 = new ConfigWaiter(nodeNum); + cs3.done.setKey("local", "done"); + } else { + System.out.println("mode -t"); + int cominghostCount = 0; + ods.put("hostCount", cominghostCount); + new ComingServiceHosts(); } - - IncomingHosts cs1 = new IncomingHosts(topology, nodeNames); - cs1.host.setKey("local", "host"); - - TopologyFinish cs2 = new TopologyFinish(); - cs2.finish.setKey("local", "finish"); - - ConfigWaiter cs3 = new ConfigWaiter(nodeNum); - cs3.done.setKey("local", "done"); } } diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/manager/TopologyManagerConfig.java --- a/src/main/java/alice/topology/manager/TopologyManagerConfig.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/manager/TopologyManagerConfig.java Mon Jun 23 14:02:36 2014 +0900 @@ -5,12 +5,15 @@ public class TopologyManagerConfig extends Config { public String confFilePath; + public boolean extendTopology = false; public TopologyManagerConfig(String[] args) { super(args); for (int i = 0; i < args.length; i++) { if ("-conf".equals(args[i])) { confFilePath = args[++i]; + } else if ("-t".equals(args[i])) { + extendTopology = true; } } } diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/node/ConfigurationFinish.java --- a/src/main/java/alice/topology/node/ConfigurationFinish.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/node/ConfigurationFinish.java Mon Jun 23 14:02:36 2014 +0900 @@ -23,6 +23,8 @@ ods.put("manager", "done", ValueFactory.createNilValue()); Start cs = new Start(startCS); cs.done.setKey("manager", "start"); + + new NewConnection(); return; } diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/node/IncomingAbstractHostName.java --- a/src/main/java/alice/topology/node/IncomingAbstractHostName.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/node/IncomingAbstractHostName.java Mon Jun 23 14:02:36 2014 +0900 @@ -20,7 +20,6 @@ IncomingConnectionInfo cs = new IncomingConnectionInfo(absName, 0); cs.hostInfo.setKey("manager", absName); host.setABSName(absName); - ods.put("manager","_ABS_IP", host); } } diff -r 91e1b063a89f -r ca2947303438 src/main/java/alice/topology/node/IncomingConnectionInfo.java --- a/src/main/java/alice/topology/node/IncomingConnectionInfo.java Sun Jun 22 23:12:02 2014 +0900 +++ b/src/main/java/alice/topology/node/IncomingConnectionInfo.java Mon Jun 23 14:02:36 2014 +0900 @@ -36,7 +36,6 @@ } HostMessage hostInfo = this.hostInfo.asClass(HostMessage.class); - //System.out.println(hostInfo.reconnectFlag); DataSegment.connect(hostInfo.connectionName, hostInfo.reverseName, hostInfo.name, hostInfo.port); ods.put(hostInfo.connectionName, "reverseKey", hostInfo.reverseName); connectionList.add(hostInfo.connectionName);