Пример #1
0
        public bool liberar(Trama a, Trama b, BufferSecundario bs)
        {
            if (!bs.insertTrama(a))
            {
                return(false);
            }

            if (!bs.insertTrama(b))
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        // Falta por IMplementar:
        // - Pasar una Trama generica al constructor para identifcar despues el tipo TCP o UDP.
        // - IMPROTANT: Bus Tarjeta Red -> BuffP.
        // - Un mensaje de bienvenida que recuerde al usuario lo sexy que se ve hoy B) .

        // Errores conocidos:
        // - Liberacion de Trama, de bufP > bufS. El borrado de la trama se comporta de forma incorrecta.


        static void Main(string[] args)
        {
            // Atts.
            int    opt = -1;
            int    insert_port;
            int    insert_prior;
            String insert_msg;
            int    insert_trama;
            bool   success; // Flag para comprobar si als operaciones se han realizado correctamente.

            Random port  = new Random();
            Random prior = new Random();
            Random msg   = new Random();

            List <Trama> array_tramas;

            Trama trama1  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama2  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama3  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama4  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama5  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama6  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama7  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama8  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama9  = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());
            Trama trama10 = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());

            Trama aleatoria;

            Trama trama_a;    // Used for operational purposes, like liberando BusPrincipal.
            Trama trama_b;

            BufferPrincipal  bufP = new BufferPrincipal();
            BufferSecundario bufS = new BufferSecundario();

            BusP busprincipal = new BusP();      // Mueve el flujo de datos al Buffer Secundario, bufS.

            // Start of Program.

            array_tramas = new List <Trama>();
            array_tramas.Add(trama1);
            array_tramas.Add(trama2);
            array_tramas.Add(trama3);
            array_tramas.Add(trama4);
            array_tramas.Add(trama5);
            array_tramas.Add(trama6);
            array_tramas.Add(trama7);
            array_tramas.Add(trama8);
            array_tramas.Add(trama9);
            array_tramas.Add(trama10);

            Console.WriteLine("========================");
            Console.WriteLine(">> Tramas List: ");
            foreach (Trama t in array_tramas)
            {
                Console.WriteLine(" : Port: " + t.Port + " Prior: " + t.Prior + " Msg: " + t.Msg);
            }
            Console.WriteLine("========================");

            while (opt != 0)
            {
                menu();
                opt = Convert.ToInt32(Console.ReadLine());


                switch (opt)
                {
                case 1:
                    Console.WriteLine(">> Mostrar Buffer Principal.");
                    bufP.showBuffer();
                    break;

                case 2:
                    Console.WriteLine(">> Mostrar Buffer Secundario.");
                    bufS.showBuffer();
                    break;

                case 3:
                    Console.WriteLine(">> Insertar Trama en Buffer Principal.");

                    //Console.WriteLine(">> Que Trama desea insertar?");
                    //printTramasList(array_tramas);
                    //insert_trama = Convert.ToInt32(Console.ReadLine());

                    aleatoria = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());

                    success = bufP.insertTrama(aleatoria);

                    if (success)
                    {
                        Console.WriteLine("Nice B)");
                    }
                    else
                    {
                        // BussP lleno seguramente!
                        Console.WriteLine("Como!? >:O ");

                        // Liberar BusP.
                        trama_a = bufP.extractTrama();
                        trama_b = bufP.extractTrama();

                        // BusPrincipal a rodar!! (Referencia a transformers :3)
                        if (busprincipal.liberar(trama_a, trama_b, bufS))
                        {
                            // No libera correctamente. La extracion de la trama desde bufP no funciona como deberia, extrae las tramas correctamente.
                            // Pero no "elimina/pone Prior -1" a la trama al salir de la extracion. Por lo tanto la inserccion en el bufS funciona
                            // pero no como deberia consecuencia de esto. Revisar.
                            Console.WriteLine("Error liberando tramas.");
                        }
                    }

                    break;

                case 4:
                    Console.WriteLine(">> Insertar Trama en Buffer Secundario.");

                    aleatoria = new Trama(port.Next(1, 4), prior.Next(1, 11), msg.Next(0, 50).ToString());

                    success = bufS.insertTrama(aleatoria);

                    if (success)
                    {
                        Console.WriteLine("Nice B)");
                    }
                    else
                    {
                        Console.WriteLine("Como!? >:O ");
                    }
                    break;

                case 5:
                    Console.WriteLine(">> Mostrar Tramas.");
                    printTramasList(array_tramas);
                    break;

                case 6:
                    Console.WriteLine(">> Crear Trama.");

                    Console.WriteLine(">> Inserte Puerto Destino: ");
                    insert_port = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine(">> Inserte Prioridad: ");
                    insert_prior = Convert.ToInt32(Console.ReadLine());

                    Console.WriteLine(">> Inserte Mensaje: ");
                    insert_msg = Console.ReadLine();

                    array_tramas.Add(new Trama(insert_port, insert_prior, insert_msg));

                    Console.WriteLine(">> Trama insertada!");
                    break;

                case 0:
                    Console.WriteLine(">> Salir.");
                    break;
                }
            }
        }