/// <summary> /// Dodaje SNP (wezel) do topologii. /// </summary> /// <param name="snp"></param> public void addNode(SubNetworkPoint snp) { //Konwersja IP na inta (jako ID wezla) int id = BitConverter.ToInt32(snp.ipaddress.GetAddressBytes(), 0); //Wspolrzedna X to id i Y to tez id, unikniemy niejednoznacznosci. this.network.zwroc_wezly.Add(new Wezel(id, id, id)); }
/// <summary> /// Aktualizuje wartości SNPPów po zmianie w krawędziach ścieżki. /// </summary> public void actualizeSNPPs() { snpps = new List <SubNetworkPointPool>(); foreach (Wezel w in path.WezlySciezki) { SubNetworkPoint snp = new SubNetworkPoint(IPAddress.Parse(w.ip)); SubNetworkPointPool snpp = new SubNetworkPointPool(); snpp.Add(snp); snpps.Add(snpp); } }
public void testSNPPsConstructors() { setUpValues1(); SubNetworkPoint SNP1 = new SubNetworkPoint(IPAddress.Parse(nodes[0].ip)); SubNetworkPointPool SNPP1 = new SubNetworkPointPool(SNP1); SubNetworkPoint SNP2 = new SubNetworkPoint(IPAddress.Parse(nodes[6].ip)); SubNetworkPointPool SNPP2 = new SubNetworkPointPool(SNP2); Assert.AreNotEqual("", SNP1.ipaddress); Assert.AreNotEqual("", SNP2.ipaddress); Assert.AreEqual(SNP1, SNPP1.snps[0]); Assert.AreEqual(SNP2, SNPP2.snps[0]); }
public List <SubNetworkPointPool> getPathOfSNPPs(SubNetworkPointPool beginningNetworkPointPool, SubNetworkPointPool endNetworkPointPool, short band, Siec network) { //Zamiana adresow IP na inty int beginID = ipToInt(beginningNetworkPointPool.snps[0].ipaddress); int endID = ipToInt(endNetworkPointPool.snps[0].ipaddress); //Tworzenie wezlow Wezel beginNode = new Wezel(beginID, beginID, beginID, beginningNetworkPointPool.snps[0].ipaddress.ToString()); Wezel endNode = new Wezel(endID, endID, endID, endNetworkPointPool.snps[0].ipaddress.ToString()); //Wyszukiwanie sciezki Sciezka path = new Sciezka(); path.wyznaczSciezke(beginNode, endNode, network.zwrocTabliceKierowaniaLaczami, network.zwrocTabliceKierowaniaWezlami, ref network.wezly, band, network.Koszty); if (path.KrawedzieSciezki.Count != 0) { network.sciezki.Add(path); } //network.zwroc_sciezki.Find((x) => x.Wezel1 == beginNode && x.Wezel2 == endNode));network.zwroc_sciezki.Find((x) => x.Wezel1 == beginNode && x.Wezel2 == endNode); //Gdy sciezki w networki nie ma, to nie da sie ustanowic polaczenia if (path == null) { return(null); } else { List <SubNetworkPointPool> SNPPs = new List <SubNetworkPointPool>(); foreach (Wezel w in path.WezlySciezki) { SubNetworkPoint snp = new SubNetworkPoint(IPAddress.Parse(w.ip)); SubNetworkPointPool snpp = new SubNetworkPointPool(); snpp.Add(snp); SNPPs.Add(snpp); } //Zwracanie listy SNPPów, gdzie kazdy z nich zawiera po jednym SNP. return(SNPPs); } }
public void testLinkConstructor1() { Wezel w1 = new Wezel(1, "127.0.0.1"); Wezel w2 = new Wezel(2, "127.0.0.2"); Lacze l = new Lacze(12, w1, w2); SubNetworkPoint SNP1 = l.Wezel1.SNPP.snps.Find(x => x.ipaddress.ToString() == "127.0.0.1" && x.portOUT == 12); SubNetworkPoint SNP2 = l.Wezel2.SNPP.snps.Find(x => x.ipaddress.ToString() == "127.0.0.2" && x.portIN == 12); Assert.IsNotNull(SNP1); Assert.IsNotNull(SNP2); Assert.AreEqual(12, SNP1.portOUT); Assert.AreEqual(12, SNP2.portIN); Assert.AreEqual(IPAddress.Parse("127.0.0.1"), SNP1.ipaddress); Assert.AreEqual(IPAddress.Parse("127.0.0.2"), SNP2.ipaddress); }
/// <summary> /// Funkcja, zmieniajaca koszt lacza na podstawie nowego pasma zuzywanego przez nowy zasob. /// </summary> /// <param name="band"></param> public bool changeCost(short band, int idLacza) { try { Lacze link = this.network.krawedzie[idLacza]; SubNetworkPoint SNP1 = link.Wezel1.SNPP.snps.Find(x => x.portOUT == link.idKrawedzi); SubNetworkPoint SNP2 = link.Wezel2.SNPP.snps.Find(x => x.portIN == link.idKrawedzi); if (SNP1 == null || SNP2 == null) { return(false); } //Jezeli jest jeszcze miejsce if (EONTable.capacity - Math.Sqrt(link.Waga) >= band && SNP1.eonTable.FindFreeFrequency(band, "out") != -1 && SNP2.eonTable.FindFreeFrequency(band, "in") != -1) { //Przypisanie nowego kosztu link.Waga = (float)Math.Pow((Math.Sqrt(link.Waga) + band), 2); //sukces return(true); } //Nie ma juz miejsca na laczu na takie pasmo (na wszelki wypadek) else { //porazka return(false); } } catch (Exception E) { Console.WriteLine("Topology.changeCost(): " + E.Message); return(false); } }
/// <summary> /// Dodaje SubNetworkPoint do listy /// </summary> /// <param name="SNP"></param> public void Add(SubNetworkPoint SNP) { snps.Add(SNP); }
/// <summary> /// Tworzy liste SNP i dodaje do niej pojedynczy SNP /// </summary> /// <param name="point"></param> public SubNetworkPointPool(SubNetworkPoint point) : this() { snps.Add(point); }