/// <summary> /// Очищает очередь для пакета /// </summary> /// <returns></returns> private bool GetPlace(int length, Queuering Packages) { while (Packages.TailDrop(length)) { //очистить нужное место Packages.GetPackage(); } return(true); }
public static void PrintToFileQueuering(Queuering queue) { String text = queue.ID + ":"; PrintToFile(pathForQueuerings, text); if (queue.NOTNULL()) { PrintToFile(pathForQueuerings, queue.PrintToFile()); } }
/// <summary> /// Управление перегрузками /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Congestion_Management(object sender, EventArgs e) { Queue <Package> packages; if (ItExample) { packages = algorithm.GetPackages(Setting.CurSpeed); //if (packages == null && !timerGenPack.IsEnabled) timerAlg.Stop(); if (packages != null) { PrintToFile(packages); SetResultQueue(packages); } if (curNumStartPackageTest >= packageStartTests.Count - 1 && !timerGenPack.IsEnabled && packages == null) { ++numAlgorithm; if (numAlgorithm < 7) { timerGenPack.Start(); SetAlg(numAlgorithm); curNumStartPackageTest = 0; StartPackage.Clear(); } //запоминаем окончательные очереди packageResultTests.Add(resultPackage); resultPackage = new Queuering(Setting.MaxConstSizeQueuering); curNumResultPackageTest++; } } else { packages = algorithm.GetPackages(Setting.CurSpeed); if (packages == null && !timerGenPack.IsEnabled) { timerAlg.Stop(); } if (packages != null) { PrintToFile(packages); SetResultQueue(packages); } } }
/// <summary> /// Имитация роутера /// </summary> /// <param name="numAlgorithm">Номер алгоритма</param> /// <param name="paint">Место отрисовки</param> /// <param name="info">Место отрисовки информации</param> /// <param name="numTest">Номер теста, если -1 - не тест</param> public Router(int numAlgorithm, Canvas paint, Canvas info, int numTest = -1) { genPackage = new GenPackage(); settingFile = new SettingFile(); Graphica = new MyGraphica(paint, info); Package.nextID = 0; curNumStartPackageTest = 0; curNumResultPackageTest = 0; if (numTest == -1) { ItExample = false; } else { ItExample = true; } this.numAlgorithm = numAlgorithm; resultPackage = new Queuering(Setting.MaxConstSizeQueuering); StartPackage = new Queuering(Setting.MaxConstSizeQueuering); if (ItExample) { packageStartTests = SettingFile.GetExample(numTest); packageResultTests = new List <Queuering>(); /*for (int i = 0; i < 7; i++) * { * packageResultTests.Add(new Queuering(Setting.MaxConstSizeQueuering)); * }*/ } SetAlg(numAlgorithm); }
/// <summary> /// First In, First Out. /// Пакеты уходят из очереди ровно в том порядке, в котором они туда попали /// </summary> public FIFO() { queue = new Queuering(); }