ejabberd 三个没有弄明白的疑问
?
?
?
1>
1794 ? ? ? ? ? ? case transaction(CreateNode, transaction) of
1795 ? ? ? ? ? ? ? ? {result, {NodeId, SubsByDepth, {Result, broadcast}}} ->
1796 ? ? ? ? ? ? ? ? ? ? broadcast_created_node(Host, Node, NodeId, Type, NodeOptions, SubsByDepth), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1797 ? ? ? ? ? ? ? ? ? ? case Result of
1798 ? ? ? ? ? ? ? ? ? ? ? ? default -> {result, Reply};
1799 ? ? ? ? ? ? ? ? ? ? ? ? _ -> {result, Result}
1800 ? ? ? ? ? ? ? ? ? ? end;
1801 ? ? ? ? ? ? ? ? {result, {_NodeId, _SubsByDepth, default}} ->
1802 ? ? ? ? ? ? ? ? ? ? {result, Reply};
原来这里的广播是针对 集合节点的。例如:树节点,当在创建子节点时会产生调用此broadcast_created_node3>
今天又添加了个疑问, 没搞明白 下面为什么要执行两个presence
?
?742 presence_probe(#jid{luser = User, lserver = Server, lresource = Resource} = JID, JID, Pid) ->
?743 ? ? %%?DEBUG("presence probe self ~s@~s/~s ?~s@~s/~s",[User,Server,Resource,element(2,JID),element(3,JID),element(4,JID)]),
?744 ? ? presence(Server, {presence, JID, Pid}), ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?745 ? ? presence(Server, {presence, User, Server, [Resource], JID});