public void HandleCommand(AcceptedClient xClient, string xMessage) { string command = xMessage.Split(' ')[0].ToLower(); string message = ""; string target = ""; switch (command) { case "/help": message = CommandHandler.GetHelpMessage(); xClient.WriteMessage(message); break; case "/getuser": message = CommandHandler.GetUserMessage(_clients.Keys.ToList()); xClient.WriteMessage(message); break; case "/login": string username = CommandHandler.ExtractUsernameFromLogin(xMessage); if (xClient.IsLoggedIn) { message = CommandHandler.GetErrorAlreadyLoggedIn(); xClient.WriteMessage(message); } else if (IsUsernameValid(username) == false) { message = CommandHandler.GetErrorUsernameNotAllowed(username); xClient.WriteMessage(message); } else if (_clients.ContainsKey(username)) { message = CommandHandler.GetErrorUserExisting(); xClient.WriteMessage(message); } else { _clients.Add(username, xClient); xClient.IsLoggedIn = true; xClient.Name = username; message = CommandHandler.GetLoginConfirmedMessage(username); xClient.WriteMessage(message); } break; case "/whisper": string messageTarget = CommandHandler.ExtractWhisperMessage(xClient.Name, xMessage, out target); if (string.IsNullOrWhiteSpace(target) || string.IsNullOrWhiteSpace(messageTarget)) { message = CommandHandler.GetErrorCommandNotRecognized(); xClient.WriteMessage(message); } else if (_clients.ContainsKey(target) == false) { message = CommandHandler.GetErrorUserNotExisting(target); xClient.WriteMessage(message); } else { message = CommandHandler.GetWhisperConfirmed(target); _clients[target].WriteMessage(messageTarget); xClient.WriteMessage(message); } break; case "/logoff": xClient.IsLoggedIn = false; xClient.WriteMessage("Logoff received. You're logged off from the server!"); _clients.Remove(xClient.Name); xClient.StopClient(); break; default: message = CommandHandler.GetErrorCommandNotRecognized(); xClient.WriteMessage(message); break; } }