# HG changeset patch # User KaitoMaeshiro # Date 1643213991 -32400 # Node ID c4f8630b78222745861aa49bc5fe29ad7ec4bbfd # Parent 0d2c956060d83dbe726fa8ec190ac21bc636fce2 topology manager fix diff -r 0d2c956060d8 -r c4f8630b7822 Test/Topology/TreeTestTopology/ChildCodeGear.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Test/Topology/TreeTestTopology/ChildCodeGear.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology; + + +namespace Christie_net.Test.Topology.TreeTestTopology +{ + public class ChildCodeGear : CodeGear + { + [Peek] public TopologyDataGear topoDG; + + public override void Run(CodeGearManager cgm) + { + List _CLIST = topoDG.getConnectionList(); + if(_CLIST.Contains("parent")) { + GetDgm("parent").Put("childNodeName", topoDG.getNodeName()); + }else{ + GetLocalDgm().Put("countNodeNum", 1); + cgm.Setup(new ParentCodeGear()); + } + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 Test/Topology/TreeTestTopology/ParentCodeGear.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Test/Topology/TreeTestTopology/ParentCodeGear.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,30 @@ +using System; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology.node; +using Christie_net.topology; + + + +namespace Christie_net.Test.Topology.TreeTestTopology +{ + public class ParentCodeGear : CodeGear + { + [Peek] public TopologyDataGear topoDG; + [Peek] public int maxNodeNum; + [Peek] public TopologyNodeConfig topologyNodeConfig; + [Take] public int countNodeNum; + [Take] public String childNodeName; + + public override void Run(CodeGearManager cgm) + { + Console.WriteLine(topoDG.getNodeName() + " : " + childNodeName + " accept"); + if(countNodeNum == maxNodeNum){ + GetDgm(topologyNodeConfig.getManagerKey()).Put("FINISHMESSAGE", new Message()); + }else{ + GetLocalDgm().Put("countNodeNum", countNodeNum + 1); + cgm.Setup(new ParentCodeGear()); + } + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 Test/Topology/TreeTestTopology/StartTreeTestTopology.cs --- a/Test/Topology/TreeTestTopology/StartTreeTestTopology.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/Test/Topology/TreeTestTopology/StartTreeTestTopology.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,32 @@ +using System; +using Christie_net.codegear; +using Christie_net.topology.manager; +using Christie_net.topology.node; + + +namespace Christie_net.Test.Topology.TreeTestTopology +{ + public class StartTreeTopology : StartCodeGear + { + public StartTreeTopology(CodeGearManager cgm) : base(cgm) { } + + public static void Main(string[] args) + { + int topologyManagerPort = 10000; + int topologyNodePort = 10001; + int nodeNum = 3; + String[] managerArg = {"--localPort", topologyManagerPort.ToString(), "--Topology", "tree"}; + TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig(managerArg); + new StartTopologyManager(topologyManagerConfig); + + for (int i = 0; i < nodeNum; i++) { + String[] nodeArg = { + "--managerPort", topologyManagerPort.ToString(), + "--managerHost", "localhost", + "--localPort", topologyNodePort.ToString() + i}; + TopologyNodeConfig cs = new TopologyNodeConfig(nodeArg); + new StartTopologyNode(cs, new ChildCodeGear()).Put("maxNodeNum", topologyManagerConfig.hasChild); + } + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/HostMessage.cs --- a/topology/HostMessage.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/HostMessage.cs Thu Jan 27 01:19:51 2022 +0900 @@ -3,7 +3,7 @@ using System.Collections.Generic; -namespace Christie_net.topology.HostMessage { +namespace Christie_net.topology { public class HostMessage /*: Cloneable*/ { private String hostName = ""; private int port ; diff -r 0d2c956060d8 -r c4f8630b7822 topology/TopologyDataGear.cs --- a/topology/TopologyDataGear.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/TopologyDataGear.cs Thu Jan 27 01:19:51 2022 +0900 @@ -3,7 +3,7 @@ using System.Collections; using System.Collections.Generic; -namespace Christie_net.topology.TopologyDataGear { +namespace Christie_net.topology { public class TopologyDataGear /*: Cloneable*/{ String nodeName; diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/CheckComingHost.cs --- a/topology/manager/CheckComingHost.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/CheckComingHost.cs Thu Jan 27 01:19:51 2022 +0900 @@ -2,9 +2,9 @@ using System.Collections.Generic; using Christie_net.annotation; using Christie_net.codegear; -using Christie_net.topology; +using Christie_net.topology.manager; -namespace Christie_net.topology.manager.CheckComingHost +namespace Christie_net.topology.manager { public class CheckComingHost : CodeGear { @@ -28,7 +28,7 @@ Console.WriteLine("match"); // coming host has ever joined this App GetLocalDgm().Put("reconnectHost", hostMessage); - cgm.Setup(new SearchHostName.SearchHostName()); + cgm.Setup(new SearchHostName()); } } else diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/ConfigWaiter.cs diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/CreateTreeTopology.cs --- a/topology/manager/CreateTreeTopology.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/CreateTreeTopology.cs Thu Jan 27 01:19:51 2022 +0900 @@ -3,18 +3,18 @@ using Christie_net.daemon; using Christie_net.annotation; using Christie_net.codegear; -using Christie_net.topology; +using Christie_net.topology.manager; -namespace Christie_net.topology.manager.CreateTreeTopology { +namespace Christie_net.topology.manager { public class CreateTreeTopology : CodeGear { - [Take] public HostMessage.HostMessage newHost; + [Take] public HostMessage newHost; [Take] public int hostCount; - [Take] public Dictionary nameTable; + [Take] public Dictionary nameTable; [Take] public String MD5; [Take] public Dictionary absCookieTable; - [Take] public ParentManager.ParentManager parentManager; + [Take] public ParentManager parentManager; public CreateTreeTopology() { @@ -28,7 +28,7 @@ cgm.CreateRemoteDGM(nodeName, newHostName, newHostPort); - TopologyDataGear.TopologyDataGear topoDG = new TopologyDataGear.TopologyDataGear(); + TopologyDataGear topoDG = new TopologyDataGear(); topoDG.setNodeName(nodeName); GetDgm(nodeName).Put("topoDG", topoDG); @@ -47,7 +47,7 @@ } else { // put parent information own String parentNodeName = parentManager.getMyParent(); - HostMessage.HostMessage parentHost = nameTable.get(parentNodeName).clone(); + HostMessage parentHost = nameTable.get(parentNodeName).clone(); // 相手からhostNameとportはもらっているので, nodeの情報だけ与えれば良い. diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/IncomingHosts.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/manager/IncomingHosts.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology.manager; + +namespace Christie_net.topology.manager { + + public class IncomingHosts : CodeGear + { + [Take] public Dictionary> resultParse; + [Take] public LinkedList nodeNames; + [Take] public Dictionary absCookieTable; + [Take] public HostMessage newHost;// new coming host info + [Take] public String MD5; + [Take] public Dictionary> topology; + [Peek] public TopologyDataGear topoDG; + + public IncomingHosts(){ + } + + public override void Run(CodeGearManager cgm) + { + // not have or match cookie + String nodeName = nodeNames.poll(); + GetLocalDgm().Put("nodeNames", nodeNames); + + // Manager connect to Node + cgm.CreateRemoteDGM(nodeName, + newHost.getHostName(), + newHost.getPort()); + + absCookieTable.put(MD5, nodeName); + GetLocalDgm().Put("absCookieTable", absCookieTable); + + GetDgm(nodeName).put("cookie", MD5); + + LinkedList nodeInfoList = resultParse.get(nodeName); + Put(nodeName, "connectNodeNum", nodeInfoList.Count); + if(nodeInfoList.Count == 0) Put(nodeName,"_CONNECTIONMESSAGE", new Message()); + + foreach (HostMessage nodeInfo in nodeInfoList) { + + + nodeInfo.setHostAndPort(newHost); + + //getLocalDGM().put("nodeInfo", nodeInfo); + + //getDGM(nodeName).put("remoteNodeInfo", nodeInfo); + //cgm.setup(new RecordTopology()); + + String nodeInfoNodeName = nodeInfo.getNodeName(); + LinkedList connections; + + if (!topology.ContainsKey(nodeInfoNodeName)) { + connections = new LinkedList(); + } else { + connections = topology.get(nodeInfoNodeName); + } + connections.add(nodeInfo); + topology.put(nodeInfoNodeName, connections); + } + + GetLocalDgm().Put("topology", topology); + + + if (nodeNames.isEmpty()) {//文字列が空かどうかの判定 + // configuration finish + foreach (String key in resultParse.keySet()) {//キーの取得 + topoDG.setNodeName(key); + GetDgm(key).Put("topoDG", topoDG); + if(topology.ContainsKey(key)){ + LinkedList connections = topology.get(key); + foreach(HostMessage connection in connections) { + Put(key, "remoteNodeInfo", connection); + } + } + //put(key, "remoteNodeInfo", new HostMessage()); // end mark + } + }else{ + cgm.Setup(new IncomingHosts()); + } + GetLocalDgm().Put("resultParse", resultParse); + } + } +} diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/Parent.cs --- a/topology/manager/Parent.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/Parent.cs Thu Jan 27 01:19:51 2022 +0900 @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace Christie_net.topology.manager.Parent +namespace Christie_net.topology.manager { public class Parent { diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/ParentManager.cs --- a/topology/manager/ParentManager.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/ParentManager.cs Thu Jan 27 01:19:51 2022 +0900 @@ -2,17 +2,17 @@ using System.Collections.Generic; using Christie_net.annotation; using Christie_net.codegear; -using Christie_net.topology; +using Christie_net.topology.manager; -namespace Christie_net.topology.manager.ParentManager +namespace Christie_net.topology.manager { public class ParentManager { private int maxChildren; private int position = 0; - private LinkedList list; + private LinkedList list; public ParentManager(int hasChildren){ - list = new LinkedList(); + list = new LinkedList(); maxChildren = hasChildren; } @@ -36,7 +36,7 @@ } public void register(String name) { - Parent.Parent p = new Parent.Parent(name); + Parent p = new Parent(name); list.AddLast(p); } @@ -49,17 +49,17 @@ } public void replaceAndRemove(String remove, String replace) { - Parent.Parent removeNode = find(remove); + Parent removeNode = find(remove); Remove(replace); removeNode.setName(replace); } public void remove(String remove) { - Parent.Parent removeNode = find(remove); + Parent removeNode = find(remove); list.Remove(removeNode); } - public Parent.Parent find(String name) { + public Parent find(String name) { Boolean found = false; int i = 0; for (;i getList() { + public LinkedList getList() { return list; } } diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/RecordTopology.cs --- a/topology/manager/RecordTopology.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/RecordTopology.cs Thu Jan 27 01:19:51 2022 +0900 @@ -6,19 +6,19 @@ using Christie_net.topology; -namespace Christie_net.topology.manager.RecordTopology { +namespace Christie_net.topology.manager { - public class CreateTreeTopology : CodeGear { - [Take] public HostMessage.HostMessage nodeInfo; - [Take] public Dictionary> topology; + public class RecordTopology : CodeGear { + [Take] public HostMessage nodeInfo; + [Take] public Dictionary> topology; public override void Run(CodeGearManager cgm){ String nodeName = nodeInfo.getNodeName(); - LinkedList connections; + LinkedList connections; if (!topology.ContainsKey(nodeName)) { - connections = new LinkedList(); + connections = new LinkedList(); } else { connections = topology.get(nodeName); } diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/SearchHostName.cs --- a/topology/manager/SearchHostName.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/SearchHostName.cs Thu Jan 27 01:19:51 2022 +0900 @@ -2,14 +2,14 @@ using System.Collections.Generic; using Christie_net.annotation; using Christie_net.codegear; -using Christie_net.topology; +using Christie_net.topology.manager; -namespace Christie_net.topology.manager.SearchHostName { +namespace Christie_net.topology.manager { public class SearchHostName : CodeGear { - [Take] public HostMessage.HostMessage reconnectHost; - [Peek] public Dictionary> topology; + [Take] public HostMessage reconnectHost; + [Peek] public Dictionary> topology; [Peek] public Boolean running; public SearchHostName(){ @@ -40,8 +40,8 @@ } - LinkedList hostList = topology.get(nodeName); - foreach (HostMessage.HostMessage host in hostList) + LinkedList hostList = topology.get(nodeName); + foreach (HostMessage host in hostList) { GetLocalDgm().Put(nodeName, host); Console.WriteLine("put data in " + nodeName); @@ -49,8 +49,8 @@ } // update topology information - foreach (LinkedList list in topology.Values){ - foreach (HostMessage.HostMessage host in list){ + foreach (LinkedList list in topology.Values){ + foreach (HostMessage host in list){ // find and update old info if (!nodeName.Equals(host.getNodeName())) continue; @@ -66,10 +66,10 @@ } } - foreach (LinkedList list in topology.Values) + foreach (LinkedList list in topology.Values) { Console.WriteLine(list.get(0).getRemoteNodeName() + " : "); - foreach (HostMessage.HostMessage host in list) + foreach (HostMessage host in list) { Console.WriteLine("[ " + host.getNodeName() + " " + host.getHostName() + " " diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/StartTopologyManager.cs --- a/topology/manager/StartTopologyManager.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/StartTopologyManager.cs Thu Jan 27 01:19:51 2022 +0900 @@ -2,28 +2,28 @@ using System.Threading; using Christie_net.annotation; using Christie_net.codegear; -using Christie_net.topology.node.Start; +using Christie_net.topology.node; using Christie_net.topology.manager; -namespace Christie_net.topology.manager.StartTopologyManager { +namespace Christie_net.topology.manager { public class StartTopologyManager : StartCodeGear { - public StartTopologyManager(string[] args) : this(CreateCgm(new TopologyManagerConfig.TopologyManagerConfig(args).localPort), new TopologyManagerConfig.TopologyManagerConfig(args)){ + public StartTopologyManager(string[] args) : this(CreateCgm(new TopologyManagerConfig(args).localPort), new TopologyManagerConfig(args)){ } - public StartTopologyManager(TopologyManagerConfig.TopologyManagerConfig topologyManagerConfig) : this(CreateCgm(topologyManagerConfig.localPort), topologyManagerConfig){ + public StartTopologyManager(TopologyManagerConfig topologyManagerConfig) : this(CreateCgm(topologyManagerConfig.localPort), topologyManagerConfig){ } - public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig.TopologyManagerConfig topologyManagerConfig) : base(cgm) { - cgm.Setup(new TopologyManager.TopologyManager()); + public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig topologyManagerConfig) : base(cgm) { + cgm.Setup(new TopologyManager()); cgm.GetLocalDGM().Put("topologyManagerConfig", topologyManagerConfig); } - public StartTopologyManager(TopologyManagerConfig.TopologyManagerConfig conf, CodeGear startCG) :this(CreateCgm(conf.localPort), conf, startCG){ + public StartTopologyManager(TopologyManagerConfig conf, CodeGear startCG) :this(CreateCgm(conf.localPort), conf, startCG){ } - public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig.TopologyManagerConfig conf, CodeGear startCG) : base(cgm) { - cgm.Setup(new TopologyManager.TopologyManager()); + public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig conf, CodeGear startCG) : base(cgm) { + cgm.Setup(new TopologyManager()); cgm.Setup(new Start()); cgm.GetLocalDGM().Put("startCG", startCG); cgm.GetLocalDGM().Put("topologyNodeConfig", conf); @@ -33,7 +33,7 @@ public static void Main(string[] args) { - TopologyManagerConfig.TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig.TopologyManagerConfig(args); + TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig(args); new StartTopologyManager(topologyManagerConfig); } } diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/TopologyManager.cs --- a/topology/manager/TopologyManager.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/TopologyManager.cs Thu Jan 27 01:19:51 2022 +0900 @@ -6,31 +6,31 @@ using Christie_net.topology; -namespace Christie_net.topology.manager.TopologyManager { +namespace Christie_net.topology.manager { public class TopologyManager : CodeGear { - [Peek] public TopologyManagerConfig.TopologyManagerConfig topologyManagerConfig; + [Peek] public TopologyManagerConfig topologyManagerConfig; public TopologyManager() { } public override void Run(CodeGearManager cgm) { - cgm.Setup(new CheckComingHost.CheckComingHost()); + cgm.Setup(new CheckComingHost()); GetLocalDgm().Put("absCookieTable", new Dictionary()); if(topologyManagerConfig.dynamic) { GetLocalDgm().Put("running", true); GetLocalDgm().Put("_STARTMESSAGE", new Message()); - if (topologyManagerConfig.type == TopologyType.TopologyType.Tree) { - GetLocalDgm().Put("parentManager", new ParentManager.ParentManager(topologyManagerConfig.hasChild)); - GetLocalDgm().Put("nameTable", new Dictionary()); + if (topologyManagerConfig.type == TopologyType.Tree) { + GetLocalDgm().Put("parentManager", new ParentManager(topologyManagerConfig.hasChild)); + GetLocalDgm().Put("nameTable", new Dictionary()); GetLocalDgm().Put("hostCount", 0); - cgm.Setup(new CreateTreeTopology.CreateTreeTopology()); + cgm.Setup(new CreateTreeTopology()); //cgm.setup(new ReceiveDisconnectMessage()); }else{ GetLocalDgm().Put("running", false); - cgm.Setup(new FileParser()); + //cgm.Setup(new FileParser()); cgm.Setup(new IncomingHosts()); cgm.Setup(new ConfigWaiter()); @@ -39,7 +39,7 @@ cgm.Setup(new CreateHash()); cgm.Setup(new TopologyFinish()); - GetLocalDgm().Put("topology", new Dictionary>()); + GetLocalDgm().Put("topology", new Dictionary>()); GetLocalDgm().Put("createdList", new LinkedList()); } diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/TopologyManagerConfig.cs --- a/topology/manager/TopologyManagerConfig.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/TopologyManagerConfig.cs Thu Jan 27 01:19:51 2022 +0900 @@ -1,15 +1,15 @@ using System; using System.Threading; using Christie_net.daemon; -using Christie_net.topology; +using Christie_net.topology.manager; -namespace Christie_net.topology.manager.TopologyManagerConfig { +namespace Christie_net.topology.manager { public class TopologyManagerConfig : Config{ public Boolean showTime = false; public String confFilePath; public Boolean dynamic = false; - public TopologyType.TopologyType type = TopologyType.TopologyType.Tree; + public TopologyType type = TopologyType.Tree; public int hasChild = 2; public TopologyManagerConfig(String[] args) /*: base(args)*/ { @@ -20,7 +20,7 @@ String typeName = args[++i]; if ("tree".Equals(typeName)) { - type = TopologyType.TopologyType.Tree; + type = TopologyType.Tree; } } else if ("--child".Equals(args[i])) { hasChild = int.Parse(args[++i]); diff -r 0d2c956060d8 -r c4f8630b7822 topology/manager/TopologyType.cs --- a/topology/manager/TopologyType.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/manager/TopologyType.cs Thu Jan 27 01:19:51 2022 +0900 @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace Christie_net.topology.manager.TopologyType { +namespace Christie_net.topology.manager { public enum TopologyType { Tree = 1 diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/ConfigurationFinish.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/ConfigurationFinish.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,48 @@ +using System; +using System.Threading; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.daemon; +using Christie_net.codegear; +using Christie_net.topology; +using Christie_net.topology.node; + + +namespace Christie_net.topology.node +{ + public class ConfigurationFinish : CodeGear + { + [Take] public Message _CONNECTIONMESSAGE; + [Peek] public int connectNodeNum; + [Peek] public TopologyNodeConfig topologyNodeConfig; + + int reverseCount; + + public ConfigurationFinish(){reverseCount = 0;} + + public ConfigurationFinish(int reverseCount) { + this.reverseCount = reverseCount; + } + + public override void Run(CodeGearManager cgm) { + reverseCount++; + if (reverseCount >= connectNodeNum) { + GetDgm(topologyNodeConfig.getManagerKey()).Put("_DONEMESSAGE", new Message()); + cgm.Setup(new Start()); + + + /*if (topologyNodeConfig.useKeepAlive) + cgm.setup(new KeepAlive());*/ + cgm.Setup(new PrepareToClose()); + + /*ClosedEventManager closedEventManager = new ClosedEventManager(); + closedEventManager.register(cgm, DeleteConnection.class); + cgm.setup(closedEventManager);*/ + return; + + }else { + cgm.Setup(new ConfigurationFinish(reverseCount)); + } + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/CreateConnectionList.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/CreateConnectionList.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,19 @@ +using System; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology; + + +namespace Christie_net.topology.node +{ + public class CreateConnectionList : CodeGear + { + [Take] public String cMember; + [Take] public TopologyDataGear topoDG; + + public override void Run(CodeGearManager cgm) { + topoDG.addConnection(cMember); + GetLocalDgm().Put("topoDG", topoDG); + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/IncomingConnectionInfo.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/IncomingConnectionInfo.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,38 @@ +using System; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology; + + +namespace Christie_net.topology.node +{ + public class IncomingConnectionInfo : CodeGear + { + [Take] public HostMessage remoteNodeInfo; + + int count; + + public IncomingConnectionInfo() { + this.count = 0; + } + + public IncomingConnectionInfo(int count) { + this.count = count; + } + + public override void Run(CodeGearManager cgm) { + String connectionName = remoteNodeInfo.getConnectionName(); + + cgm.CreateRemoteDGM(connectionName, + remoteNodeInfo.getHostName(), + remoteNodeInfo.getPort()); + + + GetDgm(connectionName).Put("_CONNECTIONMESSAGE",new Message()); + cgm.Setup(new CreateConnectionList()); + GetLocalDgm().Put("cMember", connectionName); + + cgm.Setup(new IncomingConnectionInfo(count + 1)); + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/PrepareToClose.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/PrepareToClose.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,32 @@ +using System; +using System.Threading; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.daemon; +using Christie_net.codegear; +using Christie_net.topology; +using Christie_net.topology.node; + + +namespace Christie_net.topology.node +{ + public class PrepareToClose : CodeGear + { + [Take] public Message _CLOSEMESSEAGE; + [Peek] public TopologyDataGear topoDG; + + public PrepareToClose() { + + } + + public override void Run(CodeGearManager cgm) { + List _CLIST = topoDG.getConnectionList(); + for(String dgmName: _CLIST){ + GetDgm(dgmName).shutdown(); + //_CLIST.remove(dgmName); + } + + GetLocalDgm().Finish(); + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/Start.cs --- a/topology/node/Start.cs Tue Jan 25 22:35:25 2022 +0900 +++ b/topology/node/Start.cs Thu Jan 27 01:19:51 2022 +0900 @@ -4,7 +4,7 @@ using Christie_net.codegear; using Christie_net.topology; -namespace Christie_net.topology.node.Start { +namespace Christie_net.topology.node { public class Start : CodeGear { diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/StartTopologyNode.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/StartTopologyNode.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,22 @@ +using System; +using System.Threading; +using Christie_net.annotation; +using Christie_net.codegear; +using Christie_net.topology.manager; + + +namespace Christie_net.topology.node +{ + public class StartTopologyNode : StartCodeGear + { + public StartTopologyNode(CodeGearManager cgm, TopologyNodeConfig conf, CodeGear startCG) : base(cgm) + { + cgm.GetLocalDGM().Put("startCG", startCG); + cgm.GetLocalDGM().Put("topologyNodeConfig", conf); + cgm.Setup(new TopologyNode()); + } + + public StartTopologyNode(TopologyNodeConfig conf, CodeGear startCG) : this(CreateCgm(conf.localPort), conf, + startCG){ } + } +} diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/TopologyNode.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/TopologyNode.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,36 @@ +using System; +using System.Threading; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.daemon; +using Christie_net.codegear; +using Christie_net.topology; + + +namespace Christie_net.topology.node +{ + public class TopologyNode : CodeGear + { + [Peek] public TopologyNodeConfig topologyNodeConfig; + + public TopologyNode() { + } + + public override void Run(CodeGearManager cgm) { + + cgm.CreateRemoteDGM(topologyNodeConfig.getManagerKey(), + topologyNodeConfig.getManagerHostName(), + topologyNodeConfig.getManagerPort()); + + HostMessage hostMessage = new HostMessage(); + hostMessage.setLocalHostAndPort(cgm.localPort); + hostMessage.setCookie(topologyNodeConfig.cookie); + + GetDgm(topologyNodeConfig.getManagerKey()).Put("hostMessage", hostMessage); + + cgm.Setup(new IncomingConnectionInfo()); + cgm.Setup(new ConfigurationFinish()); + + } + } +} \ No newline at end of file diff -r 0d2c956060d8 -r c4f8630b7822 topology/node/TopologyNodeConfig.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/topology/node/TopologyNodeConfig.cs Thu Jan 27 01:19:51 2022 +0900 @@ -0,0 +1,68 @@ +using System; +using System.Threading; +using System.Collections.Generic; +using Christie_net.annotation; +using Christie_net.daemon; + + +namespace Christie_net.topology.node +{ + public class TopologyNodeConfig : Config + { + private String managerHostName; + private int managerPort = 10000; + public String cookie; + private String managerKey = "manager"; + private String localKey = "local"; + + public TopologyNodeConfig(String[] args) /*: base(args)*/{ + for (int i = 0; i< args.Length; i++) { + if ("--managerHost".Equals(args[i])) { + setManagerHostName(args[++i]); + } else if ("--managerKey".Equals(args[i])) { + setManagerKey(args[++i]); + } else if ("--localKey".Equals(args[i])) { + setLocalKey(args[++i]); + } else if ("--managerPort".Equals(args[i])) { + setManagerPort(int.Parse(args[++i])); + } else if ("--cookie".Equals(args[i])) { + cookie = args[++i]; + } + } + } + + + public String getManagerHostName() { + return managerHostName; + } + + public void setManagerHostName(String managerHostName) { + this.managerHostName = managerHostName; + } + + public int getManagerPort() { + return managerPort; + } + + public void setManagerPort(int managerPort) { + this.managerPort = managerPort; + } + + public String getLocalKey() { + return localKey; + } + + public void setLocalKey(String local) { + this.localKey = local; + } + + public void setManagerKey(String manager) { + this.managerKey = manager; + } + + public String getManagerKey() { + return managerKey; + + } + } +} \ No newline at end of file