Не алгоритм, а принцип работы:
- Ищем лимит, который отклоняет запрос;
- if found
-- Отклоняем запрос.
- else
-- Учитываем запрос во всех лимитах;
-- Ищем лимит, который устанавливает наибольший delay;
-- if max delay == 0
--- Пропускаем запрос.
-- else
--- Задерживаем запрос на max delay.
Хорошо?
--
Валентин