Ejemplo n.º 1
0
        public void ReadingFromPathFile(string path)
        {
            string line;

            char[]   delimiterChars = { '#' };
            string[] words;
            int      id1, id2, pathID, index1, index2;

            try
            {
                using (StreamReader file = new StreamReader(path))
                {
                    while ((line = file.ReadLine()) != null)
                    {
                        words  = line.Split(delimiterChars);
                        id1    = Int32.Parse(words[1]);
                        id2    = Int32.Parse(words[2]);
                        pathID = Int32.Parse(words[0]);
                        index1 = nodes_names.Values.ToList().IndexOf(id1);
                        index2 = nodes_names.Values.ToList().IndexOf(id2);

                        Wezel w1 = this.topology.network.wezly.Find(x => x.idWezla == id1);
                        Wezel w2 = this.topology.network.wezly.Find(x => x.idWezla == id2);

                        Lacze lacze = new Lacze(pathID, w1, w2);
                        this.topology.network.krawedzie.Add(lacze);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Cannot read from file");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Dodaje link do listy potencjalnych linkow w topologii
        /// </summary>
        /// <param name="l"></param>
        public void addPotentialLink(Lacze l)
        {
            try
            {
                if (this.network.wezly.Contains(l.Wezel1) && this.network.wezly.Contains(l.Wezel2))
                {
                    //Index nastepnego lacza w networki
                    int linkId = this.network.krawedzie.Count - 1 + this.potentialLinks.Count - 1 + 1;

                    //zmiana id krawedzi
                    l.idKrawedzi = linkId;

                    //dodanie krawedzi do listy potencjalnych krawedzi
                    this.potentialLinks.Add(l);
                }
                else
                {
                    throw new Exception("The network hasn't got one or both of the nodes with ids: " + l.Wezel1.idWezla +
                                        " and " + l.Wezel2.idWezla + "!");
                }
            }
            catch (Exception E)
            {
                Console.WriteLine(E.Message);
            }
        }
Ejemplo n.º 3
0
        public void testUpdateCost()
        {
            Wezel w1 = new Wezel(1, "127.0.0.1");
            Wezel w2 = new Wezel(2, "127.0.0.2");

            Lacze link = new Lacze(12, w1, w2);

            Assert.AreEqual(0, link.Waga);

            //Dodanie wpisow do tablic eonowych wezla 1 na wyjsciu (f = 0, B = 17)
            link.Wezel1.SNPP.snps[0].eonTable.addRow(new EONTableRowOut(0, 17));
            //I na wejsciu wezla 2
            link.Wezel2.SNPP.snps[0].eonTable.addRow(new EONTableRowIN(0, 17));

            //Aktualizacja wagi krawędzi
            link.updateCost(0, 17);

            Assert.AreEqual(17 * 17, link.Waga);

            //f = 19, B = 5, ale tylko na jednym węźle
            link.Wezel1.SNPP.snps[0].eonTable.addRow(new EONTableRowOut(19, 5));

            link.updateCost(19, 5);

            Assert.AreEqual(17 * 17, link.Waga);

            link.Wezel2.SNPP.snps[0].eonTable.addRow(new EONTableRowIN(19, 5));

            link.updateCost(19, 5);

            Assert.AreEqual(22 * 22, link.Waga);
        }
Ejemplo n.º 4
0
    public bool Zmien_uprawnienia(string log, int g)
    {
        ObslugaDataContext polaczenie = Lacze.Polacz();
        var u = from us in polaczenie.Users where us.Login.Trim() == log select us;

        if (u.Count() == 1)
        {
            u.First().Group_id = g;
            polaczenie.SubmitChanges();
            return(true);
        }
        return(false);
    }
Ejemplo n.º 5
0
 /// <summary>
 /// Funkcja, zmieniajaca koszt lacza na podstawie nowego pasma zuzywanego przez nowy zasob.
 /// </summary>
 /// <param name="band"></param>
 /// <param name="lacze"></param>
 /// <returns></returns>
 public bool changeCost(short band, Lacze lacze)
 {
     //Znalezienie indeksu
     try
     {
         int idLacza = this.network.krawedzie.FindIndex(x => x == lacze);
         return(changeCost(band, idLacza));
     }
     catch (Exception E)
     {
         Console.WriteLine("Topology.changeCost(): " + E.Message);
         return(false);
     }
 }
Ejemplo n.º 6
0
    public void UtworzLacze(proces p1, proces p2)
    {
        Lacze d = new Lacze();

        d.name        = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
        d.source      = p1.PID;
        d.destination = p2.PID;
        d.bufor       = "";

        System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
        using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
        {
            writer.Serialize(file, d);
            file.Close();
        }
    }
Ejemplo n.º 7
0
    public void CommunicationNamed(proces p1, proces p2, string rozkaz)
    {
        string pomnazwa = p1.PID + "-" + p2.PID;

        Lacze d = new Lacze();

        if (File.Exists(Projekt_SO_10_finalX.Properties.Settings.Default.Path + pomnazwa + ".xml") == true)
        {
            d.name        = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
            d.source      = p1.PID;
            d.destination = p2.PID;
            d.bufor       = rozkaz;

            System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
            {
                writer.Serialize(file, d);
                file.Close();
            }
            System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
            using (System.IO.StreamReader file1 = new System.IO.StreamReader(Projekt_SO_10_finalX.Properties.Settings.Default.Path + pomnazwa + ".xml"))
            {
                d = (Lacze)reader.Deserialize(file1);
                p2.rozkazy.Add(d.bufor);
                d.bufor = "";
                Console.WriteLine("Przekazano");
            }



            d.name        = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
            d.source      = p1.PID;
            d.destination = p2.PID;
            d.bufor       = "";

            System.Xml.Serialization.XmlSerializer writer1 = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
            {
                writer1.Serialize(file, d);
                file.Close();
            }
        }
        else
        {
            Console.WriteLine("Nie ma takiego Łącza");
        }
    }
Ejemplo n.º 8
0
    public void CommunicationNamed(proces p1, proces p2, string rozkaz)
    {
        string pomnazwa = p1.PID + "-" + p2.PID;

            Lacze d=new Lacze();
            if (File.Exists(Projekt_SO_10_finalX.Properties.Settings.Default.Path + pomnazwa + ".xml") == true)
            {
                d.name = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
                d.source = p1.PID;
                d.destination = p2.PID;
                d.bufor = rozkaz;

                System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
                {
                    writer.Serialize(file, d);
                    file.Close();
                }
                System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
                using (System.IO.StreamReader file1 = new System.IO.StreamReader(Projekt_SO_10_finalX.Properties.Settings.Default.Path + pomnazwa + ".xml"))
                {
                    d = (Lacze)reader.Deserialize(file1);
                    p2.rozkazy.Add(d.bufor);
                    d.bufor = "";
                    Console.WriteLine("Przekazano");
                }

                d.name = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
                d.source = p1.PID;
                d.destination = p2.PID;
                d.bufor = "";

                System.Xml.Serialization.XmlSerializer writer1 = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
                {
                    writer1.Serialize(file, d);
                    file.Close();
                }

            }
            else
            { Console.WriteLine("Nie ma takiego Łącza"); }
    }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 10
0
    public bool Dodaj_pokoj(string nr, string r)
    {
        ObslugaDataContext polaczenie = Lacze.Polacz();
        var u = from us in polaczenie.Pokojes where us.Nr_pokoju.Trim() == nr select us;

        if (u.Count() == 0)
        {
            Pokoje nowy_pokoj = new Pokoje();
            polaczenie.Pokojes.InsertOnSubmit(nowy_pokoj);
            nowy_pokoj.Nr_pokoju = nr;
            nowy_pokoj.Rodzaj    = r;
            polaczenie.SubmitChanges();
            return(true);
        }
        else
        {
            return(false);
        }
    }
Ejemplo n.º 11
0
    public bool Dodaj_usluge(string na, string o, int c)
    {
        ObslugaDataContext polaczenie = Lacze.Polacz();
        var u = from us in polaczenie.Uslugis where us.Nazwa.Trim() == na select us;

        if (u.Count() == 0)
        {
            Uslugi nowa_usluga = new Uslugi();
            polaczenie.Uslugis.InsertOnSubmit(nowa_usluga);
            nowa_usluga.Nazwa = na;
            nowa_usluga.Opis  = o;
            nowa_usluga.Cena  = c;
            polaczenie.SubmitChanges();
            return(true);
        }
        else
        {
            return(false);
        }
    }
Ejemplo n.º 12
0
        public void testWyznaczWezly()
        {
            Wezel w1 = new Wezel(1, "127.0.0.1");
            Wezel w2 = new Wezel(2, "127.0.0.2");
            Wezel w3 = new Wezel(3, "127.0.0.3");

            Lacze l12 = new Lacze(12, w1, w2, 1);
            Lacze l23 = new Lacze(23, w2, w3, 1);

            Sciezka s = new Sciezka();

            s.KrawedzieSciezki.Add(l12);
            s.KrawedzieSciezki.Add(l23);

            s.wyznaczWezly(w1);

            Assert.AreEqual(w1, s.WezlySciezki[0]);
            Assert.AreEqual(w2, s.WezlySciezki[1]);
            Assert.AreEqual(w3, s.WezlySciezki[2]);
        }
Ejemplo n.º 13
0
    public bool Dodaj_User(string log, string pass, string i, string n, int g)
    {
        ObslugaDataContext polaczenie = Lacze.Polacz();
        var u = from us in polaczenie.Users where us.Login.Trim() == log select us;

        if (u.Count() == 0)
        {
            User nowy_user = new User();
            polaczenie.Users.InsertOnSubmit(nowy_user);
            nowy_user.Group_id  = g;
            nowy_user.Login     = log;
            nowy_user.Password  = pass.GetHashCode().ToString();
            nowy_user.FirstName = i;
            nowy_user.LastName  = n;
            polaczenie.SubmitChanges();
            return(true);
        }
        else
        {
            return(false);
        }
    }
Ejemplo n.º 14
0
    protected void bLoguj_Click(object sender, EventArgs e)
    {
        ObslugaDataContext polaczenie = Lacze.Polacz();
        var u = from us in polaczenie.Users where us.Login.Trim() == tbLogin.Text && us.Password.Trim() == tbPass.Text.GetHashCode().ToString() select us;

        if (u.Count() == 0)
        {
            Response.Redirect("Logowanie.aspx");
        }
        else
        {
            if (u.First().Group_id == 1)
            {
                Session["LogName"] = u.First().FirstName.Trim();
                Response.Redirect("~/Log/IndexLog.aspx?imie=" + Session["LogName"]);
            }
            else if (u.First().Group_id == 2)
            {
                Response.Redirect("~/Log/AdminPanel.aspx");
            }
        }
    }
Ejemplo n.º 15
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);
            }
        }
Ejemplo n.º 16
0
        public List <SubNetworkPointPool> routePath(SubNetworkPointPool beginningNetworkPointPool,
                                                    SubNetworkPointPool endNetworkPointPool, short band)
        {
            var path = getPathOfSNPPs(beginningNetworkPointPool, endNetworkPointPool, band);

            //0 w ścieżce oznacza, że nie da się zestawić połączenia
            if (path.Count == 0)
            {
                //Skopiowanie sieci
                var newNetwork = new Siec(network);

                newNetwork.krawedzie = newNetwork.krawedzie.OrderByDescending(o => o.Waga).ToList();

                for (int i = 0; i < newNetwork.krawedzie.Count; i++)
                {
                    Wezel W1 = new Wezel(newNetwork.krawedzie[i].Wezel1.idWezla, newNetwork.krawedzie[i].Wezel1.idWezla,
                                         newNetwork.krawedzie[i].Wezel1.idWezla, newNetwork.krawedzie[i].Wezel1.ip);
                    Wezel W2 = new Wezel(newNetwork.krawedzie[i].Wezel2.idWezla, newNetwork.krawedzie[i].Wezel2.idWezla,
                                         newNetwork.krawedzie[i].Wezel2.idWezla, newNetwork.krawedzie[i].Wezel2.ip);

                    Lacze potentialLink = potentialLinks.Find(x => x.Wezel1.idWezla == W1.idWezla && x.Wezel2.idWezla == W2.idWezla &&
                                                              x.Wezel1.ip == W1.ip && x.Wezel2.ip == W2.ip);

                    //udalo sie znalezc lacze
                    if (potentialLink != null)
                    {
                        //Wstawiamy nowe łącze na koniec listy
                        potentialLink.idKrawedzi = newNetwork.krawedzie.Count;
                        newNetwork.krawedzie.Add(potentialLink);
                        newNetwork.aktualizujLiczniki();

                        //Po wstawieniu nowego łącza do eksperymentalnej sieci, zapuszaczamy algorytm Floyda
                        newNetwork.algorytmFloyda();

                        path = getPathOfSNPPs(beginningNetworkPointPool, endNetworkPointPool, band);

                        //nie udało się
                        if (path.Count == 0)
                        {
                            continue;
                        }
                        //udało się, dzięki wstawieniu krawędzi z potencjalnej udało się stworzyć ścieżkę
                        else
                        {
                            //Pierwszy wezel sciezki
                            Wezel beginNode = newNetwork.wezly.Find(x => x.ip == path[0].snps[0].ipaddress.ToString());
                            //Ostatni wezel sciezki
                            Wezel endNode = newNetwork.wezly.Find(x => x.ip == path[path.Count - 1].snps[0].ipaddress.ToString());

                            //Wyznaczamy sciezke jeszcze raz, by uzyskac liste laczy
                            var links = new Sciezka().wyznaczSciezke(beginNode, endNode, newNetwork.zwrocTabliceKierowaniaLaczami,
                                                                     newNetwork.zwrocTabliceKierowaniaWezlami, ref newNetwork.wezly, band, newNetwork.Koszty);

                            foreach (Lacze link in links)
                            {
                                //Jeżeli danej krawędzi z wyznaczonej ścieżki nie ma w wyjściowej topologii, trzeba ją dodać do tej topologii
                                if (!network.zwroc_lacza.Contains(link))
                                {
                                    network.krawedzie.Add(link);
                                    //jeszcze zmiana id krawedzi na jej indeks
                                    link.idKrawedzi = network.krawedzie.Count - 1;
                                    //Lacze juz nie jest potencjalne, lecz rzeczywiste
                                    this.potentialLinks.Remove(link);
                                }
                            }

                            return(path);
                        }
                    }
                }

                //Zwrocenie pustej listy, gdy nic sie nie udalo zrobic
                return(new List <SubNetworkPointPool>());
            }
            //A jak Count != 0, to mozna zwrocic sceizke
            else
            {
                return(path);
            }
            return(null);
        }
Ejemplo n.º 17
0
 public void addLink(Lacze l)
 {
     network.krawedzie.Add(l);
     network.aktualizujLiczniki();
     EONTable e = new EONTable();
 }
Ejemplo n.º 18
0
    public void UtworzLacze(proces p1, proces p2)
    {
        Lacze d = new Lacze();
            d.name = Convert.ToString(p1.PID) + "-" + Convert.ToString(p2.PID);
            d.source = p1.PID;
            d.destination = p2.PID;
            d.bufor = "";

            System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Lacze));
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(Projekt_SO_10_finalX.Properties.Settings.Default.Path + d.name + ".xml"))
            {
                writer.Serialize(file, d);
                file.Close();
            }
    }