Ejemplo n.º 1
0
            public Cluster(int basePort, int size, Func <int, bool> leaderCandidate)
            {
                this.basePort = basePort;
                var members = new Configuration.Member[size];

                for (int i = 0; i < size; i++)
                {
                    members[i] = new Configuration.Member(testOffset + i, leaderCandidate(i));
                }
                cfg          = new Configuration(members);
                this.members = new Node[size];
                for (int i = 0; i < size; i++)
                {
                    this.members[i] = new ClusterNode(cfg, cfg.Members[i], new Address(basePort + i), GetAddressOf);
                }
                attachments = new object[size];
            }
Ejemplo n.º 2
0
            public void ChangeConfiguration(int size, Func <int, bool> leaderCandidate)
            {
                var cfgMembers = new Configuration.Member[size];

                for (int i = 0; i < size; i++)
                {
                    cfgMembers[i] = new Configuration.Member(testOffset + i, leaderCandidate(i));
                }
                var newCFG = new Configuration(cfgMembers);

                if (size < members.Length)
                {
                    for (int i = 0; i < size; i++)
                    {
                        members[i].ChangeConfiguration(newCFG);
                    }
                    for (int i = size; i < this.members.Length; i++)
                    {
                        members[i].Dispose();
                    }
                    members = members.Subarray(0, size);
                }
                else
                {
                    var newMembers = new Node[size];
                    for (int i = 0; i < members.Length; i++)
                    {
                        members[i].ChangeConfiguration(newCFG);
                        newMembers[i] = members[i];
                    }
                    for (int i = members.Length; i < size; i++)
                    {
                        newMembers[i] = new ClusterNode(newCFG, newCFG.Members[i], new Address(basePort + i), GetAddressOf);
                    }
                    members = newMembers;
                }
                cfg = newCFG;
            }
Ejemplo n.º 3
0
 public ClusterNode(Configuration cfg, Configuration.Member self, Address selfAddress, Func <int, Address> getAddressOf) : base(self)
 {
     this.getAddressOf = getAddressOf;
     Port = Start(cfg, selfAddress, null);
 }
Ejemplo n.º 4
0
 public void OnOutOfConfig(Configuration newConfig, Configuration.Member memberID)
 {
     Assert.Fail("Configuration error: Local member ID " + memberID + " not found in new configuration " + newConfig);
 }
Ejemplo n.º 5
0
 public void OnOutOfConfig(Configuration newConfig, Configuration.Member memberID)
 {
     Log.Error("Terminal: Consensus member ID " + memberID + " not found in new configuration " + newConfig);
     Environment.Exit(-1);
 }