Mercurial > hg > Database > Alice
annotate src/main/java/alice/topology/manager/CreateTreeTopology.java @ 599:3284428f525e dispose
add MetaCodeSegment & MetaDSM
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Feb 2016 01:16:35 +0900 |
parents | 8f765e3eed24 |
children | 8a9fd716c335 |
rev | line source |
---|---|
472 | 1 package alice.topology.manager; |
2 | |
3 import java.util.HashMap; | |
599
3284428f525e
add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
584
diff
changeset
|
4 |
3284428f525e
add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
584
diff
changeset
|
5 import alice.codesegment.MetaCodeSegment; |
472 | 6 import org.msgpack.type.ValueFactory; |
7 | |
8 import alice.codesegment.CodeSegment; | |
9 import alice.datasegment.CommandType; | |
10 import alice.datasegment.DataSegment; | |
11 import alice.datasegment.Receiver; | |
12 import alice.topology.HostMessage; | |
13 | |
599
3284428f525e
add MetaCodeSegment & MetaDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
584
diff
changeset
|
14 public class CreateTreeTopology extends MetaCodeSegment { |
472 | 15 |
16 private Receiver info = ids.create(CommandType.TAKE); | |
17 private Receiver info1 = ids.create(CommandType.TAKE); | |
584
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
18 private Receiver info2 = ids.create(CommandType.TAKE); |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
19 private Receiver info3 = ids.create(CommandType.TAKE); |
472 | 20 private Receiver info4 = ids.create(CommandType.TAKE); |
475 | 21 private Receiver info6 = ids.create(CommandType.TAKE); |
472 | 22 |
514 | 23 public CreateTreeTopology(){ |
584
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
24 info.setKey("newHost"); //HostMessage |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
25 info1.setKey("hostCount"); //incoming host count number for put node name like node0, node1, node2 |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
26 info2.setKey("nameTable"); //HashMap.<String:nodeName, HostMessage> |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
27 info3.setKey("MD5"); //String:node's cookie that created by CreateHash |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
28 info4.setKey("absCookieTable"); //HashMap<String:cookie, String:nodeName> |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
29 info6.setKey("parentManager"); //ParentManager |
472 | 30 } |
31 | |
32 @SuppressWarnings("unchecked") | |
33 @Override | |
34 public void run() { | |
35 String cookie = info3.asString(); | |
576 | 36 System.out.println("cookie:" + cookie); |
472 | 37 HostMessage host = info.asClass(HostMessage.class); |
38 int comingHostCount = info1.asInteger(); | |
475 | 39 ParentManager manager = info6.asClass(ParentManager.class); |
472 | 40 |
475 | 41 HashMap<String, HostMessage> nameTable = info2.asClass(HashMap.class); |
472 | 42 HashMap<String, String> absCookieTable = info4.asClass(HashMap.class); |
43 | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
44 String nodeName = "node"+comingHostCount; |
472 | 45 // Manager connect to Node |
480 | 46 DataSegment.connect(nodeName, nodeName, host.name, host.port); |
584
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
47 ods.put(nodeName, "host"+host.topMNum, nodeName); |
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
48 ods.put(nodeName, "cookie"+host.topMNum, cookie); |
472 | 49 |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
50 absCookieTable.put(cookie, nodeName); |
472 | 51 ods.put(info4.key, absCookieTable); |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
52 ods.put(info1.key, comingHostCount+1); |
482 | 53 host.alive = true; |
475 | 54 nameTable.put(nodeName, host); |
55 manager.register(nodeName); | |
472 | 56 |
584
8f765e3eed24
add Topology Manager Number to Topology Node Key
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
578
diff
changeset
|
57 if (comingHostCount!=0) {///ルートでなければ親情報を持つ |
475 | 58 // put parent information own |
59 String parentAbsName = manager.getMyParent(); | |
60 HostMessage parent = nameTable.get(parentAbsName); | |
61 int num = manager.getMyNumber(); | |
62 | |
63 HostMessage newHost = new HostMessage(parent.name, parent.port, "parent", "child"+num); | |
64 newHost.absName = parentAbsName; | |
65 newHost.remoteAbsName = nodeName; // address | |
66 ods.put(newHost.remoteAbsName, newHost); | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
67 |
475 | 68 ods.put("nodeInfo", newHost); |
69 new RecodeTopology(); | |
70 | |
71 // put own information parent | |
72 newHost = new HostMessage(host.name, host.port, "child"+num, "parent"); | |
73 newHost.absName = nodeName; | |
74 newHost.remoteAbsName = parentAbsName; | |
75 | |
76 ods.put(newHost.remoteAbsName, newHost); | |
77 ods.put("nodeInfo", newHost); | |
78 new RecodeTopology(); | |
79 | |
472 | 80 } |
81 | |
475 | 82 ods.put(info2.key, nameTable); |
83 ods.put(info6.key, manager); | |
472 | 84 ods.put(nodeName, ValueFactory.createNilValue()); |
85 if (comingHostCount==0) | |
86 ods.put("start", ValueFactory.createNilValue()); | |
87 } | |
88 } |