annotate src/main/java/alice/topology/manager/IncomingHosts.java @ 345:8f71c3e6f11d

Change directory structure Maven standard
author sugi
date Wed, 16 Apr 2014 18:26:07 +0900
parents
children ffaacab84d1a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
345
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
1 package alice.topology.manager;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
2
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
3 import java.util.ArrayList;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
4 import java.util.HashMap;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
5 import java.util.LinkedList;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
6
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
7 import org.msgpack.type.ValueFactory;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
8
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
9 import alice.codesegment.CodeSegment;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
10 import alice.datasegment.CommandType;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
11 import alice.datasegment.DataSegment;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
12 import alice.datasegment.Receiver;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
13 import alice.topology.HostMessage;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
14
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
15 public class IncomingHosts extends CodeSegment {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
16
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
17 HashMap<String, LinkedList<NodeInfo>> topology;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
18 LinkedList<String> nodeNames;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
19 Receiver host = ids.create(CommandType.TAKE);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
20 Receiver connection = ids.create(CommandType.TAKE);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
21
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
22 public IncomingHosts(HashMap<String, LinkedList<NodeInfo>> topology, LinkedList<String> nodeNames) {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
23 this.topology = topology;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
24 this.nodeNames = nodeNames;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
25 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
26
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
27 @Override
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
28 public void run() {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
29 HostMessage host = this.host.asClass(HostMessage.class);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
30 @SuppressWarnings("unchecked")
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
31 HashMap<String, ArrayList<HostMessage>> connectionList = this.connection.asClass(HashMap.class);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
32
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
33 String nodeName = nodeNames.poll();
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
34 // Manager connect to Node
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
35
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
36 DataSegment.connect(nodeName, "", host.name, host.port, host.reconnectFlag);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
37 ods.put(nodeName, "host", nodeName);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
38 LinkedList<NodeInfo> nodes = topology.get(nodeName);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
39 ArrayList<HostMessage> list;
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
40 for (NodeInfo nodeInfo : nodes) {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
41 HostMessage newHost = new HostMessage(host.name, host.port, nodeInfo.connectionName, nodeInfo.reverseName);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
42 ods.put("local", nodeInfo.sourceNodeName, newHost);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
43
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
44 if (connectionList.containsKey(nodeInfo.sourceNodeName)){
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
45 list = connectionList.get(nodeInfo.sourceNodeName);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
46 } else {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
47 list = new ArrayList<HostMessage>();
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
48 connectionList.put(nodeInfo.sourceNodeName, list);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
49
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
50 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
51 list.add(newHost);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
52 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
53 ods.update("local", "connection", connectionList);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
54
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
55 if (nodeNames.isEmpty()) {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
56 // configuration finish
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
57 for (String key : topology.keySet()) {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
58 ods.put("local", key, ValueFactory.createNilValue());
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
59 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
60 } else {
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
61 IncomingHosts cs = new IncomingHosts(topology, nodeNames);
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
62 cs.host.setKey("local", "host");
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
63 cs.connection.setKey("local", "connection");
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
64 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
65 }
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
66
8f71c3e6f11d Change directory structure Maven standard
sugi
parents:
diff changeset
67 }