Esempio n. 1
0
        private void rutinaPartida()
        {
            if (this.Cola.esVacia())
            {
                //sacamos al cliente del servidor,
                cliente = Servidor.ClienteEnServicio;
                //calculamos estadisticos, y borramos al cliente del servidor
                Servidor.producirPartida(reloj);
                //asigno el evento partida al cliente que sale del servidor.
                cliente.partida = (Partida)eventoActual;
                //y finalmente, agregramos el cliente a nuestar lista final de clientes atendidos en sistema.
                this.clientesAtendidosEnSistema.Add(cliente);

                //vaciamos variables
                cliente      = null;
                eventoActual = null;

                //producimos partida tiempo de servicio infinito
                Partida partida = new Partida(reloj);
                partida.SetTiempoServicioInfinito();
                //agregamos la partida a nuestra lista de eventos
                this.catEventos.guardarEvento(partida);
            }
            else
            {
                //primero sacamos al cliente del servidor.
                cliente = Servidor.ClienteEnServicio;
                //asigno el evento partida al cliente que sale del servidor.
                cliente.partida = (Partida)eventoActual;
                //y finalmente, agregramos el cliente a nuestar lista final de clientes atendidos en sistema.
                this.clientesAtendidosEnSistema.Add(cliente);
                //vaciamos variables
                cliente      = null;
                eventoActual = null;

                /*ahora nos encargamos del cliente que sale de la cola e ingresa al servidor*/

                //calculamos el area de la cola antes de que se retire el cliente
                Cola.calcularArea(reloj, TUE);
                //sacamos al cliente de la cola
                this.cliente = Cola.ProducirPartida();
                //calculamos el tiempo que estuvo el cliente esperando a ser atendido por el servidor.
                acumuladorDemoras = acumuladorDemoras + (reloj - cliente.TiempoArriboServidorOcupado);
                //entregamos el cliente que salio de la cola , al servidor
                this.Servidor.servirCliente(cliente);

                //generamos una partida para el cliente que entra al servidor, guardandola en lev
                Partida partida = new Partida(reloj);
                this.catEventos.guardarEvento(partida);
            } //fin si
        }     //Fin rutina partida
Esempio n. 2
0
        }     //Fin rutina partida

        private void rutinaArribo()
        {
            //checkeamos que el servidor este desocupado.

            cliente        = new Cliente();
            cliente.arribo = (Arribo)this.eventoActual;

            if (this.Servidor.estaOcupado())
            {
                //al estar ocupado el servidor, se agrega el cliente a la cola.
                //establecemos el TA, para luego saber cuanto tarda el cliente en llegar+ser atendido
                this.cliente.setTiempoArriboPorServidorOcupado(reloj);
                Cola.calcularArea(reloj, TUE);
                Cola.AgregarCliente(cliente);
                cliente = null;
            }
            else
            /*el servidor desocupado implica un retraso de cero para el cliente.*/
            /*ahora  incrementamos el nro de clientes retrazados, y hacemos el server ocupado*/
            {
                servidor.TiempoInicioOcupacionServidor = reloj;
                Servidor.servirCliente(cliente);
                cliente = null;

                //ahora creamos evento partida, con un tiempode servicio.
                //el constructor ya setea el tiempo de servicio
                Partida partida = new Partida(reloj);
                this.catEventos.guardarEvento(partida);
            }


            //generamos un nuevo arribo
            //el constructor ya setea el tiempo de arribo
            Arribo proximoArribo = new Arribo(reloj);

            this.catEventos.guardarEvento(proximoArribo);
        }