annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
akahori
parents:
diff changeset
1 package christie.topology.manager;
akahori
parents:
diff changeset
2
akahori
parents:
diff changeset
3
akahori
parents:
diff changeset
4 import christie.annotation.Peek;
akahori
parents:
diff changeset
5 import christie.annotation.Take;
akahori
parents:
diff changeset
6 import christie.codegear.CodeGear;
akahori
parents:
diff changeset
7 import christie.codegear.CodeGearManager;
akahori
parents:
diff changeset
8 import christie.topology.HostMessage;
akahori
parents:
diff changeset
9 import org.apache.log4j.Logger;
akahori
parents:
diff changeset
10
akahori
parents:
diff changeset
11 import java.util.HashMap;
akahori
parents:
diff changeset
12 import java.util.LinkedList;
akahori
parents:
diff changeset
13
akahori
parents:
diff changeset
14 public class IncomingHosts extends CodeGear {
akahori
parents:
diff changeset
15
akahori
parents:
diff changeset
16 @Peek // Topology from parse file
akahori
parents:
diff changeset
17 HashMap<String, LinkedList<NodeInfo>> topology;
akahori
parents:
diff changeset
18
akahori
parents:
diff changeset
19 @Peek // nodeName list
akahori
parents:
diff changeset
20 LinkedList<String> nodeNames;
akahori
parents:
diff changeset
21
akahori
parents:
diff changeset
22 @Take // new coming host info
akahori
parents:
diff changeset
23 HostMessage host;
akahori
parents:
diff changeset
24
akahori
parents:
diff changeset
25
akahori
parents:
diff changeset
26 //private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap
akahori
parents:
diff changeset
27 //private Receiver cookie = ids.create(CommandType.TAKE); // MD5
akahori
parents:
diff changeset
28 private Logger log = Logger.getLogger(IncomingHosts.class);
akahori
parents:
diff changeset
29
akahori
parents:
diff changeset
30 public IncomingHosts() {
akahori
parents:
diff changeset
31
akahori
parents:
diff changeset
32 }
akahori
parents:
diff changeset
33
akahori
parents:
diff changeset
34 @Override
akahori
parents:
diff changeset
35 public void run(CodeGearManager cgm) {
akahori
parents:
diff changeset
36
akahori
parents:
diff changeset
37 // not have or match cookie
akahori
parents:
diff changeset
38 String nodeName = nodeNames.poll();
akahori
parents:
diff changeset
39 // Manager connect to Node
akahori
parents:
diff changeset
40
akahori
parents:
diff changeset
41 cgm.createRemoteDGM(nodeName, host.name, host.port);
akahori
parents:
diff changeset
42 getDGM(nodeName).put( "host", nodeName);
akahori
parents:
diff changeset
43
akahori
parents:
diff changeset
44
akahori
parents:
diff changeset
45 /* cookie
akahori
parents:
diff changeset
46 String cookie = this.cookie.asString();
akahori
parents:
diff changeset
47 absCookieTable.put(cookie, nodeName);
akahori
parents:
diff changeset
48 ods.put(this.absCookieTable.key, absCookieTable);
akahori
parents:
diff changeset
49
akahori
parents:
diff changeset
50 ods.put(nodeName, "cookie", cookie);
akahori
parents:
diff changeset
51 */
akahori
parents:
diff changeset
52 log.info( "toplology manager connected from " + nodeName);
akahori
parents:
diff changeset
53
akahori
parents:
diff changeset
54 LinkedList<NodeInfo> nodes = topology.get(nodeName);
akahori
parents:
diff changeset
55 for (NodeInfo nodeInfo : nodes) {
akahori
parents:
diff changeset
56 HostMessage newHost = new HostMessage(host.name, host.port,
akahori
parents:
diff changeset
57 nodeInfo.connectionName, nodeInfo.reverseName);
akahori
parents:
diff changeset
58 newHost.absName = nodeName;
akahori
parents:
diff changeset
59 newHost.remoteAbsName = nodeInfo.sourceNodeName;
akahori
parents:
diff changeset
60
akahori
parents:
diff changeset
61 getLocalDGM().put("nodeInfo", newHost);
akahori
parents:
diff changeset
62 getLocalDGM().put(nodeInfo.sourceNodeName, newHost);
akahori
parents:
diff changeset
63 log.info(" write to " + nodeInfo.sourceNodeName + " config message =" + newHost.toString() + " remain "
akahori
parents:
diff changeset
64 + Integer.toString((nodeNames.size())));
akahori
parents:
diff changeset
65 new RecordTopology();
akahori
parents:
diff changeset
66 }
akahori
parents:
diff changeset
67
akahori
parents:
diff changeset
68 log.info(" remaining configure host = " + Integer.toString(nodeNames.size()));
akahori
parents:
diff changeset
69 if (nodeNames.isEmpty()) {
akahori
parents:
diff changeset
70 // configuration finish
akahori
parents:
diff changeset
71 for (String key : topology.keySet()) {
akahori
parents:
diff changeset
72 log.info(" write to " + key + " end message =" + (new HostMessage("",0,"","")).toString());
akahori
parents:
diff changeset
73 getLocalDGM().put(key, new HostMessage("",0,"","")); // end mark
akahori
parents:
diff changeset
74 }
akahori
parents:
diff changeset
75 }
akahori
parents:
diff changeset
76
akahori
parents:
diff changeset
77 // idsのときはkeyメソッドが使えたけど, 今はlistなのでエラーが出る.
akahori
parents:
diff changeset
78 // これが何をする処理か読めていないので, 今はコメントアウト.
akahori
parents:
diff changeset
79 //getLocalDGM().put(this.nodeNames.key, nodeNames);
akahori
parents:
diff changeset
80 //getLocalDGM().put(this.topology.key, topology);
akahori
parents:
diff changeset
81
akahori
parents:
diff changeset
82 cgm.setup(new IncomingHosts());
akahori
parents:
diff changeset
83 }
akahori
parents:
diff changeset
84 }