
Задерживает заявки на заданный период времени. Время задержки вычисляется динамически, может быть случайным, зависеть от текущей заявки или от каких-то других условий. Это время может, в частности, вычисляться как длина фигуры, заданной в качестве фигуры анимации этого объекта, поделенной на "скорость" заявки.
Одновременно могут быть задержаны сразу несколько заявок (не более заданной вместимости объекта capacity). Заявки задерживаются независимо друг от друга – время задержки вычисляется отдельно для каждой заявки. Как только время задержки истекает, заявка тут же покидает объект. Если объект Delay заполнен полностью, то новую заявку он не примет, и в этом случае Вам нужно будет поместить перед ним специальный объект буферизации, например, Queue.
Пример задания времени задержки: пусть время обработки пакета данных (заявка класса Packet) пропорционально размеру пакета + какое-то случайное время. Тогда Вы можете сделать следующее: указать Packet в качестве Класса заявки объекта Delay и написать processingTimePerDataUnit * entity.size + uniform( timeMin, timeMax ) в поле параметра delayTime.
Если вместимость объекта Delay меняется динамически, и количество заявок, находящихся в объекте в данный момент времени, превышает значение вместимости объекта, то объект Delay даст каждой такой заявке завершить ее время ожидания, и не будет принимать новые заявки до тех пор, пока их количество в объекте не станет меньше нового значения вместимости объекта.
Вы можете выполнять любые необходимые Вам действия над содержащимися в объекте заявками, напрмер, узнавать, сколько времени еще заявкам осталось находиться в объекте, и даже извлекать заявки, не дожидаясь того, когда их времена задержек истекут.
Объект Delay может отображать анимации находящихся в нем заявок как движущимися вдоль заданного пути, так и ожидающими в заданных точках. В том случае, если заявки отображаются движущимися, за время их задержки они должны будут пройти весь путь выбранной фигуры анимации объекта Delay.Обратите внимание, что объект Delay с ограниченной вместимостью по сути эквивалентен комбинации объектов Service + ResourcePool с той же вместимостью, где ресурсы используются только в этом объекте Service.
Статистика собирается только если выбрана опция объекта Включить сбор статистики. int size() - возвращает количество заявок, задерживаемых объектом в текущий момент времени.
T get( int index ) - возвращает заявку, находящуюся в позиции с номером index (самая "старая" заявка находится в позиции с номером 0).
void resetStats() - удаляет статистику, собранную объектом к текущему моменту времени.