public static void HandlePacketPong(Client client, Net.Paket.PongPaket pp) { if(pp.Message == Settings.Default.ServerName) { client._nextActivityCheck = DateTime.Now + TimeSpan.FromSeconds(30); } }
public static void HandlePacketUser(Client client, Net.Paket.UserPaket up) { client.ClientInfo.Username = up.Username; client.ClientInfo.RealName = up.RealName; client.ClientInfo.Host = up.Hostname; if(client.ClientInfo.Nickname != null) { client.ClientInfo.IsRegistered = true; RegisterUser(client); } }
public static void HandlePacketNick(Client client, Net.Paket.NickPaket np) { var nickClient = client.Server.GetClientByNickname(np.Nickname.ToUpper()); if(nickClient != null) { client.SendPacket(new NickNameInUseResponse {NickName = np.Nickname}); return; } client.ClientInfo.Nickname = np.Nickname; client.Server.Nicknames.Add(np.Nickname.ToUpper(), client); RegisterUser(client); }
private static void RegisterUser(Client client) { if(client.ClientInfo.IsRegistered && client.ClientInfo.Nickname != null) client.SendPacket(new WelcomeResponse {Host = client.ClientInfo.Host, Nickname = client.ClientInfo.Nickname, Username = client.ClientInfo.Username}); }
private void AcceptProcess(SocketAsyncEventArgs e) { if (OnBeforeAccept(e.AcceptSocket)) { Interlocked.Increment(ref _nextSessionId); var c = new Client(_nextSessionId, this, e.AcceptSocket); c.Start(); AddClient(c); Logger.Log(Logger.LogLevel.Info, "Clients online: {0}", Clients.Count); } else { if (e.AcceptSocket.Connected) e.AcceptSocket.Shutdown(SocketShutdown.Both); e.AcceptSocket.Close(); } _acceptEventArgs.AcceptSocket = null; Interlocked.Exchange(ref _asyncAccepts, 0); NetworkSignal.Set(); }
public void DisconnectClient(Client client) { Clients.TryRemove(client.SessionId, out client); client = null; }
public void AddClient(Client client) { Clients.TryAdd(client.SessionId, client); Interlocked.Increment(ref _clientDictChanges); }