/// <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(); }
private void CreateTTLMessage(Message message) { ConsoleMessage Answer = new ConsoleMessage("Message cannot be delivered", Knot.id, message.IdSource); MesOut.Push(Answer); }
public ConsoleMessage(ConsoleMessage message) : base(message) { this.Text = message.Text; }