[英]creating custom module in ejabberd
我已经在ejabberd中创建了自定义模块。 主要问题是,如果我想在start(HOST)-> function中添加mysql和mnesia支持
IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
one_queue),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts)
重新启动ejabberd之后,它给了我严重错误:
14:05:26.453 [critical] Problem starting the module mod_conversation for host <<"localhost">>
options: []
error: undef
[{mod_conversation_undefined,init,[<<"localhost">>,[]],[]},
{mod_conversation,start,2,[{file,"src/mod_conversation.erl"},{line,30}]},
{gen_mod,start_module,3,[{file,"src/gen_mod.erl"},{line,154}]},
{lists,foreach,2,[{file,"lists.erl"},{line,1337}]},
{ejabberd_app,start,2,[{file,"src/ejabberd_app.erl"},{line,77}]},
{application_master,start_it_old,4,
[{file,"application_master.erl"},{line,273}]}]
14:05:26.453 [critical] ejabberd initialization was aborted because a module start failed.
Crash dump is being written to: //var/log/ejabberd/erl_crash_20170115-140523.dump...done
Problem starting the module mod_conversation for host <<"localhost">>
options: []
error: undef
[{mod_conversation_undefined,init,[<<"localhost">>,[]],[]},
{mod_conversation,start,2,[{file,"src/mo
我已经在ejabberd配置文件中添加了新模块。 如果我删除
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts)]
我的模块成功启动。 请帮我解决这个问题。
Mod
变量的内容似乎是mod_conversation_undefined
。 看为什么gen_mod:db_mod/3
返回mod_conversation_undefined
。
如果要使用数据库后端,则应创建mod_conversation_ $ BACKEND模块,例如mod_conversation_mnesia,mod_conversation_sql等。您还应在模块的mod_opt_type / 1回调中添加“ db_type”选项(否则任何后端将被忽略,您将获得mod_conversation_undefined)。 您可以看看它在其他模块中是如何完成的,例如在诸如mod_private之类的简单模块中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.