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"); } }
/// <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); } }
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); }
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); }
/// <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); } }
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(); } }
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"); } }
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"); } }
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); }
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); } }
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); } }
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]); }
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); } }
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"); } } }
/// <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); } }
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); }
public void addLink(Lacze l) { network.krawedzie.Add(l); network.aktualizujLiczniki(); EONTable e = new EONTable(); }