public void OnRegisterClusterRequestSuccesful(RequestSuccesfulEventArgs args) { LoginConnector.OnClusterRequestSuccesful -= OnRegisterClusterRequestSuccesful; if (args.Accepted) { RegisterNewChannelRequest newChannelRequest = new RegisterNewChannelRequest(args.Id, (string)Config.GetSetting("ClusterAuthorizationPassword"), "SharpFly Channel", 0, 50, LoginConnector.PublisherSocket); LoginConnector.OnNewChannelRequestSuccesful += new LoginConnector.RequestSuccesfulHandler(OnRegisterNewChannelSuccesful); this.m_PlayerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.m_PlayerSocket.Bind(new IPEndPoint(IPAddress.Any, 28000)); this.m_PlayerSocket.Listen(100); PlayerManager = new PlayerManager(); Thread acceptPlayerThread = new Thread(() => PlayerManager.AcceptPlayers(this.m_PlayerSocket)); acceptPlayerThread.Start(); Thread processPlayerThread = new Thread(() => PlayerManager.ProcessPlayers()); processPlayerThread.Start(); Console.WriteLine("Cluster request succesful!"); } else { Console.WriteLine("Cluster request wasn't succesful!"); } }
public static void RegisterNewChannel(IncomingInterserverPacket packet) { RegisterNewChannelRequest request = new RegisterNewChannelRequest(packet); SharpFly_Utility_Library.Database.LoginDatabase.Tables.Cluster clusterTable = SharpFly_Utility_Library.Database.LoginDatabase.Queries.Cluster.Instance.GetCluster(request.ClusterId); uint clusterId = request.ClusterId; Cluster cluster = LoginServer.ClusterManager.GetClusterById(clusterId); if (clusterTable == null || request.AuthorizationPassword != clusterTable.Password) { cluster.SendRegisterNewChannelSuccesful(0, request.TempChannelId, false); Console.WriteLine("Couldn't register new channel to cluster {1}", cluster.ClusterData.Name); return; } if (cluster != null) { Channel channel = new Channel(); channel.Parent = cluster.ClusterData; channel.Id = ChannelId++; channel.Name = request.Name; channel.PlayerCount = 0; channel.MaxPlayerCount = request.MaxPlayerCount; cluster.ClusterData.Channels.Add(channel); cluster.SendRegisterNewChannelSuccesful(channel.Id, request.TempChannelId, true); Console.WriteLine("Registered channel {0} on cluster {1}", channel.Name, cluster.ClusterData.Name); return; } Console.WriteLine("Couldn't register new channel to cluster {1}", cluster.ClusterData.Name); }