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_node
不明白以下两处的含义,待解决。。。
2>
create_node(Host, ServerHost, string_to_node("/home"), service_jid(Host), "hometree"),
create_node(Host, ServerHost, string_to_node("/home"), service_jid(Host), "hometree"),
3>
今天又添加了个疑问, 没搞明白 下面为什么要执行两个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});
4>今天又多了个疑问
下面代码为什么要 比较SubKey和GenKey
479 publish_item(NodeIdx, Publisher, PublishModel, MaxItems, ItemId, Payload) ->
480 ?DEBUG("In ~p:publish_item ~p ItemId=~p~n", [?MODULE, ?LINE, ItemId]),
481 SubKey = jlib:jid_tolower(Publisher),
482 GenKey = jlib:jid_remove_resource(SubKey),
483 ?DEBUG("In ~p:publish_item ~p
484 ~nPublisher=~p~n SubKey=~p~n GenKey=~p~n",
485 [?MODULE, ?LINE, Publisher, SubKey, GenKey]),
486 GenState = get_state(NodeIdx, GenKey),
487 SubState = case SubKey of
488 GenKey -> GenState;
489 _ -> get_state(NodeIdx, SubKey)
490 end,