ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议
?
?
?
修改privacy 利用推送 方式 更新privacy list ?userlist
?updated_list(_, #userlist{name = OldName} = Old, #userlist{name = NewName} = New) ->
?? ? ?if
?? ? ? ? OldName == NewName ->
?? ? ? ? ? ? ? New;
?? ? ? ?true ->
?? ? ? ? ? ? ? ?Old
?? ? ?end.
?上传几个附近 备用?
ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议
其中,设置默认和删除privacy list时没有判断当前privacy list 是否有资源在使用。仅仅在删除时候判断了privacy list是否是默认的。
如果是active的话,此状态存在用户资源当前进程中。其他资源进程不能直接读取,所以无法判断目前到底有多少个进程正在使用privacy list.
目前想到的解决方法:
1、建立一个内存表,每个进程与它的状态都写在里面。用的话查询一下就可以。
2、进程之间相互发送消息。”双方“提供相应的机制。
方法1存在的问题,如果一个用户邦定20个资源,当前有10000个用户(假设都在线),这时内存表里面存在的数据会是10*10000=200000。 还必须提供的相应的更新同步操作。用户数量直接影响效率。
方法2存在的问题?如果一个用户邦定20个资源,当前有10000个用户(假设都在线)。20个用户资源进程,其中一个更新,就必须与其他19个进行交互。与用户数量无关。
谁有其他的好方法?
?
?