]> granicus.if.org Git - ejabberd/commitdiff
Use treap for keeping last voice request timestamps
authorMaxim Ignatenko <gelraen.ua@gmail.com>
Wed, 21 Sep 2011 07:25:32 +0000 (10:25 +0300)
committerMaxim Ignatenko <gelraen.ua@gmail.com>
Mon, 26 Sep 2011 08:16:29 +0000 (11:16 +0300)
src/mod_muc/mod_muc_room.erl
src/mod_muc/mod_muc_room.hrl

index 1d360146844a7e6f858839bd3eee322a7e003cc8..75cff1637417dec025d95b564373066e1142903a 100644 (file)
@@ -1548,7 +1548,7 @@ remove_online_user(JID, StateData, Reason) ->
                error ->
                    StateData#state.nicks
            end,
-               LastTimes = ?DICT:erase(jlib:jid_remove_resource(LJID),
+               LastTimes = treap:delete(jlib:jid_remove_resource(LJID),
                        StateData#state.last_voice_request_time),
     StateData#state{users = Users, nicks = Nicks,
                last_voice_request_time = LastTimes}.
@@ -3850,15 +3850,15 @@ extract_jid_from_voice_approvement(Els) ->
                end, {error, jid_not_found}, Els).
 
 last_voice_request_time(BareJID, StateData) ->
-       case ?DICT:find(BareJID, StateData#state.last_voice_request_time) of
-       {ok, Value} ->
+       case treap:lookup(BareJID, StateData#state.last_voice_request_time) of
+       {ok, _, Value} ->
                Value;
        error ->
                {0, 0, 0}
        end.
 
 update_voice_request_time(BareJID, StateData) ->
-       NewDict = ?DICT:store(BareJID, erlang:now(), StateData#state.last_voice_request_time),
+       NewDict = treap:insert(BareJID, {0, 0}, erlang:now(), StateData#state.last_voice_request_time),
        StateData#state{last_voice_request_time = NewDict}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
index edfa3f4108abd564bd1968f4d183cfd8760d32bd..b0cbc43c251f13bfb522bbceaf8b8459e66582de 100644 (file)
@@ -71,7 +71,7 @@
                jid,
                config = #config{},
                users = ?DICT:new(),
-               last_voice_request_time = ?DICT:new(),
+               last_voice_request_time = treap:empty(),
                robots = ?DICT:new(),
                nicks = ?DICT:new(),
                affiliations = ?DICT:new(),