Exemplo n.º 1
0
        private void DirectoryChanged(object source, FileSystemEventArgs e)
        {
            /** New user entered chat */
            if (e.ChangeType == WatcherChangeTypes.Created)
            {
                users.Add(e.Name);
                // Need to call ToList since we modify each element in-place
                foreach (var chatUi in chatUiList.ToList())
                {
                    chatUi.AddUserToList(e.Name);
                }
            }

            /** User left chat */
            else if (e.ChangeType == WatcherChangeTypes.Deleted)
            {
                IChatUi disposedUserListManager = null;
                // Need to call ToList since we modify each element in-place
                foreach (var userListManager in chatUiList.ToList())
                {
                    users.Remove(e.Name);
                    if (userListManager.Username != e.Name)
                    {
                        userListManager.RemoveUserFromList(e.Name);
                    }
                    else
                    {
                        disposedUserListManager = userListManager;
                    }
                }
                chatUiList.Remove(disposedUserListManager);
            }
        }
 /// <summary>
 /// Given a username, get its user interface
 /// </summary>
 /// <param name="username"></param>
 /// <returns></returns>
 private IChatUi getChatClient(string username)
 {
     if (chatClients.TryGetValue(username, out ChatInstance chatUiAndChannel))
     {
         IChatUi chatUi = chatUiAndChannel.Item1;
         Debug.Assert(username == chatUi.Username);
         return(chatUi);
     }
     throw new InvalidOperationException($"Username {username} not previously registered");
 }
 public void SendMessage(IChatUi chatClient, string recipient, string messageText)
 {
     try
     {
         var message = new Message(chatClient.Username, recipient, messageText);
         Configuration.AppendToFile(recipient, message.ToString());
         chatClient.AddChatLine(message);
     }
     catch (ArgumentException ae)
     {
         chatClient.AddChatErrorLine($"Message could not be sent :: {ae.Message}");
     }
 }
        public void AddChatErrorLine(string username, string errorMessage)
        {
            IChatUi chatClient = getChatClient(username);

            chatClient.AddChatErrorLine(errorMessage);
        }
        public void AppendParsedMessageToChat(string username, Message message)
        {
            IChatUi chatClient = getChatClient(username);

            chatClient.AddChatLine(message);
        }
Exemplo n.º 6
0
 public void RemoveChatUi(IChatUi chatInterface)
 {
     chatUiList.Remove(chatInterface);
 }
Exemplo n.º 7
0
 public void AddChatUi(IChatUi chatInterface)
 {
     chatUiList.Add(chatInterface);
 }