summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-02-21 12:12:51 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-02-21 12:12:51 +0000
commitf1fd5e8e2e0b210968b90f44c2935e2ffe3c7b89 (patch)
treeca80f002b6bfa7f44c846ddb5f46669017e9e489
parent905806e093153f0245d051b9a66927fcd9810715 (diff)
downloadrabbitmq-server-f1fd5e8e2e0b210968b90f44c2935e2ffe3c7b89.tar.gz
Correct use of gb_trees APIs...
-rw-r--r--src/rabbit_limiter.erl18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl
index dbad59f2..e16e5dc7 100644
--- a/src/rabbit_limiter.erl
+++ b/src/rabbit_limiter.erl
@@ -155,12 +155,12 @@ credit(Limiter = #token{credits = Credits}, CTag, Credit, Drain) ->
drained(Limiter = #token{credits = Credits}) ->
{CTagCredits, Credits2} =
- lists:foldl(
- fun ({CTag, #credit{credit = C, drain = true}}, {Acc, Creds0}) ->
+ rabbit_misc:gb_trees_fold(
+ fun (CTag, #credit{credit = C, drain = true}, {Acc, Creds0}) ->
{[{CTag, C} | Acc], update_credit(CTag, 0, false, Creds0)};
- ({_CTag, #credit{credit = _C, drain = false}}, {Acc, Creds0}) ->
+ (_CTag, #credit{credit = _C, drain = false}, {Acc, Creds0}) ->
{Acc, Creds0}
- end, {[], Credits}, gb_trees:to_list(Credits)),
+ end, {[], Credits}, Credits),
{CTagCredits, Limiter#token{credits = Credits2}}.
forget_consumer(Limiter = #token{credits = Credits}, CTag) ->
@@ -188,16 +188,10 @@ record_send_q(CTag, Credits) ->
end.
update_credit(CTag, Credit, Drain, Credits) when Credit > 0 ->
- update_credit0(CTag, #credit{credit = Credit, drain = Drain}, Credits);
+ gb_trees:enter(CTag, #credit{credit = Credit, drain = Drain}, Credits);
%% Using up all credit means we do not need to send a drained event
update_credit(CTag, Credit, _Drain, Credits) ->
- update_credit0(CTag, #credit{credit = Credit, drain = false}, Credits).
-
-update_credit0(CTag, Credit, Credits) ->
- case gb_trees:is_defined(CTag, Credits) of
- true -> gb_trees:update(CTag, Credit, Credits);
- false -> gb_trees:insert(CTag, Credit, Credits)
- end.
+ gb_trees:enter(CTag, #credit{credit = Credit, drain = false}, Credits).
%%----------------------------------------------------------------------------
%% gen_server callbacks