Mercurial > hg > Database > Alice
comparison src/main/java/alice/topology/manager/IncomingHosts.java @ 437:b9fd22d9f6c5 dispose
refactoring IncomingHosts.java
author | sugi |
---|---|
date | Mon, 18 Aug 2014 15:54:53 +0900 |
parents | 41bb86275910 |
children | c973f7ee7c91 |
comparison
equal
deleted
inserted
replaced
436:a9ed8e932a1e | 437:b9fd22d9f6c5 |
---|---|
11 import alice.datasegment.Receiver; | 11 import alice.datasegment.Receiver; |
12 import alice.topology.HostMessage; | 12 import alice.topology.HostMessage; |
13 | 13 |
14 public class IncomingHosts extends CodeSegment { | 14 public class IncomingHosts extends CodeSegment { |
15 | 15 |
16 HashMap<String, LinkedList<NodeInfo>> topology; | 16 private Receiver topology = ids.create(CommandType.TAKE); // Topology from parse file |
17 LinkedList<String> nodeNames; | 17 private Receiver nodeNames = ids.create(CommandType.TAKE); // nodeName list |
18 private Receiver host = ids.create(CommandType.TAKE); //HostMessage | 18 private Receiver host = ids.create(CommandType.TAKE); // new coming host info |
19 private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap | 19 private Receiver absCookieTable = ids.create(CommandType.TAKE); // cookie, AbsName HashMap |
20 private Receiver cookie = ids.create(CommandType.TAKE); // MD5 | 20 private Receiver cookie = ids.create(CommandType.TAKE); // MD5 |
21 | 21 |
22 public IncomingHosts(HashMap<String, LinkedList<NodeInfo>> topology, | 22 public IncomingHosts() { |
23 LinkedList<String> nodeNames) { | 23 this.topology.setKey("resultParse"); |
24 this.topology = topology; | 24 this.nodeNames.setKey("nodeNames"); |
25 this.nodeNames = nodeNames; | |
26 this.host.setKey("host"); | 25 this.host.setKey("host"); |
27 this.absCookieTable.setKey("absCookieTable"); | 26 this.absCookieTable.setKey("absCookieTable"); |
28 this.cookie.setKey("MD5"); | 27 this.cookie.setKey("MD5"); |
29 } | 28 } |
30 | 29 |
31 @Override | 30 @Override |
32 public void run() { | 31 public void run() { |
33 HostMessage host = this.host.asClass(HostMessage.class); | 32 HostMessage host = this.host.asClass(HostMessage.class); |
34 @SuppressWarnings("unchecked") | 33 @SuppressWarnings("unchecked") |
35 HashMap<String, String> absCookieTable = this.absCookieTable.asClass(HashMap.class); | 34 HashMap<String, String> absCookieTable = this.absCookieTable.asClass(HashMap.class); |
36 boolean match = false; | 35 @SuppressWarnings("unchecked") |
37 // check cookie | 36 HashMap<String, LinkedList<NodeInfo>> topology = this.topology.asClass(HashMap.class); |
38 if (host.cookie != null) { | 37 @SuppressWarnings("unchecked") |
39 if (absCookieTable.containsKey(host.cookie)){ | 38 LinkedList<String> nodeNames = this.nodeNames.asClass(LinkedList.class); |
40 match = true; | 39 |
41 System.out.println("cookie is match"); | 40 |
42 host.absName = absCookieTable.get(host.cookie); | 41 System.out.println("new node come"); |
43 ods.put("reconnectHost", host); | 42 // not have or match cookie |
44 | 43 String nodeName = nodeNames.poll(); |
45 ods.put(this.absCookieTable.key, absCookieTable); | 44 // Manager connect to Node |
46 new SearchHostName(); | 45 DataSegment.connect(nodeName, "", host.name, host.port); |
47 | 46 ods.put(nodeName, "host", nodeName); |
47 | |
48 String cookie = this.cookie.asString(); | |
49 absCookieTable.put(cookie, nodeName); | |
50 ods.put(this.absCookieTable.key, absCookieTable); | |
51 | |
52 ods.put(nodeName, "cookie", cookie); | |
53 | |
54 LinkedList<NodeInfo> nodes = topology.get(nodeName); | |
55 for (NodeInfo nodeInfo : nodes) { | |
56 HostMessage newHost = new HostMessage(host.name, host.port, | |
57 nodeInfo.connectionName, nodeInfo.reverseName); | |
58 newHost.absName = nodeName; | |
59 newHost.remoteAbsName = nodeInfo.sourceNodeName; | |
60 | |
61 ods.put("nodeInfo", newHost); | |
62 ods.put(nodeInfo.sourceNodeName, newHost); | |
63 new RecodeTopology(); | |
64 } | |
65 | |
66 if (nodeNames.isEmpty()) { | |
67 // configuration finish | |
68 for (String key : topology.keySet()) { | |
69 ods.put("local", key, ValueFactory.createNilValue()); | |
48 } | 70 } |
49 } | 71 } |
50 | 72 |
51 if (!match) { | 73 ods.put(this.nodeNames.key, nodeNames); |
52 System.out.println("new node come"); | 74 ods.put(this.topology.key, topology); |
53 // not have or match cookie | |
54 String nodeName = nodeNames.poll(); | |
55 // Manager connect to Node | |
56 DataSegment.connect(nodeName, "", host.name, host.port); | |
57 ods.put(nodeName, "host", nodeName); | |
58 | |
59 String cookie = this.cookie.asString(); | |
60 absCookieTable.put(cookie, nodeName); | |
61 ods.put(this.absCookieTable.key, absCookieTable); | |
62 | |
63 ods.put(nodeName, "cookie", cookie); | |
64 | |
65 LinkedList<NodeInfo> nodes = topology.get(nodeName); | |
66 for (NodeInfo nodeInfo : nodes) { | |
67 HostMessage newHost = new HostMessage(host.name, host.port, | |
68 nodeInfo.connectionName, nodeInfo.reverseName); | |
69 newHost.absName = nodeName; | |
70 newHost.remoteAbsName = nodeInfo.sourceNodeName; | |
71 | |
72 ods.put("nodeInfo", newHost); | |
73 ods.put(nodeInfo.sourceNodeName, newHost); | |
74 new RecodeTopology(); | |
75 } | |
76 | |
77 if (nodeNames.isEmpty()) { | |
78 // configuration finish | |
79 for (String key : topology.keySet()) { | |
80 ods.put("local", key, ValueFactory.createNilValue()); | |
81 } | |
82 } | |
83 } | |
84 ods.put("orderHash", "order"); | 75 ods.put("orderHash", "order"); |
85 new IncomingHosts(topology, nodeNames); | 76 new IncomingHosts(); |
86 } | 77 } |
87 } | 78 } |