コード例 #1
0
        /// <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();
        }
コード例 #2
0
        private void CreateTTLMessage(Message message)
        {
            ConsoleMessage Answer = new ConsoleMessage("Message cannot be delivered", Knot.id, message.IdSource);

            MesOut.Push(Answer);
        }
コード例 #3
0
 public ConsoleMessage(ConsoleMessage message) : base(message)
 {
     this.Text = message.Text;
 }