Esempio n. 1
0
 public void OnChatOpened(object sender, ConnectionToChatEventArgs container)
 {
     if (_connection.cachedClientName.TryGetValue(container.NameClient, out Guid clientGuid) &&
         _chats.InfoChats.TryGetValue(container.NumberChat, out InfoChat infoChat))
     {
         foreach (var nameClientAtChat in infoChat.NameOfClients)
         {
             if (nameClientAtChat == container.NameClient)
             {
                 if (MessagesAtChat.TryGetValue(container.NumberChat, out List <MessageInfo> messages) && clientGuid != Guid.Empty)
                 {
                     var SendMessageToClient = Task.Run
                                               (
                         () => _server.Send(new List <Guid> {
                         clientGuid
                     },
                                            Container.GetContainer(nameof(ConnectToChatResponse),
                                                                   new ConnectToChatResponse(container.NumberChat, messages)))
                                               );
                 }
                 else
                 {
                     var SendMessageToClient = Task.Run
                                               (
                         () => _server.Send(new List <Guid> {
                         clientGuid
                     },
                                            Container.GetContainer(nameof(ConnectToChatResponse),
                                                                   new ConnectToChatResponse(container.NumberChat, new List <MessageInfo>())))
                                               );
                 }
             }
         }
     }
 }
Esempio n. 2
0
        public async void OnAddedChat(object sender, AddedNewChatEventArgs container)
        {
            if (_connection.cachedClientName.TryGetValue(container.NameOfClientSender, out Guid clientCreatorGuid))
            {
                int numberChat = await Task.Run(() => _data.CreatNewChat(new CreatingChatInfo {
                    NameOfClientSender = container.NameOfClientSender, NameOfClients = container.NameOfClientsForAdd
                }));

                if (numberChat != -1)
                {
                    List <Guid>   idClientsForSendMessage = new List <Guid>();//Создание списка id для рассылки им сообщений
                    List <string> NameForChange           = container.NameOfClientsForAdd;
                    await Task.Run(() => CreateClientListForChangeInfoChat(ref NameForChange, numberChat, ref idClientsForSendMessage));

                    var SendMessageToClient = Task.Run(() => _server.Send(idClientsForSendMessage, Container.GetContainer(nameof(AddChatResponse), new AddChatResponse(container.NameOfClientSender, numberChat, container.NameOfClientsForAdd))));
                    if (_cachedClientProperies.TryGetValue(container.NameOfClientSender, out ClientProperties value))
                    {
                        var bufferForAddChat = value;
                        value.NumbersChat.Add(numberChat);
                        _cachedClientProperies.TryUpdate(container.NameOfClientSender, value, bufferForAddChat);
                    }
                    InfoChats.TryAdd(numberChat, new InfoChat {
                        OwnerChat = container.NameOfClientSender, NameOfClients = container.NameOfClientsForAdd
                    });
                    if (!await _data.AddClientToChat(new AddClientToChat {
                        NumberChat = numberChat, NameOfClients = NameForChange
                    }))
                    {
                        //Ошибка добавления клиентов
                    }
                }
                else
                {
                    //Ошибка добавления чата
                }
            }
        }
Esempio n. 3
0
        public async void OnClientConnected(object sender, ClientConnectedEventArgs container)
        {
            if (container.ClientName == "Server")
            {
                var SendMessageToClient = Task.Run(() =>
                                                   _server.Send(new List <Guid>()
                {
                    container.ClientId
                },
                                                                Container.GetContainer(nameof(ConnectionResponse),
                                                                                       new ConnectionResponse(ResultRequest.Failure, "Запрещенное имя")))
                                                   );
                return;
            }

            if (cachedClientName.TryGetValue(container.ClientName, out Guid clientGuid))
            {
                if (clientGuid == Guid.Empty)
                {
                    cachedClientName.TryUpdate(container.ClientName, container.ClientId, Guid.Empty);

                    var SendMessage = Task.Run(() =>
                                               _server.Send(new List <Guid> {
                        container.ClientId
                    }, Container.GetContainer(nameof(ConnectionResponse), new ConnectionResponse(ResultRequest.Ok, container.ClientName)))
                                               );
                    var SendMessageAll = Task.Run(() =>
                                                  _server.SendAll(container.ClientId, Container.GetContainer(nameof(ConnectionNotice), new ConnectionNotice(container.ClientName)))
                                                  );

                    _server.SetLoginConnection(container.ClientId, container.ClientName);
                }
                else
                {
                    var SendMessageToClient = Task.Run(() =>
                                                       _server.Send(new List <Guid>()
                    {
                        container.ClientId
                    },
                                                                    Container.GetContainer(nameof(ConnectionResponse),
                                                                                           new ConnectionResponse(ResultRequest.Failure, "Такой пользователь уже есть")))
                                                       );
                }
            }
            else
            {
                cachedClientName.TryAdd(container.ClientName, container.ClientId);

                var SendMessage = Task.Run(() =>
                                           _server.Send(new List <Guid> {
                    container.ClientId
                }, Container.GetContainer(nameof(ConnectionResponse), new ConnectionResponse(ResultRequest.Ok, container.ClientName)))
                                           );
                var SendMessageAll = Task.Run(() =>
                                              _server.SendAll(container.ClientId, Container.GetContainer(nameof(ConnectionNotice), new ConnectionNotice(container.ClientName)))
                                              );

                _server.SetLoginConnection(container.ClientId, container.ClientName);

                if (!await Task.Run(() => _data.AddNewClient(new ClientInfo {
                    NameClient = container.ClientName
                })))
                {
                    //Ошибка, не получилось записать
                }
            }
        }