Delphi Event bus
Решились на работе поддержать Delphi сообщество и начать выкладывать в open source собственные наработки.
Первой ласточкой суждено было стать пакету DelphiEventBus — реализация паттерна проектирования Event Bus.
В Jаva мире есть такие пакеты как guava-libraries, но в Delphi ничего похожего найти не удалось. Потому решено было запилить нечто подобное.
Из статьи Java event bus library comparison можно выцепить характеристики библиотек реализующих шину сообщений.
Для DelphiEventBus получается следующие:
- Объявление слушателя — аннотация
- Синхронность отправки в шину — по умолчанию отправка синхронна.
- Асинхронность — в планах на будующее
- Фильтрация событий — статическая, т.е. у обработчиков в листенера можно задать декларативно фильтры и их значения. При посылки события задаются значения предопределенных фильтров для конкретного события
- Иерархия событий — да. Событие это объект. Есть базовый класс всех событий. Обработчик может ждать события определенного класса и всех его наследников
- Строгость ссылочности листенера — строгая. Обязательная дерегистрация. Регистрируются и дерегистрируются сразу все обработчики в листенере
- Приоритет обработчиков — отсутствует. Но дополнительно реализован механизм хуков, похожий на виндовый механизм.
- Реализованы хуки — возможность игнорировать фильтры и выстраивать цепочки обработки. Вызов хуков строго обратен порядку регистрации.
Должно работать на XE3 и выше. Еще бы readme перевести на английский…