我正在编写一个 ejabberd 模块,在以下两种情况下需要在停止时执行不同的清理操作:
- 当前同一模块正在其他集群节点上运行。
- 这是我的模块的最后一个仍在运行的实例。
我考虑以下解决方案:
is_there_running_instances() ->
{Results, _} = rpc:multicall(nodes(), ?MODULE, ejabberd_loaded_modules, []),
lists:member(?MODULE, lists:append(Results)).
ejabberd_loaded_modules() -> ???.
但不知道如何获取已加载模块的列表。我该怎么做?还是我的问题有更好的解决方案?