Example #1
0
        /// <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);
            }
        }
Example #3
0
        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]);
        }
Example #4
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);
            }
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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);
 }