ejabberd_iq_sup
2015-12-18 16:56
253 查看
ejabberd_iq_sup作为supervisor启动,子程序启动的模块为gen_iq_handler
gen_iq_handler:
根据配置参数iqdisc,可选项为no_queue, one_queue, {quques, N}和parallel
View Code
gen_iq_handler的域分为 ejabberd_sm | ejabberd_local
意思为只向ejabberd_sm 、ejabberd_local注册
这样则主业务逻辑和模块分开,主业务逻辑只需调用gen_iq_handler提供的接口,所有的操作细节则有gen_iq_handler处理。
所以gen_iq_handler屏蔽了各个模块的差异
gen_iq_handler:
根据配置参数iqdisc,可选项为no_queue, one_queue, {quques, N}和parallel
handle(Host, Module, Function, Opts, From, To, IQ) -> case Opts of no_queue -> process_iq(Host, Module, Function, From, To, IQ); {one_queue, Pid} -> Pid ! {process_iq, From, To, IQ}; {queues, Pids} -> Pid = lists:nth(erlang:phash(now(), length(Pids)), Pids), Pid ! {process_iq, From, To, IQ}; parallel -> spawn(?MODULE, process_iq, [Host, Module, Function, From, To, IQ]); _ -> todo end.
View Code
gen_iq_handler的域分为 ejabberd_sm | ejabberd_local
-type component() :: ejabberd_sm | ejabberd_local.
意思为只向ejabberd_sm 、ejabberd_local注册
这样则主业务逻辑和模块分开,主业务逻辑只需调用gen_iq_handler提供的接口,所有的操作细节则有gen_iq_handler处理。
所以gen_iq_handler屏蔽了各个模块的差异
相关文章推荐
- 同一行内不同大小的字体垂直居中
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
- 【八】MongoDB管理之分片集群实践
- pxe
- 用PS做出云雾飘渺的效果
- 准备学习使用lua编程,
- linux的mount(挂载)命令详解
- 2015年12月18日技术工作日志
- 浅析Java异常
- @init 自定义
- 机器学习(Machine Learning)心得体会(3)逻辑回归&神经网络Exercise 3:One-vs-all & Neural Networks
- Handler 消息机制分析
- 联系方式QQ:7632156 手机号:13754851215
- oracle group by rollup实现小计、合计
- 期末学习总结
- leetcode -- Binary Tree Right Side View -- 重点
- 使用popen的一个例子
- 利用Pin实现CodeCoverage
- nodejs+mongodb系列教程之(5/5)--一个完整的项目
- Palindrome Number