为 ejabberd 添加动态主管

发布于 2024-12-07 01:35:32 字数 173 浏览 0 评论 0原文

是否可以在 ejabberd 中启动一个管理程序模块,我可以在每个连接中添加一个 gen_fsm 模块?

具体来说,我想创建一个在服务器启动时(或连接进入时)启动的主管。我有几个想要启动的 gen_server,但我正在寻找一些指导的部分是如何向我的主管动态添加 gen_fsm 模块当我看到该用户的状态变为可用时?

Is it possible to start a supervisor module in ejabberd which I can add a gen_fsm module to, per connection?

Specifically, I want to create a supervisor which I start when the server starts (or when connections come in). And I have a couple of gen_servers which I want to start, but the part I'm looking for some guidance on is how to dynamically add a gen_fsm module to my supervisor when I see this user's presence become available?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

段念尘 2024-12-14 01:35:32

您可能想看看针对主管的简单内容,哪个:

是一个简化的one_for_one管理程序,其中所有子进程都是
动态添加同一进程的实例

...

启动时,supervisor不会启动任何子进程。相反,所有的孩子
通过调用动态添加进程:

supervisor:start_child(Sup, List)

...

基本上,您在以下情况下使用这种主管:

  1. 所有子级都属于同一类型
  2. 您想要动态添加子级

这似乎是您的情况。

You might want to have a look to the Simple one for on supervisor, which:

is a simplified one_for_one supervisor, where all child processes are
dynamically added instances of the same process

...

When started, the supervisor will not start any child processes. Instead, all child
processes are added dynamically by calling:

supervisor:start_child(Sup, List)

...

Basically, you use this kind of supervisors when:

  1. All the children are of the same type
  2. You want to add children dynamically

Which appears to be your case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文