public static void Main(string[] args) { String ip; int portSZ = 0; int portCloud = 0; int portControl = 0; int portLRM = 0; int idW = 0; Console.Title = ("Węzeł Sieciowy"); if (args.Length == 6) { idW = Convert.ToInt32(args[0]); ip = args[1]; portSZ = Convert.ToInt32(args[2]); portCloud = Convert.ToInt32(args[3]); portControl = Convert.ToInt32(args[4]); portLRM = Convert.ToInt32(args[5]); } else { Console.Write("Podaj ip Systemu Zarządzania lub wybierz zestaw: "); ip = Console.ReadLine(); if (ip[0].Equals('g')) { idW = Convert.ToInt32(ip.Substring(1, 1)); ip = "127.0.0.1"; portSZ = 10000; // port do ap. Zarządzania portCloud = 10100; // port do Clouda data portControl = 10102; // port do Gienka portLRM = 10101; // port do Clouda LRM } else { Console.Write("Podaj port Systemu Zarządzania: "); portSZ = Convert.ToInt32(Console.ReadLine()); Console.Write("Podaj port Chmury Kablowej: "); portCloud = Convert.ToInt32(Console.ReadLine()); Console.Write("Podaj port Systemu Sterowania: "); portControl = Convert.ToInt32(Console.ReadLine()); } } Console.Title = ("Węzeł Sieciowy, Id: " + (idW.ToString())); //ustawienie tekstu belki tytulowej Siec Network = new Siec(ip, portCloud, portSZ, idW); Siec NetworkC = new Siec(ip, portLRM, portControl, idW); Komutator pole_Kom = new Komutator(Network); new Agent(Network, pole_Kom); new AgentControl(NetworkC, pole_Kom); }
/** * LRM id_połączenia(01) zakres_lambd_f1f2(0101) * Gienerał id_połączenia(01) snppA(11) snppB(12) * **/ public AgentControl(Siec Network, Komutator kom) { this.Network = Network; this.kom = kom; ControlList = new List <ModelControl>(); //lista rozkazow polaczen od CC //LRMList = new List<ModelLRM>(); //lista rozkazow polaczen od LRM, jesli ktores sie pokryje, polaczenie jest zestawiane listaZajetosciLambd = new List <int>(); ControlList.Add(new ModelControl()); //generuje zerową porządkową pozycję(na potrzeby obslugi bledow) init(); }
private void SetConf() //powiadamia Komutator ze trzeba krosowac { int portIn, portOut, f1, f2; communicationT.Send_Text(Protokol.SET_R, Network.outputSZ); portIn = Convert.ToInt32(command[connections].Substring(0, 1)); portOut = Convert.ToInt32(command[connections].Substring(1, 1)); f1 = Convert.ToInt32(command[connections].Substring(2, 1)); f2 = Convert.ToInt32(command[connections].Substring(3, 1)); if (Network.strumienCloud != null) { connections++; //zwiekszanie licznika polaczen Komutator.SetConnect(portIn, portOut, f1, f2, connections); // wyslanie danych nowego polaczenia, connections = id polaczenia } }
private void CheckParameters() // sprawdza czy mamy juz 2 odpowiadajace sobie jednostki, { //od Gienerała i od LRM, jesli tak, zestawiamy polaczenie foreach (ModelControl s in ControlList) { foreach (ModelLRM t in LRMList) { if (s.id.Equals(t.id)) { int snnpA, snnpB, f1, f2; // ta bezsensowna konwersja ale trudno snnpA = Convert.ToInt32(s.snnpA); snnpB = Convert.ToInt32(s.snnpB); f1 = Convert.ToInt32(t.f1); f2 = Convert.ToInt32(t.f2); Komutator.SetConnect(snnpA, snnpB, f1, f2, ++Agent.connections); // jako id polaczenia podawane jest connections zabrane ze zwyklego agenta, ale zwiekszone o 1 zeby liczba polaczen sie zgadzala } } } }
/** command[10]: * logowanie nasluchuje odpowiedzi na 0 - conf * polaczenie nr 1 na 1. np. 23 - 2 in 3 out * nr 2 na 2 itd max 5 polaczen * nr 3 * nr 4 * nr 5 * * konwersja portów nr 6. * disconnect na 9 * * bledy na 10 **/ public Agent(Siec Network, Komutator kom) { this.Network = Network; this.kom = kom; connections = 0; Boolean connCC = false; Boolean connSZ = false; communicationT = new Sygnal_Text(); //Thread closerT = new Thread(Maintenance.closer); //closerT.Start(); for (int i = 0; i < command.Length; i++) { command[i] = null; } //if (Network.connectService(false)) //{ // Console.WriteLine("Nawiązano połączenie z Systemem Zarządzania."); // connSZ = true; //} //else // Console.WriteLine("\nSystem Zarządzania niedostępny."); if (Network.connectService(true)) { Console.WriteLine("Nawiązano połączenie z Chmurą Kablową."); connCC = true; } else { Console.WriteLine("\nChmura Kablowa niedostępna."); } //if (connSZ) //{ // listenSZ = new Thread(new ParameterizedThreadStart(Listen_Text)); // listenSZ.Start(false); //} if (connCC) { listenCC = new Thread(new ParameterizedThreadStart(Listen_Text)); //przypisanie watka listenCC.Start(true); //rozpoczecie nasluchiwania CC } Console.Write("\n------------------------------\n\n"); //robi odstęp dla czystości w oknie connSZ = true; //wywalic if (connSZ && connCC) //jeśli sa polaczenia rozpocznij logowanie do systemów { //if (Loguj(false)) //{ // Console.WriteLine("gitara. Logowanie do Systemu Zarządzania zakończone sukcesem."); //jesli logowanie zakonczone sukcesem, kontynuuj, jesli nie, zakoncz nasluch. if (Loguj(true)) { Console.WriteLine("gitara. Logowanie do Chmury Kablowej zakończone sukcesem."); } // else // Console.WriteLine("\nLogowanie do Chmury Kablowej zakończone porażką. bęben."); //} ////else // Console.WriteLine("\nLogowanie do Systemu Zarządzania zakończone porażką. bęben. Węzeł na złom."); } else //zamyka połączenia, nasłuch wyłącza program. { try { listenSZ.Abort(); listenCC.Abort(); } catch (ThreadStateException e) { } catch (NullReferenceException e) { } Network.DisconnectService(true); Network.DisconnectService(false); Console.WriteLine("\n\nWystąpiły błedy, naciśnij dowolny klawisz aby zakończyć."); Console.ReadKey(); Environment.Exit(0); } Console.Write("\n------------------------------\n\n"); //robi odstęp dla czystości w oknie try { listenCC.Abort(); //wylaczenie nasluchu tekstowego na CC Thread.Sleep(1500); //Network.inputCC.Close(); //Network.outputCC.Close(); Network.inputCloud = null; Network.outputCloud = null; Console.WriteLine("Wyłączono nasluch tekstowy CC."); } catch (NullReferenceException e) { Console.WriteLine("Nie wyłączono nasłuchu."); } catch (EncoderFallbackException e) { Console.WriteLine("Nie wyłączono nasłuchu."); } Console.Write("\n------------------------------\n\n"); //robi odstęp dla czystości w oknie //if (Console.ReadLine().Equals("x")) //{ // Test testuj = new Test(Network); //} //Loguj(true); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KONIEC KONSTRUKTORA !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! }