Mercurial > hg > Database > Christie
view src/main/java/christie/topology/manager/IncomingHosts.java @ 41:cf5a75bc3e55
add
author | akahori |
---|---|
date | Tue, 31 Jul 2018 17:46:32 +0900 |
parents | |
children | 6664efac18ee |
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 { @Peek // Topology from parse file HashMap<String, LinkedList<NodeInfo>> topology; @Peek // nodeName list LinkedList<String> nodeNames; @Take // new coming host info HostMessage host; //private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap //private Receiver cookie = ids.create(CommandType.TAKE); // 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, host.name, host.port); getDGM(nodeName).put( "host", nodeName); /* cookie String cookie = this.cookie.asString(); absCookieTable.put(cookie, nodeName); ods.put(this.absCookieTable.key, absCookieTable); ods.put(nodeName, "cookie", cookie); */ log.info( "toplology manager connected from " + nodeName); LinkedList<NodeInfo> nodes = topology.get(nodeName); for (NodeInfo nodeInfo : nodes) { HostMessage newHost = new HostMessage(host.name, host.port, nodeInfo.connectionName, nodeInfo.reverseName); newHost.absName = nodeName; newHost.remoteAbsName = nodeInfo.sourceNodeName; getLocalDGM().put("nodeInfo", newHost); getLocalDGM().put(nodeInfo.sourceNodeName, newHost); log.info(" write to " + nodeInfo.sourceNodeName + " config message =" + newHost.toString() + " remain " + Integer.toString((nodeNames.size()))); new RecordTopology(); } log.info(" remaining configure host = " + Integer.toString(nodeNames.size())); if (nodeNames.isEmpty()) { // configuration finish for (String key : topology.keySet()) { log.info(" write to " + key + " end message =" + (new HostMessage("",0,"","")).toString()); getLocalDGM().put(key, new HostMessage("",0,"","")); // end mark } } // idsのときはkeyメソッドが使えたけど, 今はlistなのでエラーが出る. // これが何をする処理か読めていないので, 今はコメントアウト. //getLocalDGM().put(this.nodeNames.key, nodeNames); //getLocalDGM().put(this.topology.key, topology); cgm.setup(new IncomingHosts()); } }