changeset 402:ca2947303438 dispose

one node can work extendsTopology mode
author sugi
date Mon, 23 Jun 2014 14:02:36 +0900
parents 91e1b063a89f
children 539b7f5772c7
files src/main/java/alice/topology/HostMessage.java src/main/java/alice/topology/manager/ComingServiceHosts.java src/main/java/alice/topology/manager/StartTopologyManager.java src/main/java/alice/topology/manager/TopologyManagerConfig.java src/main/java/alice/topology/node/ConfigurationFinish.java src/main/java/alice/topology/node/IncomingAbstractHostName.java src/main/java/alice/topology/node/IncomingConnectionInfo.java
diffstat 7 files changed, 100 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- 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;
-	}
-	
 }
--- /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());
+	}
+
+}
--- 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<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;
+		if (!conf.extendTopology) {
+			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();
 			}
-			
-		} 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");
 	}
 
 }
--- 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;
 			}
 		}
 	}
--- 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;
 		}
 		
--- 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);
 	}
 
 }
--- 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);