/// <summary> /// Загружает топологию из .xml файла /// </summary> /// <param name="fileName">Путь к файлу</param> /// <param name="net">Сохраняемая топология</param> public void LoadTopology(String fileName, Topology net) { XDocument xDoc = XDocument.Load(fileName); net.Clear(); /* Загрузка узлов */ foreach (XElement r in xDoc.Root.Element("Routers").Elements()) { Router router = new Router(new Point(Int32.Parse(r.Attribute("x").Value), Int32.Parse(r.Attribute("y").Value)), Drawing.RouterImg); router.Name = r.Attribute("name").Value; net.CreateNode(router); } /* Загрузка ребер */ foreach (XElement l in xDoc.Root.Elements("Links").Elements()) { Link link = new Link(Int32.Parse(l.Attribute("snode").Value), Int32.Parse(l.Attribute("enode").Value)); link.Metric = Int32.Parse(l.Attribute("metric").Value); net.CreateEdge(link); } }
/// <summary> /// Конструктор /// </summary> public LinkForm(Link l, String label) { InitializeComponent(); _link = l; this.Text = label; }
/// <summary> /// Создаие канала связи /// </summary> /// <param name="numS">Инцидентный маршрутизатор 1</param> /// <param name="numE">Инцидентный маршрутизатор 2</param> private void CreateLink(Int32 numS, Int32 numE) { Link link = new Link(numS, numE); Random rnd = new Random(); link.Metric = 1 + rnd.Next(99); _topology.CreateEdge(link); }
/// <summary> /// Создает новое ребро в графе /// </summary> /// <param name="r1">Инцидентный узел 1</param> /// <param name="r2">Инцидентный узел 2</param> public void CreateEdge(Link l) { Links.Add(l); }