Ejemplo n.º 1
0
 //realizacion del metodo de la interfaz, el servidor se comporta segun el evento y el servicio que se calculo
 public void hacerAlgo(string evento, double reloj, int _servicio)
 {
     //Si el evento es la llegada de un cliente y esta libre y loa atiende
     if (cola.esTuEventoLlegada(evento, _servicio))
     {
         if (estado == 0)
         {
             if (!cola.estaAtendido())
             {
                 cola.quitarElemento();
                 cola.setAtencion(true);
                 proxFAT = calcularProximaFAT() + reloj;
                 estado  = 1;
             }
         }
     }
     //si el evento es un fin de atencion y hay clientes en la cola entonces calcula el proximo fin de atencion y quita un cliente de la cola
     if (evento == eventoFat)
     {
         if (cola.tenesAlgo())
         {
             cola.quitarElemento();
             proxFAT = calcularProximaFAT() + reloj;
         }
         else
         {
             proxFAT = -1;
             estado  = 0;
         }
     }
 }
        public void hacerAlgo(string evento, double reloj, int _servicio)
        {
            //evalua si el servidor esta interrupido
            if (interrumpido)
            {
                //si esta interrumpido y el evento es fin de interrupcion entonces se liber el servidor
                if (evento == eventoFinInterrupcion)
                {
                    estado       = 0;
                    interrumpido = false;
                    atendidos    = 0;
                    proxFAT      = -1;
                    //verifica si la cola tiene algo en ese caso atiende un cliente
                    if (cola.tenesAlgo())
                    {
                        cola.quitarElemento();

                        proxFAT    = calcularProximaFAT() + reloj;
                        estado     = 1;
                        atendidos += 1;
                    }
                    else
                    {
                        proxFAT = -1;
                        estado  = 0;
                    }
                }
            }
            else
            {
                //verifica ante un evento si la cola esta libre  y la atiende
                if (estado == 0 && cola.tenesAlgo())
                {
                    if (!cola.estaAtendido())
                    {
                        cola.quitarElemento();
                        proxFAT    = calcularProximaFAT() + reloj;
                        estado     = 1;
                        atendidos += 1;
                    }
                }
                //verifica si el evento y el servicio pertenece a la cola en caso de estar libre lo atiende
                if (cola.esTuEventoLlegada(evento, _servicio))
                {
                    if (estado == 0 && cola.tenesAlgo())
                    {
                        if (!cola.estaAtendido())
                        {
                            cola.quitarElemento();
                            cola.setAtencion(true);
                            proxFAT    = calcularProximaFAT() + reloj;
                            estado     = 1;
                            atendidos += 1;
                        }
                    }
                }
                // en caso de el evento sea un fin de atencion y lo cola tiene clientes, atiende a uno sino se libera
                if (evento == eventoFat)
                {
                    if (cola.tenesAlgo())
                    {
                        cola.quitarElemento();

                        proxFAT    = calcularProximaFAT() + reloj;
                        atendidos += 1;
                    }
                    else
                    {
                        proxFAT = -1;
                        estado  = 0;
                    }
                }
            }
            if (cantLimite == atendidos && !interrumpido)
            {
                interrumpido = true;
                proxFAT      = calcularProximaFAT() + reloj;
                estado       = 2;
            }
        }