public string JoinSpreadGroup() { _spreadGroup = new SpreadGroup(); _spreadGroup.Join(_spreadConnection, _configurationManager.SpreadGroup); return(_spreadGroup.ToString()); }
private void _spreadConnection_OnMembershipMessage(SpreadMessage msg) { MembershipInfo info = msg.MembershipInfo; SpreadGroup group = info.Group; if (info.IsRegularMembership) { SpreadGroup[] members = info.Members; Console.WriteLine($"Regular membership for {group.ToString()} with {members.Length} members:"); for (int i = 0; i < members.Length; i++) { Console.WriteLine($"\t {members[i]}"); } Console.WriteLine($"GroupID: {info.GroupID}"); } SpreadGroup Sender; if (info.IsCausedByDisconnect) { Sender = info.Disconnected; Console.WriteLine($"{Sender} has disconnected ..."); isDisconnected = true; _delegate = new InformClientOfChange(NotifyClient); _delegate.Invoke(ServerOptions.IPAddress, ServerOptions.Port); } if (info.IsCausedByLeave) { Sender = info.Left; Console.WriteLine($"{Sender} has left ..."); isDisconnected = true; _delegate = new InformClientOfChange(NotifyClient); _delegate.Invoke(ServerOptions.IPAddress, ServerOptions.Port); } if (info.IsCausedByJoin) { Sender = info.Joined; Console.WriteLine($"{Sender} has joined ..."); if (isInitState) { #region Set Primary Console.WriteLine("Setting Primary Server ..."); int highestPort = _configurationManager.ServerGroups.ToList().Max(); if (ServerOptions.Port.Equals(highestPort)) { ServerOptions.IsPrimary = true; Console.WriteLine("I am the primary server ..."); } else { ServerOptions.IsPrimary = false; Console.WriteLine("I am the backup server ..."); } #endregion } else { //receive full state } //_delegate = new InformClientOfChange(NotifyClient); //_delegate.Invoke(ServerOptions.IPAddress, ServerOptions.Port); } }