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>()))) ); } } } } }
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 { //Ошибка добавления чата } } }
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 }))) { //Ошибка, не получилось записать } } }