Mercurial > hg > Database > Alice
view src/main/java/alice/topology/manager/IncomingHosts.java @ 647:e321c5ec9b58
fix toplogy manager; ring worked
author | suruga |
---|---|
date | Sun, 31 Dec 2017 19:32:27 +0900 |
parents | 646f705e65b1 |
children |
line wrap: on
line source
package alice.topology.manager; import java.util.HashMap; import java.util.LinkedList; import org.apache.log4j.Logger; 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 IncomingHosts extends CodeSegment { private Receiver topology = ids.create(CommandType.TAKE); // Topology from parse file private Receiver nodeNames = ids.create(CommandType.TAKE); // nodeName list private Receiver host = ids.create(CommandType.TAKE); // new coming host info 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() { this.topology.setKey("resultParse"); this.nodeNames.setKey("nodeNames"); this.host.setKey("newHost"); this.absCookieTable.setKey("absCookieTable"); this.cookie.setKey("MD5"); } @Override public void run() { HostMessage host = this.host.asClass(HostMessage.class); @SuppressWarnings("unchecked") HashMap<String, String> absCookieTable = this.absCookieTable.asClass(HashMap.class); @SuppressWarnings("unchecked") HashMap<String, LinkedList<NodeInfo>> topology = this.topology.asClass(HashMap.class); @SuppressWarnings("unchecked") LinkedList<String> nodeNames = this.nodeNames.asClass(LinkedList.class); // not have or match cookie String nodeName = nodeNames.poll(); // Manager connect to Node DataSegment.connect(nodeName, "", host.name, host.port); ods.put(nodeName, "host", nodeName); 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; ods.put("nodeInfo", newHost); ods.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()); ods.put("local", key, new HostMessage("",0,"","")); // end mark } } ods.put(this.nodeNames.key, nodeNames); ods.put(this.topology.key, topology); new IncomingHosts(); } }