diff options
| author | Matthias Radestock <matthias@rabbitmq.com> | 2013-02-11 14:16:29 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@rabbitmq.com> | 2013-02-11 14:16:29 +0000 |
| commit | b928b4570ee97ebfd60df6cbfbffd91c406ffb5f (patch) | |
| tree | 0203999085fbf10e9f0772231f803620bd58cfa3 /src | |
| parent | 4eb1daea4720b59d33e421cc1287ad9c614f789b (diff) | |
| download | rabbitmq-server-git-b928b4570ee97ebfd60df6cbfbffd91c406ffb5f.tar.gz | |
some inlining and moving around
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_limiter.erl | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl index 8ed1adc711..46b465bc12 100644 --- a/src/rabbit_limiter.erl +++ b/src/rabbit_limiter.erl @@ -181,24 +181,13 @@ copy_queue_state(#token{q_state = Credits}, Token) -> record_send_q(CTag, Len, ChPid, Credits) -> case dict:find(CTag, Credits) of - {ok, Cred} -> - decr_credit(CTag, Len, ChPid, Cred, Credits); + {ok, #credit{credit = Credit, drain = Drain}} -> + NewCredit = maybe_drain(Len - 1, Drain, CTag, ChPid, Credit - 1), + write_credit(CTag, NewCredit, Drain, Credits); error -> Credits end. -decr_credit(CTag, Len, ChPid, Cred, Credits) -> - #credit{credit = Credit, drain = Drain} = Cred, - NewCredit = maybe_drain(Len - 1, Drain, CTag, ChPid, Credit - 1), - write_credit(CTag, NewCredit, Drain, Credits). - -maybe_drain(0, true, CTag, ChPid, Credit) -> - rabbit_channel:send_drained(ChPid, CTag, Credit), - 0; %% Magic reduction to 0 - -maybe_drain(_, _, _, _, Credit) -> - Credit. - update_credit(CTag, Len, ChPid, Credit, Drain, Credits) -> NewCredit = maybe_drain(Len, Drain, CTag, ChPid, Credit), NewCredits = write_credit(CTag, NewCredit, Drain, Credits), @@ -208,8 +197,14 @@ update_credit(CTag, Len, ChPid, Credit, Drain, Credits) -> end. write_credit(CTag, Credit, Drain, Credits) -> - dict:store(CTag, #credit{credit = Credit, - drain = Drain}, Credits). + dict:store(CTag, #credit{credit = Credit, drain = Drain}, Credits). + +maybe_drain(0, true, CTag, ChPid, Credit) -> + rabbit_channel:send_drained(ChPid, CTag, Credit), + 0; %% Magic reduction to 0 + +maybe_drain(_, _, _, _, Credit) -> + Credit. %%---------------------------------------------------------------------------- %% gen_server callbacks |
