Как использовать много экземпляров одного и того же обработчика событий с различным состоянием? - PullRequest
1 голос
/ 09 ноября 2011

У меня есть приложение OTP с событием, которое происходит периодически. Есть несколько актеров, которые хотят что-то сделать в ответ на событие. Материал, который делает каждый актер, является функцией его собственного состояния, но в остальном они идентичны.

Моя проблема в том, как я собираюсь включить эту настройку в дерево наблюдения. У меня есть менеджер gen_event, каждый из которых является обработчиком событий. Это было бы хорошо, если бы не тот факт, что наблюдение gen_event странно. Как только мой первый обработчик add_sup_handler, остальные потерпят неудачу с already_started, и мой gen_server, который действует как супервизор для обработчиков событий, умирает.

Так что мне здесь делать? Я начинаю думать, что мне нужно написать собственного менеджера событий, который может отслеживать всех моих актеров и их состояние.

1 Ответ

2 голосов
/ 09 ноября 2011

gen_event:add_handler/3 * * 1004

Обработчик - это имя модуля обратного вызова Module или кортежа. {Module,Id}, где Id - любой термин. Представление {Module,Id} позволяет идентифицировать конкретный обработчик событий, когда есть несколько обработчиков событий, использующих один и тот же модуль обратного вызова.

...