2011-09-28 7 views
0

Возможно ли запустить модуль супервизора в ejabberd, который я могу добавить модуль gen_fsm для каждого соединения?Добавить динамический супервизор в ejabberd

В частности, я хочу создать диспетчер, который я запускаю при запуске сервера (или при подключении). И у меня есть пара gen_server s, которую я хочу начать, но часть, на которую я ищу некоторые рекомендации, заключается в том, как динамически добавить модуль gen_fsm моему супервизору, когда я увижу присутствие этого пользователя в сети?

ответ

1

Вы можете взглянуть на Simple one for on supervisor, что:

является упрощенной супервизора one_for_one, в котором все дочерние процессы являются динамически добавляемые экземпляры одного и того же процесса

...

При запуске супервизор не запускает дочерние процессы. Вместо этого все ребенок процессы добавляются динамически при помощи:

supervisor:start_child(Sup, List)

...

В принципе, можно использовать этот вид контролеров, когда:

  1. Все дети из такой же тип
  2. Вы хотите добавить детей в динамику?

Это, кажется, ваш случай.

+0

+1, также обратите внимание, что ejabberd делает это уже с некоторыми модулями, включая ejabberd_c2s – Dan

Смежные вопросы