Exemple #1
0
        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);
        }
Exemple #2
0
        /**
         *  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();
        }
Exemple #3
0
        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
            }
        }
Exemple #4
0
        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
                    }
                }
            }
        }
Exemple #5
0
        /**  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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        }