diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 16:14:50 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 16:14:50 +0100 |
commit | 5757824244675fb7d0c71dcb464da8e8536c8013 (patch) | |
tree | 0df9606a5dffc640aedbbd6302b10008908adf97 | |
parent | ff9f8b0f20b47bcd17bb379b0185011d549faaa2 (diff) | |
download | rabbitmq-server-5757824244675fb7d0c71dcb464da8e8536c8013.tar.gz |
refactor
-rw-r--r-- | src/rabbit_channel_sup.erl | 2 | ||||
-rw-r--r-- | src/rabbit_limiter.erl | 18 | ||||
-rw-r--r-- | src/rabbit_tests.erl | 4 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/rabbit_channel_sup.erl b/src/rabbit_channel_sup.erl index 27e0b743..a217a6c4 100644 --- a/src/rabbit_channel_sup.erl +++ b/src/rabbit_channel_sup.erl @@ -89,4 +89,4 @@ start_limiter(SupPid) -> SupPid, {limiter, {rabbit_limiter, start_link, []}, transient, ?MAX_WAIT, worker, [rabbit_limiter]}), - rabbit_limiter:make_new_token(Pid). + rabbit_limiter:make_token(Pid). diff --git a/src/rabbit_limiter.erl b/src/rabbit_limiter.erl index 37994d2d..15193d2b 100644 --- a/src/rabbit_limiter.erl +++ b/src/rabbit_limiter.erl @@ -20,7 +20,7 @@ -export([init/1, terminate/2, code_change/3, handle_call/3, handle_cast/2, handle_info/2, prioritise_call/3]). --export([start_link/0, make_new_token/1, is_enabled/1, enable/2, disable/1]). +-export([start_link/0, make_token/1, is_enabled/1, enable/2, disable/1]). -export([limit/2, can_send/3, ack/2, register/2, unregister/2]). -export([get_limit/1, block/1, unblock/1, is_blocked/1]). @@ -36,7 +36,7 @@ -opaque(token() :: #token{}). -spec(start_link/0 :: () -> rabbit_types:ok_pid_or_error()). --spec(make_new_token/1 :: (pid()) -> token()). +-spec(make_token/1 :: (pid()) -> token()). -spec(is_enabled/1 :: (token()) -> boolean()). -spec(enable/2 :: (token(), non_neg_integer()) -> token()). -spec(disable/1 :: (token()) -> token()). @@ -70,7 +70,7 @@ start_link() -> gen_server2:start_link(?MODULE, [], []). -make_new_token(Pid) -> #token{pid = Pid}. +make_token(Pid) -> #token{pid = Pid}. is_enabled(#token{enabled = Enabled}) -> Enabled. @@ -84,13 +84,17 @@ limit(Limiter, PrefetchCount) -> maybe_call(Limiter, {limit, PrefetchCount, Limiter}, ok). %% Ask the limiter whether the queue can deliver a message without -%% breaching a limit -can_send(Limiter, QPid, AckRequired) -> +%% breaching a limit. Note that we don't use maybe_call here in order +%% to avoid always going through with_exit_handler/2, even when the +%% limiter is disabled. +can_send(#token{pid = Pid, enabled = true}, QPid, AckRequired) -> rabbit_misc:with_exit_handler( fun () -> true end, fun () -> - maybe_call(Limiter, {can_send, QPid, AckRequired}, true) - end). + gen_server2:call(Pid, {can_send, QPid, AckRequired}, infinity) + end); +can_send(_, _, _) -> + true. %% Let the limiter know that the channel has received some acks from a %% consumer diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index 3b91aa8d..3ba87b00 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -1136,7 +1136,7 @@ test_server_status() -> {ok, Ch} = rabbit_channel:start_link( 1, self(), Writer, self(), rabbit_framing_amqp_0_9_1, user(<<"user">>), <<"/">>, [], self(), - rabbit_limiter:make_new_token(self())), + rabbit_limiter:make_token(self())), [Q, Q2] = [Queue || Name <- [<<"foo">>, <<"bar">>], {new, Queue = #amqqueue{}} <- [rabbit_amqqueue:declare( @@ -1203,7 +1203,7 @@ test_spawn() -> {ok, Ch} = rabbit_channel:start_link( 1, Me, Writer, Me, rabbit_framing_amqp_0_9_1, user(<<"guest">>), <<"/">>, [], self(), - rabbit_limiter:make_new_token(self())), + rabbit_limiter:make_token(self())), ok = rabbit_channel:do(Ch, #'channel.open'{}), receive #'channel.open_ok'{} -> ok after 1000 -> throw(failed_to_receive_channel_open_ok) |