private void CreateAnswerPong(PingMessage message)
        {
            PingMessage Answer = new PingMessage(Knot.id, message.IdSource);

            Answer.DateStart = message.DateStart;
            Answer.DateEnd   = DateTime.Now;
            MesOut.Push(Answer);
        }
        /// <summary>
        /// Узел отравляет сообщения в его радиусе
        /// </summary>
        public void SentMessage()
        {
            //Поиск сообщений в радиусе
            List <RouterKnot> knots = Logic.Router.Knots.FindAll(k =>
                                                                 Math.Pow((k.Knot.CordX - Knot.CordX), 2) + Math.Pow((k.Knot.CordY - Knot.CordY), 2)
                                                                 <= Math.Pow(Knot.Radius / 2, 2)
                                                                 &&
                                                                 k.Knot.id != Knot.id
                                                                 );

            //Ретрансляция всем узлам в радиусе
            foreach (RouterKnot knot in knots)
            {
                foreach (Message mess in MesOut)
                {
                    Message ms;

                    if (mess.GetType() == typeof(PingMessage))
                    {
                        ms            = new PingMessage(mess as PingMessage);
                        ms.IdLastNode = Knot.id;
                    }
                    else if (mess.GetType() == typeof(SendMessage))
                    {
                        ms            = new SendMessage(mess as SendMessage);
                        ms.IdLastNode = Knot.id;
                    }
                    else
                    {
                        ms            = new ConsoleMessage(mess as ConsoleMessage);
                        ms.IdLastNode = Knot.id;
                    }

                    Logic.w.AddMessage(Knot, knot.Knot);

                    knot.MesIn.Enqueue(ms);
                }
            }

            //Очистка
            MesOut.Clear();
        }
        /// <summary>
        /// Узел обрабатывает сообщения
        /// </summary>
        public void ProcessIn()
        {
            foreach (Message mess in MesIn)
            {
                // Если сообщение ещё не обрабатывалась этим узлом и его TTL > 0
                if (!LastsIdMessage.Contains(mess.Id) && mess.TTL > 0)
                {
                    // Обработка сообщения, где проверяется его TTL и дошло ли оно до цели
                    // Если этот Узел-Роутер является целью сообщения, то оно попадает в консоль.
                    // Но если сообщение Ping, то создаётся новое сообщение PingMessag, только уже
                    // с известным началом и концом пути. Которое отправляется источнику, где уже и выводится
                    ParseMessage(mess);
                    mess.TTL--;
                    LastsIdMessage.Add(mess.Id);
                    MesOut.Push(mess);
                }
            }

            MesIn.Clear();
        }
        private void CreateTTLMessage(Message message)
        {
            ConsoleMessage Answer = new ConsoleMessage("Message cannot be delivered", Knot.id, message.IdSource);

            MesOut.Push(Answer);
        }