Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/IncomingHosts.java @ 55:34181394333f
fix RecordTopology
author | akahori |
---|---|
date | Thu, 23 Aug 2018 10:31:48 +0900 |
parents | 8dfd93810041 |
children | f4b388422045 |
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 org.apache.log4j.Logger; import java.util.HashMap; import java.util.LinkedList; public class IncomingHosts extends CodeGear { @Take // Topology from parse file HashMap<String, LinkedList<NodeInfo>> resultParse; @Take // nodeName list LinkedList<String> nodeNames; @Take // new coming host info HostMessage newHost; //@Take @Peek HashMap<String, String> absCookieTable; @Take String MD5; private Logger log = Logger.getLogger(IncomingHosts.class); public IncomingHosts() { } @Override public void run(CodeGearManager cgm) { // not have or match cookie String nodeName = nodeNames.poll(); // Manager connect to Node cgm.createRemoteDGM(nodeName, newHost.hostName, newHost.port); getDGM(nodeName).put( "host", nodeName); absCookieTable.put(MD5, nodeName); //getLocalDGM().put("absCookieTable", absCookieTable); getDGM(nodeName).put("cookie", MD5); log.info( "toplology manager connected from " + nodeName); LinkedList<NodeInfo> nodeInfoList = resultParse.get(nodeName); for (NodeInfo nodeInfo : nodeInfoList) { HostMessage hostMessage = new HostMessage(newHost.hostName, newHost.port, nodeInfo.connectionName, nodeInfo.reverseName); hostMessage.absName = nodeName; hostMessage.remoteAbsName = nodeInfo.sourceNodeName; getLocalDGM().put("nodeInfo", hostMessage); getLocalDGM().put(nodeInfo.sourceNodeName, hostMessage); log.info(" write to " + nodeInfo.sourceNodeName + " config message =" + hostMessage.toString() + " remain " + Integer.toString((nodeNames.size()))); // RecordTopologyは, !conf.dynamic のときは呼ばれない. cgm.setup(new RecordTopology()); } log.info(" remaining configure host = " + Integer.toString(nodeNames.size())); if (nodeNames.isEmpty()) { // configuration finish for (String key : resultParse.keySet()) { log.info(" write to " + key + " end message =" + (new HostMessage("",0,"","")).toString()); getLocalDGM().put(key, new HostMessage("",0,"","")); // end mark } } getLocalDGM().put("nodeNames", nodeNames); getLocalDGM().put("resultParse", resultParse); cgm.setup(new IncomingHosts()); } }