繁体   English   中英

在ejabberd中创建自定义模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM