码迷,mamicode.com
首页 > 其他好文 > 详细

ejabberd_local

时间:2015-12-18 18:17:43      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

ejabberd_local用于注册发到服务器本身的IQ以及路由到本地的ejabberd_sm(message)

对外主要提供route,register_iq_handler,unregister_iq_response_handler方法

技术分享
route(From, To, Packet) ->
    case catch do_route(From, To, Packet) of
      {‘EXIT‘, Reason} ->
      ?ERROR_MSG("~p~nwhen processing: ~p",
             [Reason, {From, To, Packet}]);
      _ -> ok
    end.

do_route(From, To, Packet) ->
    ?DEBUG("local route~n\tfrom ~p~n\tto ~p~n\tpacket "
       "~P~n",
       [From, To, Packet, 8]),
    if To#jid.luser /= <<"">> ->
       ejabberd_sm:route(From, To, Packet);
       To#jid.lresource == <<"">> ->
       #xmlel{name = Name} = Packet,
       case Name of
         <<"iq">> -> process_iq(From, To, Packet);
         <<"message">> -> ok;
         <<"presence">> -> ok;
         _ -> ok
       end;
       true ->
       #xmlel{attrs = Attrs} = Packet,
       case xml:get_attr_s(<<"type">>, Attrs) of
         <<"error">> -> ok;
         <<"result">> -> ok;
         _ ->
         ejabberd_hooks:run(local_send_to_resource_hook,
                    To#jid.lserver, [From, To, Packet])
       end
    end.
View Code

route当是完整的message的信息的时候,通过ejabberd_sm:route路由信息

当是IQ信息的时候route:process_iq(From, To, Packet)处理,根据register_iq_handler注册的信息

 

ejabberd_local

标签:

原文地址:http://www.cnblogs.com/lawen/p/5057445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!