Esempio n. 1
0
        /// <summary>
        /// Particiona el slot de backup utilizado en función del swap ejecutado.
        /// </summary>
        /// <param name="s">Swap ejecutado sobre el slot de backup en operación</param>
        private void DividirSlot(Swap s)
        {
            int tiempo_corte_swap;      //= s.Tramo_Ini_Emisor.TInicialRst + s.Minutos_Atraso_Reaccionario_Inicial;
            int tiempo_inicio_uso_swap; // = s.Tramo_Ini_Emisor.TFinProgMasTATramoPrevio;

            s.EstimarTiemposCorteBackup(out tiempo_corte_swap, out tiempo_inicio_uso_swap);
            SlotBackup slotUsado = BuscarSlot(s.TramoPreBackup.TInicialProg, s.TramoPostBackup.TFinalRst);

            if (slotUsado != null)
            {
                slotUsado.TipoUso      = TipoUsoBackup.Swap;
                slotUsado.TiempoIniUso = Math.Max(slotUsado.TiempoIniUso, Math.Min(slotUsado.TiempoFinPrg, tiempo_inicio_uso_swap));
                slotUsado.TiempoFinRst = Math.Min(Math.Max(tiempo_corte_swap, slotUsado.TiempoIniRst), slotUsado.TiempoFinPrg);
                tiempo_corte_swap      = slotUsado.TiempoFinRst;
                slotUsado.TiempoFinUso = slotUsado.TiempoFinRst;
                int tiempoFinNuevo = Math.Min(slotUsado.TiempoFinPrg, s.TiempoFinHolguraEnEmisor);
                if (tiempoFinNuevo - tiempo_corte_swap > 0)
                {
                    string matricula = null;
                    if (s.TipoUsoBackup == UsoBackup.FinEmisor)
                    {
                        matricula = s.IdAvionReceptor;
                    }
                    else
                    {
                        matricula = s.IdAvionEmisor;
                    }
                    SlotBackup nuevo_slot = new SlotBackup(this, tiempo_corte_swap, tiempoFinNuevo, Estacion, matricula);
                    _slots.Add(nuevo_slot);
                }
            }
        }