예제 #1
0
#pragma warning restore CS1998

        private static async Task MessageReceived(string ipPort, byte[] data)
        {
            if (stopReceive)
            {
                return;
            }

            try
            {
                if (!(data != null && data.Length > 0))
                {
                    throw new ArgumentNullException("Data is empty.");
                }
                if (stopReceive)
                {
                    throw new Exception("Handling of requests stopped");
                }

                clients[clients.FirstOrDefault(x => x.Key.IpPort == ipPort).Key] = true;
                byte[] response = requestHandler.HandleRequest(data, out List <User> targets, clients.FirstOrDefault(x => x.Key.IpPort == ipPort).Key);

                foreach (User user in targets)
                {
                    User temp = user;
                    if (string.IsNullOrEmpty(user.IpAddress) || user.Port == 0)
                    {
                        temp = clients.FirstOrDefault(x => x.Key.Name.ToLower() == user.Name.ToLower()).Key;
                    }

                    if (temp == null || !await server.SendAsync(temp.IpPort, response))
                    {
                        log.Add($"Message could not be send to {temp}.", MessageType.Warning);
                    }
                }

                clients[clients.FirstOrDefault(x => x.Key.IpPort == ipPort).Key] = false;
            }
            catch (Exception ex)
            {
                log.Add($"Message of client {ipPort} could not be handled: {Environment.NewLine} {ex.ToString()}", MessageType.Error);
            }
        }
예제 #2
0
 private static void ClientBytesRecieved(Client client, Packet packet)
 {
     RequestHandler.HandleRequest(client, packet);
 }