Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/CreateTreeTopology.java @ 168:c7300be0fff6
fix incomingHosts end message
author | akahori |
---|---|
date | Tue, 22 Jan 2019 16:00:29 +0900 |
parents | 5c5a5da0d13d |
children | 6eb548c188e5 |
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 christie.topology.TopologyDataGear; import java.util.HashMap; public class CreateTreeTopology extends CodeGear{ @Take HostMessage newHost; @Take int hostCount; @Take HashMap<String, HostMessage> nameTable; @Take String MD5; @Take HashMap<String, String> absCookieTable; @Take ParentManager parentManager; public CreateTreeTopology(){ } @Override protected void run(CodeGearManager cgm) { String nodeName = "node" + hostCount; String newHostName = newHost.getHostName(); int newHostPort = newHost.getPort(); cgm.createRemoteDGM(nodeName, newHostName, newHostPort); TopologyDataGear topoDG = new TopologyDataGear(); topoDG.setNodeName(nodeName); getDGM(nodeName).put("topoDG", topoDG); getDGM(nodeName).put("cookie", MD5); absCookieTable.put(MD5, nodeName); getLocalDGM().put("absCookieTable", absCookieTable); getLocalDGM().put("hostCount", hostCount + 1); newHost.setAlive(true); nameTable.put(nodeName, newHost); parentManager.register(nodeName); if (hostCount == 0) { // どこにも繋がれるところがないので, ルートのとき. } else { // put parent information own String parentNodeName = parentManager.getMyParent(); HostMessage parentHost = nameTable.get(parentNodeName).clone(); // 相手からhostNameとportはもらっているので, nodeの情報だけ与えれば良い. parentHost.setNodeInfo(nodeName, "parent", parentNodeName); //parentHost.setNodeInfo(parentNodeName, "child", nodeName); getLocalDGM().put("nodeInfo", parentHost); getDGM(nodeName).put("remoteNodeInfo", parentHost); cgm.setup(new RecordTopology()); // newChildHost, newHostも同じ newHost.setNodeInfo(parentNodeName, "child" + parentManager.getMyNumber(), nodeName); getLocalDGM().put("nodeInfo", newHost); getDGM(parentNodeName).put("remoteNodeInfo", newHost); cgm.setup(new RecordTopology()); } getLocalDGM().put("nameTable", nameTable); getLocalDGM().put("parentManager", parentManager); getDGM(nodeName).put("remoteNodeInfo", new HostMessage() ); getDGM(nodeName).put("reverseNodeName", ""); getDGM(nodeName).put("start", "start"); getLocalDGM().put("startTime", System.currentTimeMillis()); cgm.setup(new CreateTreeTopology()); } }