Mercurial > hg > Database > Alice
annotate src/main/java/alice/topology/manager/CreateTreeTopology.java @ 647:e321c5ec9b58
fix toplogy manager; ring worked
author | suruga |
---|---|
date | Sun, 31 Dec 2017 19:32:27 +0900 |
parents | 8d9f35701fdb |
children |
rev | line source |
---|---|
472 | 1 package alice.topology.manager; |
2 | |
3 import java.util.HashMap; | |
647 | 4 |
5 import alice.datasegment.DataSegmentManager; | |
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 | |
514 | 14 public class CreateTreeTopology extends CodeSegment{ |
472 | 15 |
16 private Receiver info = ids.create(CommandType.TAKE); | |
17 private Receiver info1 = ids.create(CommandType.TAKE); | |
18 private Receiver info2 = ids.create(CommandType.TAKE); // HashMap | |
19 private Receiver info3 = ids.create(CommandType.TAKE); // MD5 | |
20 private Receiver info4 = ids.create(CommandType.TAKE); | |
475 | 21 private Receiver info6 = ids.create(CommandType.TAKE); |
647 | 22 private Receiver info7 = ids.create(CommandType.PEEK); |
472 | 23 |
514 | 24 public CreateTreeTopology(){ |
472 | 25 info.setKey("newHost"); |
26 info1.setKey("hostCount"); | |
475 | 27 info2.setKey("nameTable"); |
472 | 28 info3.setKey("MD5"); |
29 info4.setKey("absCookieTable"); | |
475 | 30 info6.setKey("parentManager"); |
647 | 31 info7.setKey("config"); |
472 | 32 } |
33 | |
34 @SuppressWarnings("unchecked") | |
35 @Override | |
36 public void run() { | |
37 String cookie = info3.asString(); | |
576 | 38 System.out.println("cookie:" + cookie); |
472 | 39 HostMessage host = info.asClass(HostMessage.class); |
40 int comingHostCount = info1.asInteger(); | |
475 | 41 ParentManager manager = info6.asClass(ParentManager.class); |
647 | 42 TopologyManagerConfig topologyManagerConfig = info7.asClass(TopologyManagerConfig.class); |
475 | 43 HashMap<String, HostMessage> nameTable = info2.asClass(HashMap.class); |
472 | 44 HashMap<String, String> absCookieTable = info4.asClass(HashMap.class); |
45 | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
46 String nodeName = "node"+comingHostCount; |
472 | 47 // Manager connect to Node |
647 | 48 if (host.port == 0) { |
49 // local test mode | |
50 DataSegmentManager dsm = DataSegment.get(host.name); | |
51 DataSegment.register(nodeName, dsm); | |
52 } else { | |
53 DataSegment.connect(nodeName, nodeName, host.name, host.port); | |
54 } | |
472 | 55 ods.put(nodeName, "host", nodeName); |
56 ods.put(nodeName, "cookie", cookie); | |
57 | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
58 absCookieTable.put(cookie, nodeName); |
472 | 59 ods.put(info4.key, absCookieTable); |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
60 ods.put(info1.key, comingHostCount+1); |
482 | 61 host.alive = true; |
475 | 62 nameTable.put(nodeName, host); |
63 manager.register(nodeName); | |
472 | 64 |
65 if (comingHostCount!=0) { | |
475 | 66 // put parent information own |
67 String parentAbsName = manager.getMyParent(); | |
68 HostMessage parent = nameTable.get(parentAbsName); | |
69 int num = manager.getMyNumber(); | |
70 | |
71 HostMessage newHost = new HostMessage(parent.name, parent.port, "parent", "child"+num); | |
72 newHost.absName = parentAbsName; | |
73 newHost.remoteAbsName = nodeName; // address | |
74 ods.put(newHost.remoteAbsName, newHost); | |
523
145c425db88d
add CompressedLDSM
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
518
diff
changeset
|
75 |
475 | 76 ods.put("nodeInfo", newHost); |
639 | 77 new RecordTopology(); |
475 | 78 |
79 // put own information parent | |
80 newHost = new HostMessage(host.name, host.port, "child"+num, "parent"); | |
81 newHost.absName = nodeName; | |
82 newHost.remoteAbsName = parentAbsName; | |
83 | |
84 ods.put(newHost.remoteAbsName, newHost); | |
85 ods.put("nodeInfo", newHost); | |
639 | 86 new RecordTopology(); |
475 | 87 |
472 | 88 } |
89 | |
475 | 90 ods.put(info2.key, nameTable); |
91 ods.put(info6.key, manager); | |
647 | 92 ods.put(nodeName, new HostMessage("",0,"","") ); |
472 | 93 if (comingHostCount==0) |
94 ods.put("start", ValueFactory.createNilValue()); | |
95 } | |
96 } |