public void SendAllMessages()
        {
            foreach (KeyValuePair <Tuple <int, ushort>, List <byte[]> > pair in messages)
            {
                int           matchId            = pair.Key.Item1;
                ushort        playerId           = pair.Key.Item2;
                List <byte[]> serializedMessages = pair.Value;
                if (!ipAddressesStorage.TryGetIpEndPoint(matchId, playerId, out var ip))
                {
                    log.Debug($"Ip игрока {nameof(matchId)} {matchId} {nameof(playerId)} {playerId} нет.");
                    return;
                }
                simpleMessagesPacker.Send(matchId, playerId, ip, serializedMessages);
            }

            messages.Clear();
        }
        public void SendAll()
        {
            List <(int matchId, ushort playerId)> pairs = new List <(int matchId, ushort playerId)>();

            //получить пары matchId playerId из хранилища матчей
            foreach (Match match in matchStorage.GetAllMatches())
            {
                int           matchId = match.matchId;
                List <ushort> players = ipAddressesStorage.GetActivePlayersIds(matchId);
                if (players != null)
                {
                    foreach (ushort playersId in players)
                    {
                        pairs.Add((matchId, playersId));
                    }
                }
            }

            //запросить и отправить сообщения для всех пар
            foreach (var(matchId, playerId) in pairs)
            {
                //messageId, model
                byte[][] messagesForPlayer = byteArrayRudpStorage.GetMessages(matchId, playerId);
                if (messagesForPlayer != null)
                {
                    if (ipAddressesStorage.TryGetIpEndPoint(matchId, playerId, out IPEndPoint ipEndPoint))
                    {
                        foreach (byte[] data in messagesForPlayer)
                        {
                            udpSendUtils.SendReadyMadeMessage(matchId, playerId, data);
                        }
                    }
                    else
                    {
                        //такого быть не должно. ведь id игрока был получен из списка активных игроков
                        log.Error("ip игрока не найден, хотя он в списке активных игроков.");
                    }
                }
            }
        }