четверг, 18 сентября 2014 г.

Delphi Event bus

Решились на работе поддержать Delphi сообщество и начать выкладывать в open source собственные наработки. 
Первой ласточкой суждено было стать пакету DelphiEventBus - реализация паттерна проектирования Event Bus.  
В Jаva мире есть такие пакеты как guava-libraries, но в Delphi ничего похожего найти не удалось. Потому решено было запилить нечто подобное. 

Из статьи Java event bus library comparison можно выцепить характеристики библиотек реализующих шину сообщений. 
Для DelphiEventBus получается следующие:
  • Объявление слушателя - аннотация
  • Синхронность отправки в шину - по умолчанию отправка синхронна. 
  • Асинхронность - в планах на будующее
  • Фильтрация событий - статическая, т.е. у обработчиков в листенера можно задать декларативно фильтры и их значения. При посылки события задаются значения предопределенных фильтров для конкретного события
  • Иерархия событий - да. Событие это объект. Есть базовый класс всех событий. Обработчик может ждать события определенного класса и всех его наследников
  • Строгость ссылочности листенера - строгая. Обязательная дерегистрация. Регистрируются и дерегистрируются  сразу все обработчики в листенере
  • Приоритет обработчиков - отсутствует. Но дополнительно реализован механизм хуков, похожий на виндовый механизм.
  • Реализованы хуки - возможность игнорировать фильтры и выстраивать цепочки обработки. Вызов хуков строго обратен порядку регистрации.


Должно работать на XE3 и выше. Еще бы readme перевести на английский...

Комментариев нет:

Отправить комментарий