Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/CreateTreeTopology.java @ 94:87a203c99177
update HostMessage refactor
author | akahori |
---|---|
date | Sat, 15 Sep 2018 18:59:12 +0900 |
parents | 7abfe041b75c |
children | 5cd99bac9abd |
line wrap: on
line source
package christie.topology.manager; import christie.annotation.Peek; import christie.annotation.Take; import christie.codegear.CodeGear; import christie.codegear.CodeGearManager; import christie.topology.HostMessage; import java.util.HashMap; public class CreateTreeTopology extends CodeGear{ @Take HostMessage newHost; @Take int hostCount; @Peek HashMap<String, HostMessage> nameTable; @Take String MD5; @Peek HashMap<String, String> absCookieTable; @Peek ParentManager parentManager; public CreateTreeTopology(){ } @Override protected void run(CodeGearManager cgm) { System.out.println("cookie:" + MD5); String nodeName = "node" + hostCount; // Manager connect to Node String newHostName = newHost.getHostName(); int newHostPort = newHost.getPort(); cgm.createRemoteDGM(nodeName, newHostName, newHostPort); getDGM(nodeName).put("nodeName", nodeName); getDGM(nodeName).put("cookie", MD5); absCookieTable.put(MD5, nodeName); getLocalDGM().put("hostCount", hostCount + 1); newHost.setAlive(true); nameTable.put(nodeName, newHost); parentManager.register(nodeName); if (hostCount == 0) { // どこにも繋がれるところがないので, ルートのとき. // ルートなので, connectNodeNumもreverseCountも0でいい. getDGM(nodeName).put("connectNodeNum", 0); getDGM(nodeName).put("reverseCount", 0); } else { // 親のみにつながればいいので1 getDGM(nodeName).put("connectNodeNum", 1); // put parent information own String parentNodeName = parentManager.getMyParent(); HostMessage parentHost = nameTable.get(parentNodeName); // 相手からhostNameとportはもらっているので, nodeの情報だけ与えれば良い. parentHost.setNodeInfo(parentNodeName, "parent", nodeName); getLocalDGM().put("nodeInfo", parentHost); cgm.setup(new RecordTopology()); // newChildHost, newHostも同じ newHost.setNodeInfo(nodeName, "child" + parentManager.getMyNumber(), parentNodeName); getLocalDGM().put("nodeInfo", newHost); cgm.setup(new RecordTopology()); } getDGM(nodeName).put("start", "start"); cgm.setup(new CreateTreeTopology()); } }